Daily bump.
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob1210f88e2166a435dd973554e5aa53fdebff378f
1 2021-12-13  Jonathan Wakely  <jwakely@redhat.com>
3         * scripts/make_exports.pl: Replace '?' with '.' when turning
4         a glob into a regex.
6 2021-12-13  Jonathan Wakely  <jwakely@redhat.com>
8         * include/bits/ranges_base.h (ranges::size, ranges::empty): Add
9         explicit check for unbounded arrays before using ranges::begin.
10         * testsuite/std/ranges/access/empty.cc: Check handling of unbounded
11         arrays.
12         * testsuite/std/ranges/access/size.cc: Likewise.
14 2021-12-13  Jonathan Wakely  <jwakely@redhat.com>
16         PR libstdc++/103664
17         * include/bits/regex.h (__regex_replace): Declare.
18         (regex_replace): Use it.
19         * include/bits/regex.tcc (__regex_replace): Replace regex_replace
20         definition with __regex_replace.
21         * testsuite/28_regex/algorithms/regex_replace/char/103664.cc: New test.
23 2021-12-11  Jason Merrill  <jason@redhat.com>
25         PR c++/103534
26         * include/bits/basic_string.h (append (basic_string)): Call pointer
27         append instead of _M_append directly.
29 2021-12-10  Jakub Jelinek  <jakub@redhat.com>
31         PR libstdc++/71367
32         * config/locale/dragonfly/time_members.cc (_M_initialize_timepunct):
33         Initialize "C" _M_am_pm_format to %I:%M:%S %p rather than empty
34         string.
35         * config/locale/gnu/time_members.cc (_M_initialize_timepunct):
36         Likewise.
37         * config/locale/generic/time_members.cc (_M_initialize_timepunct):
38         Likewise.
39         * include/bits/locale_facets_nonio.h (_M_am_pm_format): New method.
40         * include/bits/locale_facets_nonio.tcc (_M_extract_via_format): Handle
41         %r.
42         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export _M_am_pm_format
43         with const _CharT** argument, ensure it isn't exported in GLIBCXX_3.4.
44         * testsuite/22_locale/time_get/get/char/71367.cc: New test.
45         * testsuite/22_locale/time_get/get/wchar_t/71367.cc: New test.
47 2021-12-10  Jakub Jelinek  <jakub@redhat.com>
49         PR libstdc++/78714
50         * include/bits/locale_facets_nonio.tcc (_M_extract_via_format):
51         Mention in function comment it interprets strptime format string
52         rather than strftime.  Handle %a and %A the same by accepting both
53         full and abbreviated names.  Similarly handle %h, %b and %B the same.
54         Handle %d and %e the same by accepting possibly optional single space
55         and 1 or 2 digits.  For %I store tm_hour 0 instead of tm_hour 12.  For
56         %t and %n skip any whitespace.  Handle %p and %%.  For whitespace in
57         the string skip any whitespace.
58         (_M_extract_num): For __len == 2 accept 1 or 2 digits rather than
59         always 2.  Don't punt early if __value * __mult is larget than __max
60         or smaller than __min - __mult, instead punt if __value > __max.
61         At the end verify __value is in between __min and __max and punt
62         otherwise.
63         (_M_extract_name): Allow non-unique names or names which are prefixes
64         of other names.  Don't recompute lengths of names for every character.
65         * testsuite/22_locale/time_get/get/char/3.cc: New test.
66         * testsuite/22_locale/time_get/get/wchar_t/3.cc: New test.
67         * testsuite/22_locale/time_get/get_date/char/12791.cc (test01): Use
68         62 instead 60 and expect 6 to be accepted and thus *ret01 == '2'.
69         * testsuite/22_locale/time_get/get_date/wchar_t/12791.cc (test01):
70         Similarly.
71         * testsuite/22_locale/time_get/get_time/char/2.cc (test02): Add " PM"
72         to the string.
73         * testsuite/22_locale/time_get/get_time/char/5.cc (test01): Expect
74         tm_hour 1 rather than 0.
75         * testsuite/22_locale/time_get/get_time/wchar_t/2.cc (test02): Add
76         " PM" to the string.
77         * testsuite/22_locale/time_get/get_time/wchar_t/5.cc (test01): Expect
78         tm_hour 1 rather than 0.
80 2021-12-10  Jonathan Wakely  <jwakely@redhat.com>
82         PR libstdc++/103638
83         * include/bits/atomic_timed_wait.h: Check _GLIBCXX_HAS_GTHREADS
84         before using std::mutex and std::__condvar.
86 2021-12-10  Jonathan Wakely  <jwakely@redhat.com>
88         * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Add _GLIBCXX_
89         prefix to NO_SLEEP macro.
90         * config.h.in: Regenerate.
91         * configure: Regenerate.
93 2021-12-10  Jonathan Wakely  <jwakely@redhat.com>
95         * include/bits/char_traits.h: Change pragma push to pop.
97 2021-12-10  Thomas Rodgers  <rodgert@twrodgers.com>
99         PR libstdc++/102994
100         * include/bits/atomic_base.h (__atomic_base<_PTp*>::wait()):
101         Add const qualifier.
102         * include/std/atomic (atomic<_Tp*>::wait(), atomic_wait()):
103         Likewise.
104         * testsuite/29_atomics/atomic/wait_notify/102994.cc:
105         New test.
107 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
109         * include/bits/stl_iterator.h (operator==, operator<=>): Define
110         overloads for homogeneous specializations of reverse_iterator,
111         __normal_iterator and move_iterator.
113 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
115         * testsuite/20_util/scoped_allocator/69293_neg.cc: Remove
116         dg-error for c++20.
118 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
120         PR libstdc++/85813
121         * libsupc++/exception_ptr.h (__dest_thunk): Add macro for
122         destructor calling convention.
123         (make_exception_ptr): Enable non-throwing implementation for
124         -fno-exceptions and for non-standard calling conventions. Use
125         always_inline attribute on the useless no-rtti no-exceptions
126         definition.
127         * testsuite/18_support/exception_ptr/64241.cc: Add -fno-rtti so
128         the no-op implementation is still used.
130 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
132         PR libstdc++/103630
133         * libsupc++/exception_ptr.h (exception_ptr): Fix exception
134         specifications on inline definitions.
135         (make_exception_ptr): Decay the template parameter. Use typeid
136         of the static type.
137         * testsuite/18_support/exception_ptr/103630.cc: New test.
139 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
141         PR libstdc++/59769
142         * config/io/basic_file_stdio.cc (fopen_mode): Add support for
143         exclusive mode.
144         * include/bits/ios_base.h (_S_noreplace): Define new enumerator.
145         (ios_base::__noreplace): Define.
146         (ios_base::noreplace): Define for C++23.
147         * include/std/version (__cpp_lib_ios_noreplace): Define.
148         * testsuite/27_io/basic_ofstream/open/char/noreplace.cc: New test.
149         * testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc: New test.
151 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
153         PR libstdc++/103382
154         * config/abi/pre/gnu.ver (GLIBCXX_3.4.11): Do not export old
155         symbol if .symver renaming is supported.
156         (GLIBCXX_3.4.30): Export new symbol if .symver renaming is
157         supported.
158         * doc/xml/manual/evolution.xml: Document change.
159         * doc/html/manual/api.html: Regenerate.
160         * include/bits/std_mutex.h (__condvar::wait, __condvar::wait_until):
161         Remove noexcept.
162         * include/std/condition_variable (condition_variable::wait):
163         Likewise.
164         * src/c++11/condition_variable.cc (condition_variable::wait):
165         Likewise.
166         * src/c++11/compatibility-condvar.cc (__nothrow_wait_cv::wait):
167         Define nothrow wrapper around std::condition_variable::wait and
168         export the old symbol as an alias to it.
169         * testsuite/30_threads/condition_variable/members/103382.cc: New test.
171 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
173         PR libstdc++/92300
174         * include/bits/stl_map.h (insert(Pair&&), emplace(Args&&...)):
175         Check whether the arguments can be looked up directly without
176         constructing a temporary node first.
177         * include/bits/stl_pair.h (__is_pair): Move to here, from ...
178         * include/bits/uses_allocator_args.h (__is_pair): ... here.
179         * testsuite/23_containers/map/modifiers/emplace/92300.cc: New test.
180         * testsuite/23_containers/map/modifiers/insert/92300.cc: New test.
182 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
184         * include/bits/cow_string.h (basic_string::_M_leak_hard): Do not
185         reallocate an empty string.
187 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
189         PR libstdc++/103332
190         PR libstdc++/102958
191         PR libstdc++/103483
192         * include/bits/char_traits.h: Suppress stringop and array-bounds
193         warnings.
195 2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
197         PR libstdc++/64135
198         * config/allocator/new_allocator_base.h: Include
199         <bits/new_allocator.h> instead of <ext/new_allocator.h>.
200         (__allocator_base): Use std::__new_allocator instead of
201         __gnu_cxx::new_allocator.
202         * doc/xml/manual/allocator.xml: Document new default base class
203         for std::allocator.
204         * doc/xml/manual/evolution.xml: Likewise.
205         * doc/html/*: Regenerate.
206         * include/Makefile.am: Add bits/new_allocator.h.
207         * include/Makefile.in: Regenerate.
208         * include/experimental/memory_resource (new_delete_resource):
209         Use std::__new_allocator instead of __gnu_cxx::new_allocator.
210         * include/ext/new_allocator.h (new_allocator): Derive from
211         std::__new_allocator. Move implementation to ...
212         * include/bits/new_allocator.h: New file.
213         * testsuite/20_util/allocator/64135.cc: New test.
215 2021-12-08  Jonathan Wakely  <jwakely@redhat.com>
217         * include/bits/shared_ptr_base.h (_Sp_counted_base::_M_release()):
218         Make shift width conditional on __double_word condition.
220 2021-12-08  François Dumont  <fdumont@gcc.gnu.org>
222         * include/std/deque (erase_if): Use _GLIBCXX_STD_C container reference and
223         __niter_wrap to limit _GLIBCXX_DEBUG mode impact.
224         * include/std/vector (erase_if): Likewise.
226 2021-12-08  Maged Michael  <maged.michael@gmail.com>
227             Jonathan Wakely  <jwakely@redhat.com>
229         * include/bits/c++config (_GLIBCXX_TSAN): Define macro
230         indicating that TSan is in use.
231         * include/bits/shared_ptr_base.h (_Sp_counted_base::_M_release):
232         Replace definition in primary template with explicit
233         specializations for _S_mutex and _S_atomic policies.
234         (_Sp_counted_base<_S_mutex>::_M_release): New specialization.
235         (_Sp_counted_base<_S_atomic>::_M_release): New specialization,
236         using a single atomic load to access both reference counts at
237         once.
238         (_Sp_counted_base::_M_release_last_use): New member function.
240 2021-12-07  Tamar Christina  <tamar.christina@arm.com>
242         Revert:
243         2021-11-19  Tamar Christina  <tamar.christina@arm.com>
245         PR libstdc++/103305
246         * config/os/newlib/ctype_base.h (upper, lower, alpha, digit, xdigit,
247         space, print, graph, cntrl, punct, alnum, blank): Use short or long
248         names depending on if short ones are defined.
250 2021-12-04  Jonathan Wakely  <jwakely@redhat.com>
252         PR libstdc++/103549
253         * include/bits/regex.h (match_results): Give names to template
254         parameters in first declaration.
255         (match_results::_M_begin): Add default member-initializer.
257 2021-12-03  Jonathan Wakely  <jwakely@redhat.com>
259         * include/bits/stl_tree.h (_Rb_tree::_Auto_node): Define new
260         RAII helper for creating and inserting new nodes.
261         (_Rb_tree::_M_insert_node): Use trailing-return-type to simplify
262         out-of-line definition.
263         (_Rb_tree::_M_insert_lower_node): Likewise.
264         (_Rb_tree::_M_insert_equal_lower_node): Likewise.
265         (_Rb_tree::_M_emplace_unique): Likewise. Use _Auto_node.
266         (_Rb_tree::_M_emplace_equal): Likewise.
267         (_Rb_tree::_M_emplace_hint_unique): Likewise.
268         (_Rb_tree::_M_emplace_hint_equal): Likewise.
270 2021-12-02  Jonathan Wakely  <jwakely@redhat.com>
272         * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
273         (logic_error, runtime_error): Remove custom definitions.
275 2021-12-02  Jonathan Wakely  <jwakely@redhat.com>
277         PR libstdc++/103340
278         PR libstdc++/103400
279         PR libstdc++/103381
280         * acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Remove mt, bitmap
281         and pool options.
282         * configure: Regenerate.
283         * config/allocator/bitmap_allocator_base.h: Removed.
284         * config/allocator/mt_allocator_base.h: Removed.
285         * config/allocator/pool_allocator_base.h: Removed.
286         * doc/xml/manual/allocator.xml: Update.
287         * doc/xml/manual/configure.xml: Update.
288         * doc/xml/manual/evolution.xml: Document removal.
289         * doc/xml/manual/mt_allocator.xml: Editorial tweaks.
290         * doc/html/manual/*: Regenerate.
292 2021-12-02  Jonathan Wakely  <jwakely@redhat.com>
294         * include/bits/cow_string.h (basic_string::_M_is_leaked()):
295         Revert change to check __is_single_threaded() before using
296         atomic load.
298 2021-12-01  Jonathan Wakely  <jwakely@redhat.com>
300         PR libstdc++/103501
301         * include/bits/stl_tree.h (_Rb_tree(_Rb_tree&&, false_type)):
302         Clear container if elements have been moved-from.
303         * testsuite/23_containers/map/allocator/move_cons.cc: Expect
304         moved-from container to be empty.
305         * testsuite/23_containers/multimap/allocator/move_cons.cc:
306         Likewise.
307         * testsuite/23_containers/multiset/allocator/103501.cc: New test.
308         * testsuite/23_containers/set/allocator/103501.cc: New test.
310 2021-12-01  Jonathan Wakely  <jwakely@redhat.com>
312         * doc/doxygen/user.cfg.in (PREDEFINED): Change macro name.
313         * include/bits/allocator.h (allocate, deallocate): Use
314         std::__is_constant_evaluated() unconditionally, instead of
315         checking whether std::is_constant_evaluated() (or the built-in)
316         can be used.
317         * include/bits/basic_string.h: Check new macro. call
318         std::is_constant_evaluated() directly in C++20-only code that is
319         guarded by a suitable macro.
320         * include/bits/basic_string.tcc: Likewise.
321         * include/bits/c++config (__is_constant_evaluated): Define.
322         (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED): Replace with ...
323         (_GLIBCXX_HAVE_IS_CONSTANT_EVALUATED): New macro.
324         * include/bits/char_traits.h (char_traits): Replace conditional
325         calls to std::is_constant_evaluated with unconditional calls to
326         std::__is_constant_evaluated.
327         * include/bits/cow_string.h: Use new macro.
328         * include/bits/ranges_algobase.h (__copy_or_move): Replace
329         conditional calls to std::is_constant_evaluated with unconditional
330         calls to std::__is_constant_evaluated.
331         (__copy_or_move_backward, __fill_n_fn): Likewise.
332         * include/bits/ranges_cmp.h (ranges::less): Likewise.
333         * include/bits/stl_algobase.h (lexicographical_compare_three_way):
334         Likewise.
335         * include/bits/stl_bvector.h: Call std::is_constant_evaluated
336         directly in C++20-only code that is guarded by a suitable macro.
337         * include/bits/stl_construct.h (_Construct, _Destroy, _Destroy_n):
338         Replace is_constant_evaluated with __is_constant_evaluated.
339         * include/bits/stl_function.h (greater, less, greater_equal)
340         (less_equal): Replace __builtin_is_constant_evaluated and
341         __builtin_constant_p with __is_constant_evaluated.
342         * include/bits/stl_vector.h: Call std::is_constant_evaluated()
343         in C++20-only code.
344         * include/debug/helper_functions.h (__check_singular): Use
345         __is_constant_evaluated instead of built-in, or remove check
346         entirely.
347         * include/std/array (operator<=>): Use __is_constant_evaluated
348         unconditionally.
349         * include/std/bit (__bit_ceil): Likewise.
350         * include/std/type_traits (is_constant_evaluated): Define using
351         'if consteval' if possible.
352         * include/std/version: Use new macro.
353         * libsupc++/compare: Use __is_constant_evaluated instead of
354         __builtin_is_constant_evaluated.
355         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
356         Adjust dg-error lines.
358 2021-12-01  Jonathan Wakely  <jwakely@redhat.com>
360         * include/bits/cow_string.h (basic_string::_M_is_leaked): Use
361         non-atomic load when __is_single_threaded() is true.
362         (basic_string::_M_is_shared): Likewise.
363         (basic_string::(basic_string&&)) [_GLIBCXX_FULLY_DYNAMIC_STRING]:
364         Use non-atomic store when rvalue is not shared.
366 2021-12-01  Jonathan Wakely  <jwakely@redhat.com>
368         * src/c++17/fs_path.cc (path::_M_split_cmpts()): Remove
369         micro-optimization for "/" path.
370         * src/filesystem/path.cc (path::_M_split_cmpts()): Only access
371         the contents of _M_pathname using const member functions.
373 2021-11-30  Jonathan Wakely  <jwakely@redhat.com>
375         * testsuite/21_strings/basic_string/cons/char/moveable.cc: Allow
376         moved-from string to be non-empty.
377         * testsuite/21_strings/basic_string/cons/char/moveable2.cc:
378         Likewise.
379         * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc:
380         Likewise.
381         * testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc:
382         Likewise.
383         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc:
384         Likewise.
385         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
386         Likewise.
387         * testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
388         Construct empty string before setting oom flag.
389         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
390         Likewise.
392 2021-11-30  Jonathan Wakely  <jwakely@redhat.com>
394         * include/bits/cow_string.h (basic_string(basic_string&&)): Fix
395         mem-initializer for _GLIBCXX_FULLY_DYNAMIC_STRING==0 case.
396         * testsuite/21_strings/basic_string/cons/char/noexcept_move_construct.cc:
397         Remove outdated comment.
398         * testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc:
399         Likewise.
401 2021-11-30  Jonathan Wakely  <jwakely@redhat.com>
403         * src/c++20/sstream-inst.cc (_GLIBCXX_USE_CXX11_ABI): Define to
404         select new ABI.
406 2021-11-30  Jonathan Wakely  <jwakely@redhat.com>
408         * include/bits/stl_vector.h (vector::_S_do_relocate): Remove
409         C++20 constexpr specifier.
410         (vector::_S_relocate) [__cpp_if_constexpr]: Call __relocate_a
411         directly without tag dispatching.
413 2021-11-30  Jonathan Wakely  <jwakely@redhat.com>
415         PR libstdc++/103453
416         * config/allocator/malloc_allocator_base.h
417         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define for Clang.
418         * config/allocator/new_allocator_base.h
419         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Likewise.
421 2021-11-30  Jonathan Wakely  <jwakely@redhat.com>
423         * doc/xml/manual/debug_mode.xml: Replace "his or her" with "their".
424         * doc/html/manual/debug_mode_design.html: Regenerate.
426 2021-11-30  Jakub Jelinek  <jakub@redhat.com>
428         * include/std/bit (byteswap): Add [[nodiscard]].
430 2021-11-28  Jakub Jelinek  <jakub@redhat.com>
432         * include/std/bit (__cpp_lib_byteswap, byteswap): Define.
433         * include/std/version (__cpp_lib_byteswap): Define.
434         * testsuite/26_numerics/bit/bit.byteswap/byteswap.cc: New test.
435         * testsuite/26_numerics/bit/bit.byteswap/version.cc: New test.
437 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
439         * testsuite/24_iterators/move_iterator/dr3265.cc: Fix test to
440         account for LWG 3435 resolution.
442 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
444         * include/bits/stl_uninitialized.h (__relocate_a_1): Do not use
445         memmove during constant evaluation.
446         * include/bits/stl_vector.h (vector::_S_use_relocate()): Do not
447         check is_constant_evaluated in always-constexpr function.
449 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
451         PR libstdc++/96592
452         * include/std/tuple (tuple::is_constructible): Remove.
454 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
456         * testsuite/29_atomics/atomic_float/1.cc: Reorder directives.
458 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
460         * testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
461         Change dg-do compile to run.
462         * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc:
463         Likewise.
465 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
467         * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc:
468         Remove xfail selector.
469         * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc:
470         Likewise.
471         Likewise.
472         * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
473         Likewise.
474         * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
475         Likewise.
476         * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
477         Likewise.
478         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
479         Likewise.
480         * testsuite/23_containers/span/101411.cc: Likewise.
481         * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Likewise.
482         * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc:
483         Likewise.
484         * testsuite/25_algorithms/equal/constexpr_neg.cc: Likewise.
485         * testsuite/25_algorithms/equal/debug/constexpr_neg.cc: Likewise.
486         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc:
487         Likewise.
488         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
489         Likewise.
490         * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
491         Likewise.
492         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
493         Likewise.
494         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
495         Likewise.
496         * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
497         Likewise.
499 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
501         * testsuite/20_util/pointer_traits/lwg3545.cc: Move to_address
502         tests to ...
503         * testsuite/20_util/to_address/lwg3545.cc: ... here. Add -std
504         option before checking effective target.
506 2021-11-25  Jonathan Wakely  <jwakely@redhat.com>
508         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
509         Remove dg-error for C++11_only error.
511 2021-11-25  Jonathan Wakely  <jwakely@redhat.com>
513         PR libstdc++/96416
514         * include/bits/ptr_traits.h (pointer_traits): Reimplement to be
515         SFINAE-friendly (LWG 3545).
516         * testsuite/20_util/pointer_traits/lwg3545.cc: New test.
517         * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line.
518         * testsuite/20_util/to_address/lwg3545.cc: New test.
520 2021-11-25  Jonathan Wakely  <jwakely@redhat.com>
522         PR libstdc++/101608
523         * include/bits/ranges_algobase.h (__fill_n_fn): Check for
524         constant evaluation before using memset.
525         * testsuite/25_algorithms/fill_n/constrained.cc: Check
526         byte-sized values as well.
528 2021-11-24  Jonathan Wakely  <jwakely@redhat.com>
530         * testsuite/libstdc++-prettyprinters/80276.cc: Add xfail for
531         debug mode.
532         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
534 2021-11-24  Jonathan Wakely  <jwakely@redhat.com>
536         * testsuite/lib/libstdc++.exp: Rename effective target keywords
537         to avoid dashes in the name.
538         * testsuite/*: Update effective targe keywords.
540 2021-11-23  Jonathan Wakely  <jwakely@redhat.com>
542         PR libstdc++/103086
543         * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr
544         with non-empty pointer and non-empty deleter.
546 2021-11-23  Jonathan Wakely  <jwakely@redhat.com>
548         * testsuite/18_support/50594.cc: Check effective target.
549         * testsuite/20_util/allocator/1.cc: Likewise.
550         * testsuite/20_util/allocator/overaligned.cc: Likewise.
551         * testsuite/23_containers/unordered_map/96088.cc: Likewise.
552         * testsuite/23_containers/unordered_multimap/96088.cc: Likewise.
553         * testsuite/23_containers/unordered_multiset/96088.cc: Likewise.
554         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
555         * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
556         * testsuite/ext/throw_allocator/check_new.cc: Likewise.
557         * testsuite/lib/libstdc++.exp (check_effective_target_std_allocator_new):
558         Define new proc.
560 2021-11-23  Jonathan Wakely  <jwakely@redhat.com>
562         PR libstdc++/103381
563         * include/ext/bitmap_allocator.h: Include <bits/stl_function.h>
564         instead of <functional>.
566 2021-11-22  Jonathan Wakely  <jwakely@redhat.com>
568         * include/bits/c++config (_GLIBCXX14_DEPRECATED): Fix condition
569         checking for C++14.
571 2021-11-20  François Dumont  <fdumont@gcc.gnu.org>
573         * include/bits/erase_if.h (__erase_nodes_if): Add _UnsafeContainer template
574         parameter. Use it to get iterators to work with.
575         * include/debug/macros.h (__glibcxx_check_erase2): New.
576         * include/debug/map.h (map<>::erase(_Base_const_iterator)): New.
577         (map<>::erase(const_iterator)): Use latter.
578         * include/debug/multimap.h (multimap<>::erase(_Base_const_iterator)): New.
579         (multimap<>::erase(const_iterator)): Use latter.
580         * include/debug/multiset.h (multiset<>::erase(_Base_const_iterator)): New.
581         (multiset<>::erase(const_iterator)): Use latter.
582         * include/debug/set.h (set<>::erase(_Base_const_iterator)): New.
583         (set<>::erase(const_iterator)): Use latter.
584         * include/debug/unordered_map (unordered_map<>::erase(_Base_const_iterator)): New.
585         (unordered_multimap<>::erase(const_iterator)): New.
586         * include/debug/unordered_set (unordered_set<>::erase(_Base_const_iterator)): New.
587         (unordered_multiset<>::erase(const_iterator)): New.
588         * include/experimental/map (erase_if): Adapt.
589         * include/experimental/set (erase_if): Adapt.
590         * include/experimental/unordered_map (erase_if): Adapt.
591         * include/experimental/unordered_set (erase_if): Adapt.
592         * include/std/map (erase_if): Adapt.
593         * include/std/set (erase_if): Adapt.
594         * include/std/unordered_map (erase_if): Adapt.
595         * include/std/unordered_set (erase_if): Adapt.
597 2021-11-19  Jonathan Wakely  <jwakely@redhat.com>
599         * testsuite/27_io/basic_istringstream/cons/char/1.cc: Check all
600         constructors.
601         * testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc:
602         Likewise.
603         * testsuite/27_io/basic_ostringstream/cons/char/1.cc: Likewise.
604         * testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc:
605         Likewise.
606         * testsuite/27_io/basic_stringstream/cons/char/1.cc: Likewise.
607         * testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc:
608         Likewise.
610 2021-11-19  Jonathan Wakely  <jwakely@redhat.com>
612         * src/c++98/locale_init.cc (_S_initialize_once): Check if
613         initialization has already been done.
614         (_S_initialize): Replace __gthread_active_p with
615         __is_single_threaded. Use __builtin_expect.
617 2021-11-19  Jonathan Wakely  <jwakely@redhat.com>
619         PR libstdc++/103295
620         * include/bits/basic_string.tcc (_M_construct): Use the
621         traits assign member to write into allcoated memory.
623 2021-11-19  Iain Sandoe  <iain@sandoe.co.uk>
625         * testsuite/lib/prune.exp: Prune dsymutil (ld64) warning.
627 2021-11-19  Jonathan Wakely  <jwakely@redhat.com>
629         PR libstdc++/103332
630         PR libstdc++/102958
631         * testsuite/21_strings/basic_string/capacity/char/1.cc: Add
632         -Wno-stringop-overflow.
633         * testsuite/21_strings/basic_string/operators/char/1.cc:
634         Likewise.
635         * testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc:
636         Add -Wno-stringop-overread.
638 2021-11-19  Jonathan Wakely  <jwakely@redhat.com>
640         PR libstdc++/103295
641         * include/bits/basic_string.h (_Alloc_traits): Replace typedef
642         with struct for C++20 mode.
643         * include/bits/basic_string.tcc (_M_replace): Use _Alloc_traits
644         for allocation.
645         * include/bits/char_traits.h (__gnu_cxx::char_traits::assign):
646         Use std::_Construct during constant evaluation.
647         (__gnu_cxx::char_traits::assign(CharT*, const CharT*, size_t)):
648         Likewise. Replace std::fill_n with memset or manual loop.
649         (__gnu_cxx::char_traits::copy): Likewise, replacing std::copy
650         with memcpy.
651         * include/ext/vstring.h: Include <bits/stl_algobase.h> for
652         std::min.
653         * include/std/string_view: Likewise.
654         * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
655         Add constexpr test.
657 2021-11-19  Tamar Christina  <tamar.christina@arm.com>
659         PR libstdc++/103305
660         * config/os/newlib/ctype_base.h (upper, lower, alpha, digit, xdigit,
661         space, print, graph, cntrl, punct, alnum, blank): Use short or long
662         names depending on if short ones are defined.
664 2021-11-18  Jonathan Wakely  <jwakely@redhat.com>
666         * include/bits/char_traits.h (__gnu_cxx::char_traits::move):
667         Do not compare unrelated pointers during constant evaluation.
668         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
669         Improve tests for char_traits::move.
671 2021-11-18  Jonathan Wakely  <jwakely@redhat.com>
673         * acinclude.m4: Replace AC_CACHE_VAL with AC_CACHE_CHECK.
674         * configure: Regenerate.
676 2021-11-17  Jonathan Wakely  <jwakely@redhat.com>
678         * include/experimental/internet (address): Use std::_Construct
679         to initialize union members.
681 2021-11-17  Jonathan Wakely  <jwakely@redhat.com>
683         * include/bits/basic_string.h (_M_construct_aux): Only define
684         for C++98. Remove constexpr.
685         (_M_construct_aux_2): Likewise.
686         (_M_construct(InputIter, InputIter)): Remove.
687         (basic_string(const basic_string&)): Call _M_construct with
688         iterator category argument.
689         (basic_string(const basic_string&, size_type, const Alloc&)):
690         Likewise.
691         (basic_string(const basic_string&, size_type, size_type)):
692         Likewise.
693         (basic_string(const charT*, size_type, const Alloc&)): Likewise.
694         Check for null pointer.
695         (basic_string(const charT*, const Alloc&)): Likewise.
696         (basic_string(initializer_list<charT>, const Alloc&)): Call
697         _M_construct with iterator category argument.
698         (basic_string(const basic_string&, const Alloc&)): Likewise.
699         (basic_string(basic_string&&, const Alloc&)): Likewise.
700         (basic_string(_InputIter, _InputIter, const Alloc&)): Likewise
701         for C++11 and later, call _M_construct_aux for C++98.
702         * include/bits/basic_string.tcc
703         (_M_construct(I, I, input_iterator_tag)): Replace try-block with
704         RAII type.
705         (_M_construct(I, I, forward_iterator_tag)): Likewise. Remove
706         __is_null_pointer check.
708 2021-11-17  Jonathan Wakely  <jwakely@redhat.com>
710         PR libstdc++/103295
711         * include/bits/basic_string.h (_M_use_local_data()): New
712         member function to make local buffer the active member.
713         (assign(const basic_string&)): Use it.
714         * include/bits/basic_string.tcc (_M_construct, reserve()):
715         Likewise.
717 2021-11-17  Jonathan Wakely  <jwakely@redhat.com>
719         PR libstdc++/103240
720         * libsupc++/tinfo2.cc (type_info::before): Use unadjusted name
721         to check for the '*' prefix.
722         * testsuite/util/testsuite_shared.cc: Add type_info object for
723         use in new test.
724         * testsuite/18_support/type_info/103240.cc: New test.
726 2021-11-16  Jonathan Wakely  <jwakely@redhat.com>
728         * include/bits/basic_string.h (operator<=>): Use constexpr
729         unconditionally.
730         * testsuite/21_strings/basic_string/modifiers/constexpr.cc:
731         Require cxx11-abit effective target.
732         * testsuite/21_strings/headers/string/synopsis.cc: Add
733         conditional constexpr to declarations, and adjust relational
734         operators for C++20.
736 2021-11-16  Patrick Palka  <ppalka@redhat.com>
738         * src/c++17/ryu/MERGE: Update the commit hash.
739         * src/c++17/ryu/d2s_intrinsics.h: Merge from Ryu's master
740         branch.
742 2021-11-16  Jonathan Wakely  <jwakely@redhat.com>
744         * include/bits/basic_string.h (basic_string, operator""s): Add
745         constexpr for C++20.
746         (basic_string::basic_string(basic_string&&)): Only copy
747         initialized portion of the buffer.
748         (basic_string::basic_string(basic_string&&, const Alloc&)):
749         Likewise.
750         * include/bits/basic_string.tcc (basic_string): Add constexpr
751         for C++20.
752         (basic_string::swap(basic_string&)): Only copy initialized
753         portions of the buffers.
754         (basic_string::_M_replace): Add constexpr implementation that
755         doesn't depend on pointer comparisons.
756         * include/bits/cow_string.h: Adjust comment.
757         * include/ext/type_traits.h (__is_null_pointer): Add constexpr.
758         * include/std/string (erase, erase_if): Add constexpr.
759         * include/std/version (__cpp_lib_constexpr_string): Update
760         value.
761         * testsuite/21_strings/basic_string/cons/char/constexpr.cc:
762         New test.
763         * testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc:
764         New test.
765         * testsuite/21_strings/basic_string/literals/constexpr.cc:
766         New test.
767         * testsuite/21_strings/basic_string/modifiers/constexpr.cc: New test.
768         * testsuite/21_strings/basic_string/modifiers/swap/char/constexpr.cc:
769         New test.
770         * testsuite/21_strings/basic_string/modifiers/swap/wchar_t/constexpr.cc:
771         New test.
772         * testsuite/21_strings/basic_string/version.cc: New test.
774 2021-11-16  Jonathan Wakely  <jwakely@redhat.com>
776         * include/bits/stl_bvector.h (swap(_Bit_reference, _Bit_reference))
777         (swap(_Bit_reference, bool&), swap(bool&, _Bit_reference)):
778         Define as hidden friends of _Bit_reference.
780 2021-11-16  Jonathan Wakely  <jwakely@redhat.com>
782         * testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc:
783         Fix reads past the end of strings.
784         * testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc:
785         Likewise.
786         * testsuite/experimental/string_view/operations/compare/wchar_t/1.cc:
787         Likewise.
789 2021-11-16  Jonathan Wakely  <jwakely@redhat.com>
791         * testsuite/21_strings/basic_string/allocator/71964.cc: Fix
792         typo.
793         * testsuite/23_containers/set/allocator/71964.cc: Likewise.
795 2021-11-15  Jason Merrill  <jason@redhat.com>
797         * testsuite/20_util/to_address/1_neg.cc: Adjust error.
798         * testsuite/26_numerics/random/concept.cc: Adjust asserts.
800 2021-11-15  François Dumont  <fdumont@gcc.gnu.org>
802         * include/bits/hashtable_policy.h:
803         (_Hash_code_base<>::_M_hash_code(const _Hash&, const _Hash_node_value<_Value, true>&)): New.
804         (_Hash_code_base<>::_M_hash_code<_H2>(const _H2&, const _Hash_node_value<>&)): New.
805         * include/bits/hashtable.h (_Hashtable<>::_M_merge_unique): Use latter.
806         (_Hashtable<>::_M_merge_multi): Likewise.
807         * testsuite/23_containers/unordered_multiset/modifiers/merge.cc (test05): New test.
808         * testsuite/23_containers/unordered_set/modifiers/merge.cc (test04): New test.
810 2021-11-15  Jason Merrill  <jason@redhat.com>
812         * src/c++17/memory_resource.cc: Add missing constexpr.
813         * include/experimental/internet: Only mark copy constructor
814         as constexpr with __cpp_constexpr_dynamic_alloc.
816 2021-11-14  François Dumont  <fdumont@gcc.gnu.org>
818         * include/debug/safe_container.h (_Safe_container<>::_M_safe): Remove.
819         * include/debug/deque (deque::operator=(initializer_list<>)): Replace
820         _M_base() call with _Base:: call.
821         (deque::operator[](size_type)): Likewise.
822         * include/debug/forward_list (forward_list(forward_list&&, const allocator_type&)):
823         Remove _M_safe() and _M_base() calls.
824         (forward_list::operator=(initializer_list<>)): Remove _M_base() calls.
825         (forward_list::splice_after, forward_list::merge): Likewise.
826         * include/debug/list (list(list&&, const allocator_type&)):
827         Remove _M_safe() and _M_base() calls.
828         (list::operator=(initializer_list<>)): Remove _M_base() calls.
829         (list::splice, list::merge): Likewise.
830         * include/debug/map.h (map(map&&, const allocator_type&)):
831         Remove _M_safe() and _M_base() calls.
832         (map::operator=(initializer_list<>)): Remove _M_base() calls.
833         * include/debug/multimap.h (multimap(multimap&&, const allocator_type&)):
834         Remove _M_safe() and _M_base() calls.
835         (multimap::operator=(initializer_list<>)): Remove _M_base() calls.
836         * include/debug/set.h (set(set&&, const allocator_type&)):
837         Remove _M_safe() and _M_base() calls.
838         (set::operator=(initializer_list<>)): Remove _M_base() calls.
839         * include/debug/multiset.h (multiset(multiset&&, const allocator_type&)):
840         Remove _M_safe() and _M_base() calls.
841         (multiset::operator=(initializer_list<>)): Remove _M_base() calls.
842         * include/debug/string (basic_string(basic_string&&, const allocator_type&)):
843         Remove _M_safe() and _M_base() calls.
844         (basic_string::operator=(initializer_list<>)): Remove _M_base() call.
845         (basic_string::operator=(const _CharT*), basic_string::operator=(_CharT)): Likewise.
846         (basic_string::operator[](size_type), basic_string::operator+=(const basic_string&)):
847         Likewise.
848         (basic_string::operator+=(const _Char*), basic_string::operator+=(_CharT)): Likewise.
849         * include/debug/unordered_map (unordered_map(unordered_map&&, const allocator_type&)):
850         Remove _M_safe() and _M_base() calls.
851         (unordered_map::operator=(initializer_list<>), unordered_map::merge):
852         Remove _M_base() calls.
853         (unordered_multimap(unordered_multimap&&, const allocator_type&)):
854         Remove _M_safe() and _M_base() calls.
855         (unordered_multimap::operator=(initializer_list<>), unordered_multimap::merge):
856         Remove _M_base() calls.
857         * include/debug/unordered_set (unordered_set(unordered_set&&, const allocator_type&)):
858         Remove _M_safe() and _M_base() calls.
859         (unordered_set::operator=(initializer_list<>), unordered_set::merge):
860         Remove _M_base() calls.
861         (unordered_multiset(unordered_multiset&&, const allocator_type&)):
862         Remove _M_safe() and _M_base() calls.
863         (unordered_multiset::operator=(initializer_list<>), unordered_multiset::merge):
864         Remove _M_base() calls.
865         * include/debug/vector (vector(vector&&, const allocator_type&)):
866         Remove _M_safe() and _M_base() calls.
867         (vector::operator=(initializer_list<>)): Remove _M_base() calls.
868         (vector::operator[](size_type)): Likewise.
870 2021-11-13  Jonathan Wakely  <jwakely@redhat.com>
872         * include/Makefile.am: Add spanstream header.
873         * include/Makefile.in: Regenerate.
874         * include/precompiled/stdc++.h: Add spanstream header.
875         * include/std/version (__cpp_lib_spanstream): Define.
876         * include/std/spanstream: New file.
877         * testsuite/27_io/spanstream/1.cc: New test.
878         * testsuite/27_io/spanstream/version.cc: New test.
880 2021-11-13  Hans-Peter Nilsson  <hp@axis.com>
882         PR libstdc++/103166
883         * acinclude.m4 (GLIBCXX_CHECK_GETENTROPY, GLIBCXX_CHECK_ARC4RANDOM):
884         Use GCC_TRY_COMPILE_OR_LINK instead of AC_TRY_COMPILE.
885         * configure: Regenerate.
887 2021-11-12  Jonathan Wakely  <jwakely@redhat.com>
889         PR libstdc++/59675
890         * acinclude.m4 (libtool_VERSION): Bump version.
891         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Add version and
892         export new symbol.
893         * configure: Regenerate.
894         * include/bits/c++config (__replacement_assert): Remove, declare
895         __glibcxx_assert_fail instead.
896         * src/c++11/debug.cc (__glibcxx_assert_fail): New function to
897         replace __replacement_assert, writing to stderr instead of
898         stdout.
899         * testsuite/util/testsuite_abi.cc: Update latest version.
901 2021-11-12  Jonathan Wakely  <jwakely@redhat.com>
902             Josh Marshall  <joshua.r.marshall.1991@gmail.com>
904         * include/bits/alloc_traits.h (_Destroy): Make constexpr for
905         C++20 mode.
906         * include/bits/allocator.h (__shrink_to_fit::_S_do_it):
907         Likewise.
908         * include/bits/stl_algobase.h (__fill_a1): Declare _Bit_iterator
909         overload constexpr for C++20.
910         * include/bits/stl_bvector.h (_Bit_type, _S_word_bit): Move out
911         of inline namespace.
912         (_Bit_reference, _Bit_iterator_base, _Bit_iterator)
913         (_Bit_const_iterator, _Bvector_impl_data, _Bvector_base)
914         (vector<bool, A>>): Add constexpr to every member function.
915         (_Bvector_base::_M_allocate): Initialize storage during constant
916         evaluation.
917         (vector<bool, A>::_M_initialize_value): Use __fill_bvector_n
918         instead of memset.
919         (__fill_bvector_n): New helper function to replace memset during
920         constant evaluation.
921         * include/bits/stl_uninitialized.h (__uninitialized_copy<false>):
922         Move logic to ...
923         (__do_uninit_copy): New function.
924         (__uninitialized_fill<false>): Move logic to ...
925         (__do_uninit_fill): New function.
926         (__uninitialized_fill_n<false>): Move logic to ...
927         (__do_uninit_fill_n): New function.
928         (__uninitialized_copy_a): Add constexpr. Use __do_uninit_copy.
929         (__uninitialized_move_a, __uninitialized_move_if_noexcept_a):
930         Add constexpr.
931         (__uninitialized_fill_a): Add constexpr. Use __do_uninit_fill.
932         (__uninitialized_fill_n_a): Add constexpr. Use
933         __do_uninit_fill_n.
934         (__uninitialized_default_n, __uninitialized_default_n_a)
935         (__relocate_a_1, __relocate_a): Add constexpr.
936         * include/bits/stl_vector.h (_Vector_impl_data, _Vector_impl)
937         (_Vector_base, vector): Add constexpr to every member function.
938         (_Vector_impl::_S_adjust): Disable ASan annotation during
939         constant evaluation.
940         (_Vector_base::_S_use_relocate): Disable bitwise-relocation
941         during constant evaluation.
942         (vector::_Temporary_value): Use a union for storage.
943         * include/bits/vector.tcc (vector, vector<bool>): Add constexpr
944         to every member function.
945         * include/std/vector (erase_if, erase): Add constexpr.
946         * testsuite/23_containers/headers/vector/synopsis.cc: Add
947         constexpr for C++20 mode.
948         * testsuite/23_containers/vector/bool/cmp_c++20.cc: Change to
949         compile-only test using constant expressions.
950         * testsuite/23_containers/vector/bool/capacity/29134.cc: Adjust
951         namespace for _S_word_bit.
952         * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
953         Likewise.
954         * testsuite/23_containers/vector/cmp_c++20.cc: Likewise.
955         * testsuite/23_containers/vector/cons/89164.cc: Adjust errors
956         for C++20 and move C++17 test to ...
957         * testsuite/23_containers/vector/cons/89164_c++17.cc: ... here.
958         * testsuite/23_containers/vector/bool/capacity/constexpr.cc: New test.
959         * testsuite/23_containers/vector/bool/cons/constexpr.cc: New test.
960         * testsuite/23_containers/vector/bool/element_access/constexpr.cc: New test.
961         * testsuite/23_containers/vector/bool/modifiers/assign/constexpr.cc: New test.
962         * testsuite/23_containers/vector/bool/modifiers/constexpr.cc: New test.
963         * testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc: New test.
964         * testsuite/23_containers/vector/capacity/constexpr.cc: New test.
965         * testsuite/23_containers/vector/cons/constexpr.cc: New test.
966         * testsuite/23_containers/vector/data_access/constexpr.cc: New test.
967         * testsuite/23_containers/vector/element_access/constexpr.cc: New test.
968         * testsuite/23_containers/vector/modifiers/assign/constexpr.cc: New test.
969         * testsuite/23_containers/vector/modifiers/constexpr.cc: New test.
970         * testsuite/23_containers/vector/modifiers/swap/constexpr.cc: New test.
972 2021-11-11  Jonathan Wakely  <jwakely@redhat.com>
974         * include/debug/deque (deque::operator=(const deque&)): Remove
975         definition.
976         * include/debug/list (list::operator=(const list&)): Likewise.
977         * include/debug/map.h (map::operator=(const map&)): Likewise.
978         * include/debug/multimap.h (multimap::operator=(const multimap&)):
979         Likewise.
980         * include/debug/multiset.h (multiset::operator=(const multiset&)):
981         Likewise.
982         * include/debug/set.h (set::operator=(const set&)): Likewise.
983         * include/debug/string (basic_string::operator=(const basic_string&)):
984         Likewise.
985         * include/debug/vector (vector::operator=(const vector&)):
986         Likewise.
987         (_Safe_vector::operator=(const _Safe_vector&)): Define for
988         C++98 as well.
990 2021-11-11  Jonathan Wakely  <jwakely@redhat.com>
992         * include/std/memory_resource (memory_resource::allocate):
993         Implicitly create objects in the returned storage.
995 2021-11-11  Jonathan Wakely  <jwakely@redhat.com>
997         * include/bits/stl_bvector.h (vector<bool>::data()): Give
998         protected access, and delete for C++11 and later.
1000 2021-11-10  Jonathan Wakely  <jwakely@redhat.com>
1002         PR libstdc++/100117
1003         * testsuite/17_intro/headers/c++1998/49745.cc: Explicitly list
1004         all C++ headers instead of including <bits/stdc++.h>
1006 2021-11-10  Jonathan Wakely  <jwakely@redhat.com>
1008         PR libstdc++/100748
1009         PR libstdc++/103133
1010         * config/os/gnu-linux/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK):
1011         Define for glibc 2.34 and later.
1013 2021-11-09  François Dumont  <fdumont@gcc.gnu.org>
1015         * include/bits/hashtable_policy.h (__distance_fw): Replace class keyword with
1016         typename.
1017         * include/bits/hashtable.h (_Hashtable<>::_M_merge_unique): Remove noexcept
1018         qualification. Use const_iterator for node extraction/reinsert.
1019         (_Hashtable<>::_M_merge_multi): Likewise. Compute new hash code before extract.
1020         * include/debug/safe_container.h (_Safe_container<>): Make all methods
1021         protected.
1022         * include/debug/safe_unordered_container.h
1023         (_Safe_unordered_container<>::_UContInvalidatePred<_ExtractKey, _Source>): New.
1024         (_Safe_unordered_container<>::_UMContInvalidatePred<_ExtractKey, _Source>): New.
1025         (_Safe_unordered_container<>::_UContMergeGuard<_Source, _InvalidatePred>): New.
1026         (_Safe_unordered_container<>::_S_uc_guard<_ExtractKey, _Source>): New.
1027         (_Safe_unordered_container<>::_S_umc_guard<_ExtractKey, _Source>): New.
1028         (_Safe_unordered_container<>::_M_invalide_all): Make public.
1029         (_Safe_unordered_container<>::_M_invalide_if): Likewise.
1030         (_Safe_unordered_container<>::_M_invalide_local_if): Likewise.
1031         * include/debug/unordered_map
1032         (unordered_map<>::mapped_type, pointer, const_pointer): New typedef.
1033         (unordered_map<>::reference, const_reference, difference_type): New typedef.
1034         (unordered_map<>::get_allocator, empty, size, max_size): Add usings.
1035         (unordered_map<>::bucket_count, max_bucket_count, bucket): Add usings.
1036         (unordered_map<>::hash_function, key_equal, count, contains): Add usings.
1037         (unordered_map<>::operator[], at, rehash, reserve): Add usings.
1038         (unordered_map<>::merge): New.
1039         (unordered_multimap<>::mapped_type, pointer, const_pointer): New typedef.
1040         (unordered_multimap<>::reference, const_reference, difference_type): New typedef.
1041         (unordered_multimap<>::get_allocator, empty, size, max_size): Add usings.
1042         (unordered_multimap<>::bucket_count, max_bucket_count, bucket): Add usings.
1043         (unordered_multimap<>::hash_function, key_equal, count, contains): Add usings.
1044         (unordered_multimap<>::rehash, reserve): Add usings.
1045         (unordered_multimap<>::merge): New.
1046         * include/debug/unordered_set
1047         (unordered_set<>::mapped_type, pointer, const_pointer): New typedef.
1048         (unordered_set<>::reference, const_reference, difference_type): New typedef.
1049         (unordered_set<>::get_allocator, empty, size, max_size): Add usings.
1050         (unordered_set<>::bucket_count, max_bucket_count, bucket): Add usings.
1051         (unordered_set<>::hash_function, key_equal, count, contains): Add usings.
1052         (unordered_set<>::rehash, reserve): Add usings.
1053         (unordered_set<>::merge): New.
1054         (unordered_multiset<>::mapped_type, pointer, const_pointer): New typedef.
1055         (unordered_multiset<>::reference, const_reference, difference_type): New typedef.
1056         (unordered_multiset<>::get_allocator, empty, size, max_size): Add usings.
1057         (unordered_multiset<>::bucket_count, max_bucket_count, bucket): Add usings.
1058         (unordered_multiset<>::hash_function, key_equal, count, contains): Add usings.
1059         (unordered_multiset<>::rehash, reserve): Add usings.
1060         (unordered_multiset<>::merge): New.
1061         * testsuite/23_containers/unordered_map/debug/merge1_neg.cc: New test.
1062         * testsuite/23_containers/unordered_map/debug/merge2_neg.cc: New test.
1063         * testsuite/23_containers/unordered_map/debug/merge3_neg.cc: New test.
1064         * testsuite/23_containers/unordered_map/debug/merge4_neg.cc: New test.
1065         * testsuite/23_containers/unordered_multimap/debug/merge1_neg.cc: New test.
1066         * testsuite/23_containers/unordered_multimap/debug/merge2_neg.cc: New test.
1067         * testsuite/23_containers/unordered_multimap/debug/merge3_neg.cc: New test.
1068         * testsuite/23_containers/unordered_multimap/debug/merge4_neg.cc: New test.
1069         * testsuite/23_containers/unordered_multiset/debug/merge1_neg.cc: New test.
1070         * testsuite/23_containers/unordered_multiset/debug/merge2_neg.cc: New test.
1071         * testsuite/23_containers/unordered_multiset/debug/merge3_neg.cc: New test.
1072         * testsuite/23_containers/unordered_multiset/debug/merge4_neg.cc: New test.
1073         * testsuite/23_containers/unordered_set/debug/merge1_neg.cc: New test.
1074         * testsuite/23_containers/unordered_set/debug/merge2_neg.cc: New test.
1075         * testsuite/23_containers/unordered_set/debug/merge3_neg.cc: New test.
1076         * testsuite/23_containers/unordered_set/debug/merge4_neg.cc: New test.
1077         * testsuite/util/testsuite_abi.h: [_GLIBCXX_DEBUG] Use normal unordered
1078         container implementation.
1080 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
1082         * testsuite/26_numerics/random/random_device/cons/token.cc:
1083         Print results of random_device_available checks.
1085 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
1087         PR libstdc++/103146
1088         * src/c++11/random.cc: Check __powerpc64__ not __powerpc__.
1090 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
1092         * acinclude.m4 (GLIBCXX_CHECK_GETENTROPY, GLIBCXX_CHECK_ARC4RANDOM):
1093         Define.
1094         * configure.ac (GLIBCXX_CHECK_GETENTROPY, GLIBCXX_CHECK_ARC4RANDOM):
1095         Use them.
1096         * config.h.in: Regenerate.
1097         * configure: Regenerate.
1098         * src/c++11/random.cc (random_device): Add getentropy and
1099         arc4random as sources.
1100         * testsuite/26_numerics/random/random_device/cons/token.cc:
1101         Check new tokens.
1102         * testsuite/26_numerics/random/random_device/entropy.cc:
1103         Likewise.
1105 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
1107         * testsuite/26_numerics/random/random_device/cons/token.cc:
1108         Retry if random devices produce the same value.
1110 2021-11-09  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
1112         * config/os/vxworks/os_defines.h (_GLIBCXX_HAVE_TLS): Only
1113         define for VxWorks >= 6.6.
1115 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
1117         * include/bits/range_access.h (begin(valarray), end(valarray)):
1118         Add noexcept.
1120 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
1122         * include/std/tuple (tuple_size_v): Fix pack expansion.
1124 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
1126         * src/c++11/random.cc (__x86_rdrand, __x86_rdseed): Add
1127         [[unlikely]] attribute.
1129 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
1131         * src/c++11/random.cc [__powerpc__] (USE_DARN): Define.
1132         (__ppc_darn): New function to use POWER9 DARN instruction.
1133         (Which): Add 'darn' enumerator.
1134         (which_source): Check for __ppc_darn.
1135         (random_device::_M_init): Support "darn" and "hw" tokens.
1136         (random_device::_M_getentropy): Add darn to switch.
1137         * testsuite/26_numerics/random/random_device/cons/token.cc:
1138         Check "darn" token.
1139         * testsuite/26_numerics/random/random_device/entropy.cc:
1140         Likewise.
1142 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
1144         * testsuite/lib/gdb-test.exp: Add target selector support to the
1145         dg-final directives.
1146         * testsuite/libstdc++-prettyprinters/80276.cc: Add xfail for
1147         C++20.
1148         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
1149         * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Tweak
1150         comment.
1152 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
1154         PR libstdc++/103086
1155         * python/libstdcxx/v6/printers.py (_tuple_impl_get): New helper
1156         for accessing the tuple element stored in a _Tuple_impl node.
1157         (tuple_get): New function for accessing a tuple element.
1158         (unique_ptr_get): New function for accessing a unique_ptr.
1159         (UniquePointerPrinter, StdPathPrinter): Use unique_ptr_get.
1160         * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker): Cast
1161         tuple to its base class before accessing _M_head_impl.
1163 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
1165         * doc/xml/manual/evolution.xml: Document deprecations.
1166         * doc/html/*: Regenerate.
1167         * libsupc++/exception (unexpected_handler, unexpected)
1168         (get_unexpected, set_unexpected): Add deprecated attribute.
1169         Do not define without _GLIBCXX_USE_DEPRECATED for C++17 and up.
1170         * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Disable
1171         deprecated warnings.
1172         * libsupc++/eh_ptr.cc (std::rethrow_exception): Likewise.
1173         * libsupc++/eh_terminate.cc: Likewise.
1174         * libsupc++/eh_throw.cc (__cxa_init_primary_exception):
1175         Likewise.
1176         * libsupc++/unwind-cxx.h (struct __cxa_exception): Use
1177         terminate_handler instead of unexpected_handler.
1178         (struct __cxa_dependent_exception): Likewise.
1179         (__unexpected): Likewise.
1180         * testsuite/18_support/headers/exception/synopsis.cc: Add
1181         dg-warning for deprecated warning.
1182         * testsuite/18_support/exception_ptr/60612-unexpected.cc:
1183         Disable deprecated warnings.
1184         * testsuite/18_support/set_unexpected.cc: Likewise.
1185         * testsuite/18_support/unexpected_handler.cc: Likewise.
1187 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
1189         * include/bits/utility.h (__find_uniq_type_in_pack): Move
1190         definition to here, ...
1191         * include/std/tuple (__find_uniq_type_in_pack): ... from here.
1192         * include/std/variant (__detail__variant::__index_of): Remove.
1193         (__detail::__variant::__exactly_once): Define using
1194         __find_uniq_type_in_pack instead of __index_of.
1195         (get<T>, get_if<T>, variant::__index_of): Likewise.
1197 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
1199         * include/bits/stl_pair.h (tuple_size_v): Define partial
1200         specializations for std::pair.
1201         * include/bits/utility.h (_Nth_type): Move definition here
1202         and define primary template.
1203         (tuple_size_v): Move definition here.
1204         * include/std/array (tuple_size_v): Define partial
1205         specializations for std::array.
1206         * include/std/tuple (tuple_size_v): Move primary template to
1207         <bits/utility.h>.  Define partial specializations for
1208         std::tuple.
1209         (tuple_element): Change definition to use _Nth_type.
1210         * include/std/variant (_Nth_type): Move to <bits/utility.h>.
1211         (variant_alternative, variant): Adjust qualification of
1212         _Nth_type.
1213         * testsuite/20_util/tuple/element_access/get_neg.cc: Prune
1214         additional errors from _Nth_type.
1216 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
1218         * include/std/variant (__detail::__variant::__emplace): New
1219         function template.
1220         (_Copy_assign_base::operator=): Reorder conditions to match
1221         bulleted list of effects in the standard. Use __emplace instead
1222         of _M_reset followed by _Construct.
1223         (_Move_assign_base::operator=): Likewise.
1224         (__construct_by_index): Remove.
1225         (variant::emplace): Use __emplace instead of _M_reset followed
1226         by __construct_by_index.
1227         (variant::swap): Hoist valueless cases out of visitor. Use
1228         __emplace to replace _M_reset followed by _Construct.
1230 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
1232         * include/std/variant (_Nth_type): Define partial
1233         specializations to reduce number of instantiations.
1234         (variant_size_v): Define partial specializations to avoid
1235         instantiations.
1236         (variant_alternative): Use _Nth_type. Add static assert.
1237         (__tuple_count, __tuple_count_v): Replace with ...
1238         (__count): New variable template.
1239         (_Variant_union): Add deleted constructor.
1240         (variant::__to_type): Use _Nth_type.
1241         (variant::emplace): Use _Nth_type. Add deleted overloads for
1242         invalid types and indices.
1244 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
1246         PR libstdc++/102912
1247         * include/std/variant (_Variant_storage::__index_of): Remove.
1248         (__variant_construct_single): Remove.
1249         (__variant_construct): Remove.
1250         (_Copy_ctor_base::_Copy_ctor_base(const _Copy_ctor_base&)): Do
1251         construction directly instead of using __variant_construct.
1252         (_Move_ctor_base::_Move_ctor_base(_Move_ctor_base&&)): Likewise.
1253         (_Move_ctor_base::_M_destructive_move()): Remove.
1254         (_Move_ctor_base::_M_destructive_copy()): Remove.
1255         (_Copy_assign_base::operator=(const _Copy_assign_base&)): Do
1256         construction directly instead of using _M_destructive_copy.
1257         (variant::swap): Do construction directly instead of using
1258         _M_destructive_move.
1259         * testsuite/20_util/variant/102912.cc: New test.
1261 2021-11-03  Jonathan Wakely  <jwakely@redhat.com>
1263         PR libstdc++/66742
1264         * include/bits/list.tcc (list::sort): Use mutable iterators for
1265         comparisons.
1266         * include/bits/stl_list.h (_Scratch_list::_Ptr_cmp): Likewise.
1267         * testsuite/23_containers/list/operations/66742.cc: Check
1268         non-const comparisons.
1270 2021-11-03  Jonathan Wakely  <jwakely@redhat.com>
1272         * include/std/valarray (valarray::valarray()): Add noexcept.
1273         (valarray::operator[]): Likewise.
1275 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
1277         * include/debug/stl_iterator.h (__valid_range): Add constexpr
1278         for C++20. Qualify call to avoid ADL.
1279         (__get_distance, __can_advance, __unsafe, __base): Likewise.
1280         * testsuite/25_algorithms/move/constexpr.cc: Also check with
1281         std::reverse_iterator arguments.
1283 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
1285         * include/std/span (span(Range&&)): Reorder constraints.
1287 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
1289         PR libstdc++/103022
1290         * include/std/valarray (begin, end): Do not dereference an empty
1291         valarray. Add noexcept and [[nodiscard]].
1292         * testsuite/26_numerics/valarray/range_access.cc: Check empty
1293         valarray. Check iterator properties. Run as well as compiling.
1294         * testsuite/26_numerics/valarray/range_access2.cc: Likewise.
1295         * testsuite/26_numerics/valarray/103022.cc: New test.
1297 2021-10-29  Jonathan Wakely  <jwakely@redhat.com>
1299         * testsuite/23_containers/stack/deduction.cc: Fix typo.
1301 2021-10-26  Martin Sebor  <msebor@redhat.com>
1303         * testsuite/21_strings/basic_string/capacity/1.cc: Also suppress
1304         -Wstringop-overread.
1305         * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc: Same.
1307 2021-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1309         * testsuite/28_regex/basic_regex/84110.cc (test01)
1310         [__cpp_exceptions]: Disambiguate extended.
1312 2021-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1314         * testsuite/17_intro/names.cc [__sun__] (r, x): Undef.
1316 2021-10-22  Jonathan Wakely  <jwakely@redhat.com>
1318         PR libstdc++/102894
1319         * include/std/any (make_any): Add SFINAE constraint.
1320         * testsuite/20_util/any/102894.cc: New test.
1322 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
1324         * doc/doxygen/stdheader.cc: Refactor. Use C++23. Add new
1325         headers.
1326         * scripts/run_doxygen: Fix post-processing of #include
1327         directives in man pages. Use new xg++ to compile helper program.
1329 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
1331         * include/bits/mofunc_impl.h: Add doxygen comments.
1332         * include/std/functional: Likewise.
1334 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
1336         * include/bits/alloc_traits.h: Suppress doxygen documentation.
1337         * include/bits/allocated_ptr.h: Likewise.
1338         * include/bits/enable_special_members.h: Likewise.
1339         * include/bits/hashtable.h: Likewise.
1340         * include/bits/hashtable_policy.h: Likewise.
1341         * include/bits/uses_allocator.h: Likewise.
1342         * include/bits/node_handle.h: Document node handles and suppress
1343         documentation for protected members.
1344         * include/std/any: Suppress documentation for implementation
1345         details.
1347 2021-10-21  Patrick Palka  <ppalka@redhat.com>
1349         PR libstdc++/102358
1350         * include/bits/stl_iterator.h (__niter_base): Make constexpr
1351         for C++20.
1352         (__miter_base): Likewise.
1353         * testsuite/25_algorithms/move/constexpr.cc: New test.
1355 2021-10-21  Patrick Palka  <ppalka@redhat.com>
1357         * include/std/ranges (istream_view): Replace this function
1358         template with an alias template as per P2432R1.
1359         (wistream_view): Define as per P2432R1.
1360         (views::_Istream, views::istream): Likewise.
1361         * testsuite/std/ranges/istream_view.cc (test07): New test.
1363 2021-10-21  Patrick Palka  <ppalka@redhat.com>
1365         * include/bits/ranges_util.h (views::_Drop): Forward declare.
1366         (subrange): Befriend views::_Drop.
1367         (subrange::_S_store_size): Declare constexpr instead of just
1368         const, remove obsolete comment.
1369         * include/std/ranges (views::__detail::__is_empty_view): Define.
1370         (views::__detail::__is_basic_string_view): Likewise.
1371         (views::__detail::__is_subrange): Likewise.
1372         (views::__detail::__is_iota_view): Likewise.
1373         (views::__detail::__can_take_view): Rename template parm _Tp to _Dp.
1374         (views::_Take): Rename template parm _Tp to _Dp, make it non-deducible
1375         and fix it to range_difference_t<_Range>.  Implement P1739R4 and
1376         LWG 3407 changes.
1377         (views::__detail::__can_drop_view): Rename template parm _Tp to _Dp.
1378         (views::_Drop): As with views::_Take.
1379         (views::_Counted): Implement P1739R4 changes.
1380         * include/std/span (__detail::__is_std_span): Rename to ...
1381         (__detail::__is_span): ... this and turn it into a variable
1382         template.
1383         (__detail::__is_std_array): Turn it into a variable template.
1384         (span::span): Adjust uses of __is_std_span and __is_std_array
1385         accordingly.
1386         * testsuite/std/ranges/adaptors/p1739.cc: New test.
1388 2021-10-21  Patrick Palka  <ppalka@redhat.com>
1390         * include/bits/stl_iterator.h (common_iterator::__arrow_proxy):
1391         Make fully constexpr as per LWG 3595.
1392         (common_iterator::__postfix_proxy): Likewise.
1394 2021-10-21  Patrick Palka  <ppalka@redhat.com>
1396         * include/std/ranges (lazy_split_view::base): Add forward_range
1397         constraint as per LWG 3591.
1398         (lazy_split_view::begin, lazy_split_view::end): Also check
1399         simpleness of _Pattern as per LWG 3592.
1400         (split_view::base): Relax copyable constraint as per LWG 3590.
1402 2021-10-21  Patrick Palka  <ppalka@redhat.com>
1404         * include/std/ranges (join_view::__iter_cat::_S_iter_cat): Adjust
1405         criteria for returning bidirectional_iterator_tag as per LWG 3535.
1406         (join_view::_Iterator::_S_iter_concept): Likewise.
1408 2021-10-21  Patrick Palka  <ppalka@redhat.com>
1410         * include/bits/ranges_base.h (viewable_range): Adjust as per
1411         LWG 3481.
1412         * testsuite/std/ranges/adaptors/all.cc (test07): New test.
1414 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
1416         PR libstdc++/102863
1417         * include/std/optional (optional::and_then, optional::transform):
1418         Remove requires-clause.
1419         * testsuite/20_util/optional/monadic/and_then.cc: Check
1420         overload resolution doesn't cause errors.
1421         * testsuite/20_util/optional/monadic/transform.cc: Likewise.
1423 2021-10-20  Jonathan Wakely  <jwakely@redhat.com>
1425         * testsuite/20_util/optional/monadic/transform.cc: Check that
1426         an rvalue result is not materialized too soon.
1428 2021-10-19  Patrick Palka  <ppalka@redhat.com>
1430         * include/std/ranges (iota_view::_Iterator::operator+): Adjust
1431         definition as per LWG 3580.
1432         (iota_view::_Iterator::operator-): Likewise.
1434 2021-10-19  Patrick Palka  <ppalka@redhat.com>
1436         * include/std/ranges (basic_istream_view::_M_object): Value
1437         initialize as per LWG 3568.
1439 2021-10-19  Patrick Palka  <ppalka@redhat.com>
1441         * include/bits/ranges_util.h
1442         (__detail::__uses_nonqualification_pointer_conversion): Define
1443         and use it ...
1444         (__detail::__convertible_to_nonslicing): ... here, as per LWG 3470.
1445         * testsuite/std/ranges/subrange/1.cc: New test.
1447 2021-10-19  Patrick Palka  <ppalka@redhat.com>
1449         * include/std/ranges (iota_view::_Iterator): Befriend iota_view.
1450         (iota_view::_Sentinel): Likewise.
1451         (iota_view::iota_view): Add three overloads, each taking an
1452         iterator/sentinel pair as per LWG 3523.
1453         * testsuite/std/ranges/iota/iota_view.cc (test06): New test.
1455 2021-10-19  Patrick Palka  <ppalka@redhat.com>
1457         * include/bits/ranges_base.h (view_interface): Forward declare.
1458         (__detail::__is_derived_from_view_interface_fn): Declare.
1459         (__detail::__is_derived_from_view_interface): Define as per LWG 3549.
1460         (enable_view): Adjust as per LWG 3549.
1461         * include/bits/ranges_util.h (view_interface): Don't derive from
1462         view_base.
1463         * include/std/ranges (filter_view): Revert r11-3504 change.
1464         (transform_view): Likewise.
1465         (take_view): Likewise.
1466         (take_while_view): Likewise.
1467         (drop_view): Likewise.
1468         (drop_while_view): Likewise.
1469         (join_view): Likewise.
1470         (lazy_split_view): Likewise.
1471         (split_view): Likewise.
1472         (reverse_view): Likewise.
1473         * testsuite/std/ranges/adaptors/sizeof.cc: Update expected sizes.
1474         * testsuite/std/ranges/view.cc (test_view::test_view): Remove
1475         this default ctor since views no longer need to be default initable.
1476         (test01): New test.
1478 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
1480         * src/c++11/random.cc (which_source): New helper function.
1481         (random_device::_M_getentropy()): Use which_source and return
1482         suitable values for sources other than device files.
1483         * testsuite/26_numerics/random/random_device/entropy.cc: New test.
1485 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
1487         * doc/Makefile.am (stamp-html-doxygen, stamp-html-doxygen)
1488         (stamp-latex-doxygen, stamp-man-doxygen): Fix recipes for
1489         relative ${top_srcdir}.
1490         * doc/Makefile.in: Regenerate.
1492 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
1494         * include/std/variant (_Uninitialized): Use an empty struct
1495         for the unused union member, instead of char.
1497 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
1499         * include/bits/stl_stack.h (stack(Iterator, Iterator)): Remove
1500         non-deducible template parameter from deduction guide.
1501         * testsuite/23_containers/stack/deduction.cc: Check new C++23
1502         deduction guides.
1504 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
1506         * include/std/optional (_Optional_payload_base::_Storage): Add
1507         constructor taking a callable function to invoke.
1508         (_Optional_payload_base::_M_apply): New function.
1509         (__cpp_lib_monadic_optional): Define for C++23.
1510         (optional::and_then, optional::transform, optional::or_else):
1511         Define for C++23.
1512         * include/std/ranges (__detail::__cached): Remove.
1513         (__detail::__non_propagating_cache): Remove use of __cached for
1514         contained value. Use _Optional_payload_base::_M_construct and
1515         _Optional_payload_base::_M_apply to set the contained value.
1516         * include/std/version (__cpp_lib_monadic_optional): Define.
1517         * testsuite/20_util/optional/monadic/and_then.cc: New test.
1518         * testsuite/20_util/optional/monadic/or_else.cc: New test.
1519         * testsuite/20_util/optional/monadic/or_else_neg.cc: New test.
1520         * testsuite/20_util/optional/monadic/transform.cc: New test.
1521         * testsuite/20_util/optional/monadic/version.cc: New test.
1523 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
1525         PR libstdc++/102825
1526         * include/bits/mofunc_impl.h (move_only_function): Remove
1527         invalid base initializer.
1528         * testsuite/20_util/move_only_function/cons.cc: Instantiate
1529         constructors to check bodies.
1531 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
1533         * include/bits/fs_path.h (path::_S_convert(T)): Avoid recursive
1534         call to function with deduced return type.
1536 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
1538         * include/bits/basic_string.h (__cpp_lib_string_resize_and_overwrite):
1539         Define for C++23.
1540         (basic_string::resize_and_overwrite): Declare.
1541         * include/bits/basic_string.tcc (basic_string::resize_and_overwrite):
1542         Define.
1543         * include/std/version (__cpp_lib_resize_and_overwrite): Define
1544         for C++23.
1545         * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
1546         New test.
1548 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
1550         PR libstdc++/101263
1551         * include/std/ranges (__cached): New wrapper struct.
1552         (__non_propagating_cache): Use __cached for contained value.
1553         (__non_propagating_cache::_M_emplace_deref): Add constexpr. Use
1554         std::construct_at instead of placement new.
1555         * testsuite/std/ranges/adaptors/join.cc: Check constexpr works.
1557 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
1559         * include/std/variant (__cpp_lib_variant): Update value for
1560         C++20.
1561         (__variant_cast, __variant_construct): Add constexpr for C++20.
1562         (__variant_construct_single, __construct_by_index) Likewise. Use
1563         std::_Construct instead of placement new.
1564         (_Uninitialized<T, false>) [__cplusplus >= 202002]: Replace
1565         buffer with a union and define a destructor.
1566         (_Variadic_union) [__cplusplus >= 202002]: Add a specialization
1567         for non-trivial destruction.
1568         (_Variant_storage::__index_of): New helper variable template.
1569         (_Variant_storage::~_Variant_storage()): Add constexpr.
1570         (_Variant_storage::_M_reset()): Likewise.
1571         (_Copy_ctor_base, _Move_ctor_base): Likewise.
1572         (_Copy_assign_base, _Move_assign_base): Likewise.
1573         (variant, swap): Likewise.
1574         * include/std/version (__cpp_lib_variant): Update value for
1575         C++20.
1576         * testsuite/20_util/optional/version.cc: Check for exact value
1577         in C++17.
1578         * testsuite/20_util/variant/87619.cc: Increase timeout for
1579         C++20 mode.
1580         * testsuite/20_util/variant/constexpr.cc: New test.
1581         * testsuite/20_util/variant/version.cc: New test.
1583 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
1585         * include/std/variant (__detail::__variant::__get_storage):
1586         Remove unused function.
1587         (__variant_construct_by_index): Set index after construction is
1588         complete. Rename to ...
1589         (__detail::__variant::__construct_by_index): ... this.
1590         (variant): Use new name for __variant_construct_by_index friend
1591         declaration. Remove __get_storage friend declaration.
1592         (variant::emplace): Use new name and remove try-blocks.
1594 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
1596         * include/std/variant (_Variant_storage::_M_storage()): Remove.
1597         (__detail::__variant::__get_storage): Remove.
1598         (variant): Remove friend declaration of __get_storage.
1600 2021-10-15  Jason Merrill  <jason@redhat.com>
1602         * testsuite/20_util/integer_comparisons/greater_equal_neg.cc:
1603         * testsuite/20_util/integer_comparisons/greater_neg.cc:
1604         * testsuite/20_util/integer_comparisons/less_equal_neg.cc:
1605         Adjust expected message.
1606         * testsuite/lib/prune.exp: Prune 'in constexpr expansion'.
1608 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
1610         * include/std/variant (__variant::__get(in_place_index_t<N>, U&&)):
1611         Rename to __get_n and remove first argument. Replace pair of
1612         overloads with a single function using 'if constexpr'.
1613         (__variant::__get(Variant&&)): Adjust to use __get_n.
1615 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
1617         * include/bits/fs_path.h (path(path&&)): Make unconditionally
1618         noexcept.
1619         (path::_S_convert(T)): Add condtional noexcept.
1621 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
1623         PR libstdc++/102743
1624         * include/bits/fs_path.h (path::_S_convert(T)): Fix condition
1625         for returning the same string unchanged.
1627 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
1629         * include/bits/regex.h: Check __cpp_inline_variables instead of
1630         __cplusplus.
1632 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
1634         * testsuite/20_util/is_layout_compatible/version.cc: Check
1635         correct macro.
1637 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
1639         * include/bits/stl_construct.h (_Construct): Use
1640         std::construct_at when constant evaluated.
1641         * include/std/optional (_Storage, _Optional_payload, optional):
1642         Add constexpr as specified by P2231R1.
1643         * include/std/version (__cpp_lib_optional): Update value for
1644         C++20.
1645         * testsuite/20_util/optional/requirements.cc: Check feature test
1646         macro.
1647         * testsuite/20_util/optional/constexpr/assign.cc: New test.
1648         * testsuite/20_util/optional/constexpr/cons/conv.cc: New test.
1649         * testsuite/20_util/optional/constexpr/modifiers.cc: New test.
1650         * testsuite/20_util/optional/constexpr/swap.cc: New test.
1651         * testsuite/20_util/optional/version.cc: New test.
1653 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
1655         * include/bits/fs_path.h (__detail::__is_contiguous): Add
1656         partial specializations for pointers and __normal_iterator.
1658 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
1660         * testsuite/27_io/filesystem/path/construct/102592.C: Moved to...
1661         * testsuite/27_io/filesystem/path/construct/102592.cc: ...here.
1662         * testsuite/28_regex/match_results/102667.C: Moved to...
1663         * testsuite/28_regex/match_results/102667.cc: ...here.
1665 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
1667         * include/bits/fs_path.h (__detail::__is_contiguous): New
1668         variable template to identify contiguous iterators.
1669         (__detail::__unified_char8_t): New alias template to decide when
1670         to treat char8_t as char without encoding conversion.
1671         (__detail::__effective_range(const basic_string<C,T>&)): Use
1672         std::char_traits<C> for returned string view.
1673         (__detail::__effective_range(const basic_string_view<C,T>&)):
1674         Likewise.
1675         (__detail::__effective_range(const Source&)): Use
1676         __is_contiguous to detect mode cases of contiguous iterators.
1677         Use __unified_char8_t to return a std::string instead of
1678         std::u8string.
1680 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
1682         PR libstdc++/102592
1683         * include/bits/fs_path.h (path::path(Iter, Iter, format))
1684         (path::append(Iter, Iter), path::concat(Iter, Iter)): Call
1685         __string_from_range directly, instead of two-argument overload
1686         of _S_convert.
1687         (path::_S_convert(Iter, Iter)): Remove.
1688         * testsuite/27_io/filesystem/path/construct/102592.C: New test.
1690 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
1692         * include/bits/c++config (__terminate): Add extern "C++".
1694 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
1696         * testsuite/20_util/tuple/comparison_operators/overloaded.cc:
1697         Restore test for operator<.
1698         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
1699         Adjust expected errors for C++20.
1701 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
1703         PR libstdc++/101960
1704         * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Define as
1705         defauled.
1706         * testsuite/20_util/tuple/cons/101960.cc: Check tuples with
1707         array elements before the last element.
1709 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
1711         * include/bits/stl_iterator_base_funcs.h (__advance): Add
1712         deleted overload to improve diagnostics.
1713         (__distance): Likewise.
1715 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
1717         * include/bits/atomic_timed_wait.h: Remove unused header.
1718         * include/bits/c++config (std:__terminate): Define.
1719         * include/bits/semaphore_base.h: Remove <exception> and use
1720         __terminate instead of terminate.
1721         * include/bits/std_thread.h: Likewise.
1722         * libsupc++/eh_terminate.cc (std::terminate): Use qualified-id
1723         to call __cxxabiv1::__terminate.
1725 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
1727         * include/bits/regex.h (basic_regex::assign(Iter, Iter)): Avoid
1728         std::__to_address by using poitner directly or using base()
1729         member of __normal_iterator.
1731 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
1733         * testsuite/18_support/numeric_limits/lowest.cc: Use
1734         numeric_limits<T>::is_integer instead of is_integral<T>::value.
1736 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
1738         PR libstdc++/89927
1739         * include/bits/regex.h (basic_regex(const _Ch_type*, size_t)):
1740         Add __glibcxx_requires_string_len assertion.
1741         (basic_regex::assign(InputIterator, InputIterator)): Add
1742         __glibcxx_requires_valid_range assertion.
1743         * include/bits/regex_scanner.tcc (_Scanner::_M_advance())
1744         (_Scanner::_M_scan_normal()): Use string literal in assertions.
1746 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
1748         PR libstdc++/102667
1749         * include/bits/regex.h (match_result::empty()): Optimize by
1750         calling the base function directly.
1751         (match_results::end()): Check _Base_type::empty() not empty().
1752         * testsuite/28_regex/match_results/102667.C: New test.
1754 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1756         PR libstdc++/98725
1757         * testsuite/18_support/numeric_limits/lowest.cc: Remove use of
1758         _GLIBCXX_USE_WCHAR_T.
1759         * testsuite/18_support/numeric_limits/min_max.cc: Replace use of
1760         _GLIBCXX_USE_WCHAR_T with checks for WCHAR_MIN and WCHAR_MAX.
1761         * testsuite/20_util/from_chars/1_neg.cc: Remove use of
1762         _GLIBCXX_USE_WCHAR_T.
1763         * testsuite/20_util/function_objects/searchers.cc: Likewise. Use
1764         char_traits<wchar_t>::length instead of wcslen.
1765         * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
1766         Likewise.
1767         * testsuite/20_util/is_arithmetic/value.cc: Likewise.
1768         * testsuite/20_util/is_compound/value.cc: Likewise.
1769         * testsuite/20_util/is_floating_point/value.cc: Likewise.
1770         * testsuite/20_util/is_fundamental/value.cc: Likewise.
1771         * testsuite/20_util/is_integral/value.cc: Likewise.
1772         * testsuite/20_util/is_signed/value.cc: Likewise.
1773         * testsuite/20_util/is_unsigned/value.cc: Likewise.
1774         * testsuite/20_util/is_void/value.cc: Likewise.
1775         * testsuite/20_util/make_signed/requirements/typedefs-1.cc:
1776         Likewise.
1777         * testsuite/20_util/make_signed/requirements/typedefs-2.cc:
1778         Likewise.
1779         * testsuite/20_util/make_signed/requirements/typedefs-3.cc:
1780         Likewise.
1781         * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
1782         Likewise.
1783         * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
1784         Likewise.
1785         * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
1786         Likewise.
1787         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc:
1788         Likewise.
1789         * testsuite/20_util/to_chars/3.cc: Likewise.
1790         * testsuite/20_util/type_identity/requirements/typedefs.cc:
1791         Likewise.
1792         * testsuite/21_strings/basic_string/hash/debug.cc: Likewise.
1793         * testsuite/21_strings/basic_string/hash/hash.cc: Likewise.
1794         * testsuite/21_strings/basic_string/literals/types-char8_t.cc:
1795         Likewise.
1796         * testsuite/21_strings/basic_string/literals/types.cc: Likewise.
1797         * testsuite/21_strings/basic_string/literals/values-char8_t.cc:
1798         Likewise.
1799         * testsuite/21_strings/basic_string/literals/values.cc:
1800         Likewise.
1801         * testsuite/21_strings/basic_string/modifiers/64422.cc:
1802         Likewise.
1803         * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
1804         Likewise.
1805         * testsuite/21_strings/basic_string/requirements/citerators.cc:
1806         Likewise.
1807         * testsuite/21_strings/basic_string/requirements/typedefs.cc:
1808         Likewise.
1809         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
1810         Likewise.
1811         * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
1812         Likewise.
1813         * testsuite/21_strings/basic_string_view/literals/types.cc:
1814         Likewise.
1815         * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
1816         Likewise.
1817         * testsuite/21_strings/basic_string_view/literals/values.cc:
1818         Likewise.
1819         * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
1820         Likewise.
1821         * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
1822         * testsuite/21_strings/char_traits/requirements/constexpr_functions.cc:
1823         Likewise.
1824         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
1825         Likewise.
1826         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
1827         Likewise.
1828         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Likewise.
1829         * testsuite/25_algorithms/fill/4.cc: Likewise.
1830         * testsuite/25_algorithms/fill_n/1.cc: Likewise.
1831         * testsuite/experimental/functional/searchers.cc: Likewise. Use
1832         char_traits<wchar_t>::length instead of wcslen.
1833         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1834         Likewise.
1835         * testsuite/experimental/string_view/literals/types-char8_t.cc:
1836         Likewise.
1837         * testsuite/experimental/string_view/literals/types.cc:
1838         Likewise.
1839         * testsuite/experimental/string_view/literals/values-char8_t.cc:
1840         Likewise.
1841         * testsuite/experimental/string_view/literals/values.cc:
1842         Likewise.
1843         * testsuite/experimental/string_view/range_access/wchar_t/1.cc:
1844         Likewise.
1845         * testsuite/experimental/string_view/requirements/typedefs.cc:
1846         Likewise.
1847         * testsuite/experimental/string_view/typedefs.cc: Likewise.
1848         * testsuite/ext/vstring/range_access.cc: Likewise.
1849         * testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
1850         Likewise.
1851         * testsuite/std/concepts/concepts.lang/concept.arithmetic/signed_integral.cc:
1852         Likewise.
1853         * testsuite/std/concepts/concepts.lang/concept.arithmetic/unsigned_integral.cc:
1854         Likewise.
1855         * testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc:
1856         Likewise.
1857         * testsuite/tr1/4_metaprogramming/is_compound/value.cc:
1858         Likewise.
1859         * testsuite/tr1/4_metaprogramming/is_floating_point/value.cc:
1860         Likewise.
1861         * testsuite/tr1/4_metaprogramming/is_fundamental/value.cc:
1862         Likewise.
1863         * testsuite/tr1/4_metaprogramming/is_integral/value.cc:
1864         Likewise.
1865         * testsuite/tr1/4_metaprogramming/is_signed/value.cc: Likewise.
1866         * testsuite/tr1/4_metaprogramming/is_unsigned/value.cc:
1867         Likewise.
1868         * testsuite/tr1/4_metaprogramming/is_void/value.cc: Likewise.
1869         * testsuite/tr1/6_containers/hash/24799.cc: Likewise.
1871 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1873         PR libstdc++/98725
1874         * include/std/ostream (operator<<(basic_ostream<char, Tr>&, wchar_t))
1875         (operator<<(basic_ostream<char, Tr>&, const wchar_t*)): Always
1876         define as deleted. Do not check _GLIBCXX_USE_WCHAR_T.
1878 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1880         PR libstdc++/98725
1881         * include/bits/locale_conv.h (wstring_convert, wbuffer_convert):
1882         Define unconditionally. Do not check _GLIBCXX_USE_WCHAR_T.
1884 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1886         PR libstdc++/98725
1887         * include/c_global/cstddef [!_GLIBCXX_USE_WCHAR_T]
1888         (__byte_operand<wchar_t>): Define specialization.
1889         * include/std/type_traits (__make_signed<wchar_t>)
1890         (__make_unsigned<wchar_t>): Remove redundant check for
1891         __WCHAR_TYPE__ being defined.
1892         * include/tr1/type_traits [!_GLIBCXX_USE_WCHAR_T]
1893         (__is_integral_helper<wchar_t>): Likewise.
1895 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1897         PR libstdc++/98725
1898         * include/ext/rc_string_base.h [!_GLIBCXX_USE_WCHAR_T]
1899         (__rc_string_base<wchar_t>): Define member function.
1900         * include/ext/vstring.h [!_GLIBCXX_USE_WCHAR_T]
1901         (hash<__gnu_cxx::__wvstring>): Define specialization.
1902         * include/ext/vstring_fwd.h [!_GLIBCXX_USE_WCHAR_T] (__wvstring)
1903         (__wsso_string, __wrc_string): Declare typedefs.
1905 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1907         PR libstdc++/98725
1908         * include/bits/char_traits.h (char_traits<wchar_t>): Define
1909         explicit specialization unconditionally.
1910         * include/bits/basic_string.h (hash<wstring>): Define
1911         unconditionally. Do not check _GLIBCXX_USE_WCHAR_T.
1912         * include/bits/stringfwd.h (wstring): Likewise.
1913         * include/debug/string (wstring): Likewise.
1914         * include/experimental/string_view (experimental::wstring_view)
1915         (hash<experimental::wstring_view>): Likewise.
1916         * include/std/string (pmr::wstring, hash<pmr::wstring>):
1917         Likewise.
1918         * include/std/string_view (wstring_view, hash<wstring_view>):
1919         Likewise.
1921 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1923         * testsuite/27_io/basic_filebuf/close/81256.cc: Moved to...
1924         * testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc: ...here.
1926 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1928         * testsuite/22_locale/conversions/buffer/1.cc: Check
1929         _GLIBCXX_USE_WCHAR_T.
1930         * testsuite/22_locale/conversions/buffer/3.cc: Likewise. Add
1931         test using char16_t.
1932         * testsuite/22_locale/conversions/string/1.cc: Check
1933         _GLIBCXX_USE_WCHAR_T.
1934         * testsuite/27_io/filesystem/path/generic/generic_string.cc:
1935         Likewise.
1936         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
1937         Likewise.
1938         * testsuite/27_io/filesystem/path/native/alloc.cc: Likewise.
1939         * testsuite/27_io/filesystem/path/native/string-char8_t.cc:
1940         Likewise.
1941         * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
1942         * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
1943         Likewise.
1944         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
1945         Likewise.
1946         * testsuite/experimental/filesystem/path/native/alloc.cc:
1947         Likewise.
1948         * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
1949         Likewise.
1950         * testsuite/experimental/filesystem/path/native/string.cc:
1951         Likewise.
1953 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1955         * testsuite/26_numerics/bit/bit.rotate/rotr.cc:
1956         * testsuite/util/testsuite_common_types.h:
1958 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1960         * testsuite/18_support/numeric_limits/40856.cc: Replace use of
1961         _GLIBCXX_USE_INT128.
1962         * testsuite/18_support/numeric_limits/dr559.cc: Likewise.
1963         * testsuite/18_support/numeric_limits/lowest.cc: Likewise.
1964         * testsuite/18_support/numeric_limits/max_digits10.cc: Likewise.
1965         * testsuite/20_util/is_floating_point/value.cc: Likewise.
1966         * testsuite/20_util/is_integral/value.cc: Likewise.
1967         * testsuite/20_util/is_signed/value.cc: Likewise.
1968         * testsuite/20_util/is_unsigned/value.cc: Likewise.
1969         * testsuite/20_util/make_signed/requirements/typedefs-1.cc:
1970         Likewise.
1971         * testsuite/20_util/make_signed/requirements/typedefs-2.cc:
1972         Likewise.
1973         * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
1974         Likewise.
1975         * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
1976         Likewise.
1977         * testsuite/20_util/type_identity/requirements/typedefs.cc:
1978         Likewise.
1979         * testsuite/26_numerics/bit/bit.count/countl_one.cc: Likewise.
1980         * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
1981         * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
1982         * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
1983         * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
1984         * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: Likewise.
1985         * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: Likewise.
1986         * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: Likewise.
1987         * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc:
1988         Likewise.
1989         * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
1991 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1993         * include/bits/hashtable_policy.h (_Select1st): Replace use of
1994         std::get.
1995         (_Select2nd): Remove.
1996         (_NodeBuilder::_S_build): Use _NodeGenerator::__node_type
1997         typedef instead of deducing it. Remove unnecessary piecewise
1998         construction.
1999         (_ReuseOrAllocNode): Make __node_type public.
2000         (_Map_base): Adjust partial specialization to be able to extract
2001         the mapped_type without using tuple_element.
2002         (_Map_base::at): Define inline
2003         * testsuite/23_containers/unordered_map/requirements/53339.cc:
2004         Remove XFAIL.
2005         * testsuite/23_containers/unordered_multimap/requirements/53339.cc:
2006         Likewise.
2008 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
2010         * include/bits/hashtable.h: Move static assertion to destructor.
2011         * include/bits/hashtable_policy.h: Deduce value type from node
2012         type without instantiating it.
2014 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
2016         * src/c++11/limits.cc: Fail if __cpp_inline_variables is
2017         defined.
2019 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
2021         PR libstdc++/92546
2022         * include/bits/ranges_algobase.h: Replace <iterator> with a
2023         subset of the headers it includes.
2025 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
2027         * include/experimental/deque (erase, erase_if): Revert changes
2028         to avoid debug mode overhead.
2029         * include/experimental/map (erase, erase_if): Likewise.
2030         * include/experimental/set (erase, erase_if): Likewise.
2031         * include/experimental/unordered_map (erase, erase_if):
2032         Likewise.
2033         * include/experimental/unordered_set (erase, erase_if):
2034         Likewise.
2035         * include/experimental/vector (erase, erase_if): Likewise.
2036         * include/std/deque (erase, erase_if): Likewise.
2037         * include/std/map (erase, erase_if): Likewise.
2038         * include/std/set (erase, erase_if): Likewise.
2039         * include/std/unordered_map (erase, erase_if): Likewise.
2040         * include/std/unordered_set (erase, erase_if): Likewise.
2041         * include/std/vector (erase, erase_if): Likewise.
2043 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
2045         * include/std/chrono (__detail::__units_suffix_misc): New
2046         helper function.
2047         (__detail::__units_suffix): Likewise.
2048         (chrono::operator<<(basic_ostream&, const duration&)): Define.
2049         * testsuite/20_util/duration/io.cc: New test.
2051 2021-10-07  Jonathan Wakely  <jwakely@redhat.com>
2053         * include/Makefile.am: Add new header.
2054         * include/Makefile.in: Regenerate.
2055         * include/std/chrono (duration, time_point, system_clock)
2056         (steady_clock, high_resolution_clock, chrono_literals, sys_time)
2057         (file_clock, file_time): Move to ...
2058         * include/bits/chrono.h: New file.
2059         * include/bits/atomic_futex.h: Include new header instead of
2060         <chrono>.
2061         * include/bits/atomic_timed_wait.h: Likewise.
2062         * include/bits/fs_fwd.h: Likewise.
2063         * include/bits/semaphore_base.h: Likewise.
2064         * include/bits/this_thread_sleep.h: Likewise.
2065         * include/bits/unique_lock.h: Likewise.
2066         * include/experimental/bits/fs_fwd.h: Likewise.
2067         * include/experimental/chrono: Likewise.
2068         * include/experimental/io_context: Likewise.
2069         * include/experimental/netfwd: Likewise.
2070         * include/experimental/timer: Likewise.
2071         * include/std/condition_variable: Likewise.
2072         * include/std/mutex: Likewise.
2073         * include/std/shared_mutex: Likewise.
2075 2021-10-07  Jonathan Wakely  <jwakely@redhat.com>
2077         PR libstdc++/102377
2078         * include/bits/atomic_wait.h (__waiter_pool_base:_S_align):
2079         Hardcode to 64 instead of using non-constant constant.
2081 2021-10-07  Jonathan Wakely  <jwakely@redhat.com>
2083         * include/bits/erase_if.h (__erase_nodes_if): Remove redundant
2084         __niter_base calls.
2085         * include/std/string (erase, erase_if): Likewise.
2086         * include/std/deque (erase, erase_if): Access non-debug
2087         container directly.
2088         * include/std/map (erase, erase_if): Likewise.
2089         * include/std/set (erase, erase_if): Likewise.
2090         * include/std/unordered_map (erase, erase_if): Likewise.
2091         * include/std/unordered_set (erase, erase_if): Likewise.
2092         * include/std/vector (erase, erase_if): Likewise.
2093         * include/experimental/deque (erase, erase_if): Likewise.
2094         * include/experimental/map (erase, erase_if): Likewise.
2095         * include/experimental/set (erase, erase_if): Likewise.
2096         * include/experimental/unordered_map (erase, erase_if):
2097         Likewise.
2098         * include/experimental/unordered_set (erase, erase_if):
2099         Likewise.
2100         * include/experimental/vector (erase, erase_if): Likewise.
2102 2021-10-06  Jonathan Wakely  <jwakely@redhat.com>
2104         * include/Makefile.am: Add new headers.
2105         * include/Makefile.in: Regenerate.
2106         * include/std/functional: Include <bits/move_only_function.h>.
2107         * include/std/version (__cpp_lib_move_only_function): Define.
2108         * include/bits/mofunc_impl.h: New file.
2109         * include/bits/move_only_function.h: New file.
2110         * testsuite/20_util/move_only_function/call.cc: New test.
2111         * testsuite/20_util/move_only_function/cons.cc: New test.
2112         * testsuite/20_util/move_only_function/move.cc: New test.
2113         * testsuite/20_util/move_only_function/version.cc: New test.
2115 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2117         * testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc:
2118         New test.
2119         * testsuite/23_containers/span/trivially_copyable.cc: New test.
2121 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2123         * include/bits/utility.h (__is_in_place_type_v): Define
2124         variable template to detect in_place_type_t specializations.
2125         (__is_in_place_type): Replace class template with alias
2126         template using __is_in_place_type_v.
2127         * include/std/any (any(T&&)): Check __is_in_place_type first and
2128         avoid instantiating is_copy_constructible unnecessarily.
2130 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2132         * testsuite/20_util/integer_comparisons/greater.cc: New test.
2134 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2136         * testsuite/27_io/basic_ostream/inserters_other/char/volatile_ptr.cc:
2137         Check result matches non-volatile pointer.
2139 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2141         PR c++/102535
2142         * testsuite/20_util/is_trivially_constructible/value.cc: Adjust
2143         expected value for C++20.
2145 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2147         * include/bits/std_function.h (_Any_data::_M_access): Add
2148         noexcept.
2149         (_Function_base::_Base_manager::_M_get_pointer): Likewise.
2150         (_Function_base::_Base_manager::_M_not_empty_function):
2151         Likewise.
2153 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2155         * include/std/ostream (operator<<(const volatile void*)):
2156         Add new overload, as per P1147R1.
2157         * testsuite/27_io/basic_ostream/inserters_other/char/volatile_ptr.cc:
2158         New test.
2160 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
2162         * include/bits/stl_queue.h
2163         (__cpp_lib_adaptor_iterator_pair_constructor): Set to correct
2164         value.
2165         * include/bits/stl_stack.h
2166         (__cpp_lib_adaptor_iterator_pair_constructor): Likewise.
2167         * include/std/version
2168         (__cpp_lib_adaptor_iterator_pair_constructor): Likewise.
2169         * testsuite/23_containers/queue/cons_from_iters.cc: Update
2170         expected value.
2171         * testsuite/23_containers/stack/cons_from_iters.cc: Likewise.
2173 2021-10-04  Jonathan Wakely  <jwakely@redhat.com>
2175         * include/bits/forward_list.h (forward_list): Use non-deduced
2176         context for allocator parameter of allocator-extended copy and
2177         move constructors.
2178         * include/bits/stl_bvector.h (vector<bool>): Likewise.
2179         * include/bits/stl_deque.h (deque): Likewise.
2180         * include/bits/stl_list.h (list): Likewise.
2181         * include/bits/stl_map.h (map): Likewise.
2182         * include/bits/stl_multimap.h (multimap): Likewise.
2183         * include/bits/stl_multiset.h (multiset): Likewise.
2184         * include/bits/stl_set.h (set): Likewise.
2185         * include/bits/stl_vector.h (vector): Likewise.
2186         * include/bits/stl_queue.h (queue, priority_queue): Do not
2187         constrain Allocator template parameter of deduction guides that
2188         have a Container parameter.
2189         * include/bits/stl_stack.h (stack): Likewise.
2190         * include/debug/deque (__gnu_debug::deque): Use non-deduced
2191         context for allocator parameter of allocator-extended copy and
2192         move constructors.
2193         * include/debug/list (__gnu_debug::list): Likewise.
2194         * include/debug/map.h (__gnu_debug::map): Likewise.
2195         * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
2196         * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
2197         * include/debug/set.h (__gnu_debug::set): Likewise.
2198         * include/debug/vector (__gnu_debug::vector): Likewise.
2199         * testsuite/23_containers/deque/cons/deduction.cc: Test class
2200         template argument deduction with non-deduced allocator
2201         arguments.
2202         * testsuite/23_containers/forward_list/cons/deduction.cc:
2203         Likewise.
2204         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
2205         * testsuite/23_containers/map/cons/deduction.cc: Likewise.
2206         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
2207         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
2208         * testsuite/23_containers/priority_queue/deduction.cc: Likewise.
2209         * testsuite/23_containers/queue/deduction.cc: Likewise.
2210         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
2211         * testsuite/23_containers/stack/deduction.cc: Likewise.
2212         * testsuite/23_containers/unordered_map/cons/deduction.cc:
2213         Likewise.
2214         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
2215         Likewise.
2216         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
2217         Likewise.
2218         * testsuite/23_containers/unordered_set/cons/deduction.cc:
2219         Likewise.
2220         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
2222 2021-10-04  Jonathan Wakely  <jwakely@redhat.com>
2224         * include/std/variant (__detail::__variant::__as): Add missing
2225         noexcept to first overload.
2227 2021-10-04  Jonathan Wakely  <jwakely@redhat.com>
2229         * include/bits/basic_string.h (basic_string(nullptr_t)): Define
2230         as deleted.
2231         (operator=(nullptr_t)): Likewise.
2232         * include/bits/cow_string.h (basic_string(nullptr_t)): Likewise.
2233         (operator=(nullptr_t)): Likewise.
2234         * include/std/string_view (basic_string_view(nullptr_t)):
2235         Likewise.
2236         * testsuite/21_strings/basic_string/cons/char/nullptr.cc: New test.
2237         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
2238         Change dg-warning to dg-error.
2239         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
2240         Likewise.
2242 2021-10-02  Jonathan Wakely  <jwakely@redhat.com>
2244         * src/c++17/fs_ops.cc (create_directory): Fix typo in enum name.
2245         * src/filesystem/ops-common.h (__last_system_error): Add
2246         explicit cast to avoid narrowing conversion.
2247         (do_space): Fix type in function name.
2249 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2251         PR libstdc++/102100
2252         * include/Makefile.am (c++config.h): Define
2253         _GLIBCXX_VERBOSE_ASSERT based on configure output.
2254         * include/Makefile.in: Regenerate.
2255         * include/bits/c++config: Fix condition for verbose assertions.
2257 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2259         PR libstdc++/92546
2260         * include/bits/erase_if.h (__erase_nodes_if): Use __niter_base to
2261         unwrap debug iterators.
2262         * include/bits/refwrap.h: Do not error if included in C++03.
2263         * include/bits/stl_algo.h (__remove_if): Move to ...
2264         * include/bits/stl_algobase.h (__remove_if): ... here.
2265         * include/std/deque (erase, erase_if): Use __remove_if instead of
2266         remove and remove_if.
2267         * include/std/string (erase, erase_if): Likewise.
2268         * include/std/vector (erase, erase_if): Likewise.
2270 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2272         PR libstdc++/66742
2273         * include/bits/list.tcc (list::sort()): Use _Scratch_list
2274         objects for splicing and merging.
2275         (list::sort(StrictWeakOrdering)): Likewise.
2276         * include/bits/stl_list.h (__detail::_Scratch_list): New type.
2277         * src/c++98/list.cc (_List_node_base::_M_transfer): Add
2278         assertion for --enable-libstdcxx-debug library.
2279         * testsuite/23_containers/list/operations/66742.cc: New test.
2281 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2283         PR libstdc++/100612
2284         * include/std/thread (__pmf_expects_stop_token): New variable
2285         template to detect a pointer to member function that needs a
2286         stop_token to be added to the arguments.
2287         (jthread::__S_create): Use __pmf_expects_stop_token.
2288         (jthread::__S_create_pmf): New function.
2289         * testsuite/30_threads/jthread/100612.cc: New test.
2291 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2293         * include/bits/stl_queue.h
2294         (__cpp_lib_adaptor_iterator_pair_constructor): Define for C++23, as
2295         per P1425R4.
2296         (queue(InputIterator, InputIterator)): Likewise.
2297         (queue(InputIterator, InputIterator, const Alloc&)): Likewise.
2298         * include/bits/stl_stack.h
2299         (__cpp_lib_adaptor_iterator_pair_constructor): Likewise.
2300         (stack(InputIterator, InputIterator)): Likewise.
2301         (stack(InputIterator, InputIterator, const Alloc&)): Likewise.
2302         * include/std/version (__cpp_lib_adaptor_iterator_pair_constructor):
2303         Define.
2304         * testsuite/23_containers/queue/cons_from_iters.cc: New test.
2305         * testsuite/23_containers/stack/cons_from_iters.cc: New test.
2307 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2309         * include/bits/stl_queue.h (priority_queue): Add
2310         allocator-extended overloads for constructors taking iterator.
2311         * testsuite/23_containers/priority_queue/lwg3506.cc: New test.
2313 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2315         * include/bits/stl_queue.h (priority_queue): Construct sequence
2316         from iterators when no sequence argument is present (LWG 3529).
2317         * testsuite/23_containers/priority_queue/lwg3529.cc: New test.
2319 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2321         * include/bits/stl_queue.h (priority_queue): Constrain
2322         constructors with InputIterator parameters (LWG 3522).
2323         * testsuite/23_containers/priority_queue/lwg3522.cc: New test.
2325 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2327         * include/bits/ranges_base.h (ranges::distance): Split overload
2328         into two (LWG 3392).
2329         * testsuite/24_iterators/range_operations/lwg3392.cc: New test.
2331 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2333         * testsuite/30_threads/thread/cons/3.cc: Remove derivation from
2334         std::unary_function.
2335         * testsuite/30_threads/thread/cons/4.cc: Likewise.
2336         * testsuite/30_threads/thread/cons/5.cc: Likewise.
2338 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2340         * testsuite/ext/pb_ds/example/basic_multimap.cc: Remove
2341         unnecesary derivation from std::unary_function.
2342         * testsuite/ext/pb_ds/example/erase_if.cc: Likewise.
2343         * testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Likewise.
2344         * testsuite/ext/pb_ds/example/hash_initial_size.cc: Likewise.
2345         * testsuite/ext/pb_ds/example/hash_load_set_change.cc: Likewise.
2346         * testsuite/ext/pb_ds/example/hash_mod.cc: Likewise.
2347         * testsuite/ext/pb_ds/example/hash_resize.cc: Likewise.
2348         * testsuite/ext/pb_ds/example/hash_shift_mask.cc: Likewise.
2349         * testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc:
2350         Likewise.
2351         * testsuite/ext/pb_ds/example/ranged_hash.cc: Likewise.
2352         * testsuite/ext/pb_ds/example/store_hash.cc: Likewise.
2354 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2356         * src/c++11/functexcept.cc (__throw_out_of_range_fmt): Do not
2357         expand the format string for freestanding, or non-vebose, or if
2358         we're just going to abort anyway.
2359         * src/c++11/snprintf_lite.cc: Remove unused header and
2360         declaration.
2362 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2364         * include/std/variant (__do_visit): Use variant_npos instead of
2365         literal -1 that requires a narrowing conversion.
2367 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2369         PR libstdc++/99327
2370         * src/filesystem/ops-common.h (__unsupported): New function to
2371         return a suitable error code for missing functionality.
2372         (posix::off_t): New typedef.
2373         (posix::*): Set errno to ENOSYS instead of ENOTSUP for no-op
2374         fallback implementations.
2375         (do_copy_file): Replace uses of errc::not_supported.
2376         * src/c++17/fs_ops.cc (fs::copy, fs::copy_file, create_dir)
2377         (fs::create_directory, fs::create_directory_symlink)
2378         (fs::create_hard_link, fs::create_symlink, fs::current_path)
2379         (fs::equivalent, do_stat, fs::file_size, fs::hard_link_count)
2380         (fs::last_write_time, fs::permissions, fs::read_symlink):
2381         Replace uses of errc::not_supported.
2382         (fs::resize_file): Qualify off_t.
2383         * src/filesystem/ops.cc (fs::copy, fs::copy_file, create_dir)
2384         (fs::create_directory, fs::create_directory_symlink)
2385         (fs::create_hard_link, fs::create_symlink, fs::current_path)
2386         (fs::equivalent, do_stat, fs::file_size, fs::last_write_time)
2387         (fs::permissions, fs::read_symlink, fs::system_complete):
2388         Replace uses of errc::not_supported.
2389         (fs::resize_file): Qualify off_t and enable unconditionally.
2390         * testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
2392 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2394         * src/filesystem/ops-common.h (last_error): New helper function.
2395         (filesystem::do_space): Use last_error().
2396         * src/c++17/fs_ops.cc (fs::absolute, fs::create_hard_link)
2397         (fs::equivalent, fs::remove, fs::temp_directory_path): Use
2398         last_error().
2399         * src/filesystem/ops.cc (fs::create_hard_link)
2400         (fs::remove, fs::temp_directory_path): Likewise.
2402 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2404         * include/std/type_traits (__conditional): New class template
2405         for internal uses of std::conditional.
2406         (__conditional_t): New alias template to replace conditional_t.
2407         (__and_, __or_, __result_of_memfun, __result_of_memobj): Use
2408         __conditional_t instead of conditional::type.
2409         * include/bits/atomic_base.h (__atomic_impl::_Diff): Likewise.
2410         * include/bits/hashtable.h (_Hashtable): Likewise.
2411         * include/bits/hashtable_policy.h (_Node_iterator, _Insert_base)
2412         (_Local_iterator): Likewise. Replace typedefs with
2413         using-declarations.
2414         * include/bits/move.h (move_if_noexcept): Use __conditional_t.
2415         * include/bits/parse_numbers.h (_Select_int_base): Likewise.
2416         * include/bits/ptr_traits.h (__make_not_void): Likewise.
2417         * include/bits/ranges_algobase.h (__copy_or_move_backward)
2418         (__copy_or_move): Likewise.
2419         * include/bits/ranges_base.h (borrowed_iterator_t): Likewise.
2420         * include/bits/ranges_util.h (borrowed_subrange_t): Likewise.
2421         * include/bits/regex_compiler.h (_BracketMatcher): Use
2422         __conditional_t. Replace typedefs with using-declarations.
2423         * include/bits/shared_ptr_base.h (__shared_count): Use
2424         __conditional_t.
2425         * include/bits/stl_algobase.h (__copy_move, __copy_move_backward):
2426         Likewise.
2427         * include/bits/stl_iterator.h (__detail::__clamp_iter_cat)
2428         (reverse_iterator::iterator_concept)
2429         (__make_move_if_noexcept_iterator)
2430         (iterator_traits<common_iterator<_It, _Sent>>)
2431         (iterator_traits<counted_iterator<_It>>): Likewise.
2432         * include/bits/stl_pair.h (_PCC, pair::operator=): Likewise.
2433         * include/bits/stl_tree.h (_Rb_tree::insert_return_type)
2434         (_Rb_tree::_M_clone_node): Likewise.
2435         * include/bits/unique_ptr.h (unique_ptr(unique_ptr<U,E>&&)):
2436         Likewise.
2437         * include/bits/uses_allocator.h (__uses_alloc): Likewise.
2438         (__is_uses_allocator_predicate): Likewise.
2439         * include/debug/functions.h (__foreign_iterator_aux2): Likewise.
2440         * include/experimental/any (any::_Manager, __any_caster):
2441         Likewise.
2442         * include/experimental/executor (async_completion): Likewise.
2443         * include/experimental/functional (__boyer_moore_base_t):
2444         Likewise.
2445         * include/std/any (any::_Manager): Likewise.
2446         * include/std/functional (__boyer_moore_base_t): Likewise.
2447         * include/std/ranges (borrowed_iterator_t)
2448         (borrowed_subrange_t, __detail::__maybe_present_t)
2449         (__detail::__maybe_const_t, split_view): Likewise.
2450         * include/std/tuple (__empty_not_final, tuple::operator=):
2451         Likewise.
2452         * include/std/variant (__detail::__variant::__get_t): Likewise.
2454 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2456         PR libstdc++/78113
2457         * include/std/variant (__do_visit): Use a switch when we have a
2458         single variant with a small number of alternatives.
2460 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2462         PR libstdc++/90943
2463         * include/std/variant (__cpp_lib_variant): Update value.
2464         (__detail::__variant::__as): New helpers implementing the
2465         as-variant exposition-only function templates.
2466         (visit, visit<R>): Use __as to upcast the variant parameters.
2467         * include/std/version (__cpp_lib_variant): Update value.
2468         * testsuite/20_util/variant/visit_inherited.cc: New test.
2470 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2472         * include/bits/stl_iterator.h (__normal_iterator): Simplify
2473         converting constructor and do not require _Container::pointer.
2475 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2477         * include/bits/cow_string.h [_GLIBCXX_FULLY_DYNAMIC_STRING]
2478         (basic_string(basic_string&&)): Add noexcept and avoid
2479         allocation, by sharing rep with the rvalue string.
2481 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2483         * include/bits/stl_iterator.h (common_iterator::__arrow_proxy)
2484         (common_iterator::__postfix_proxy): Add noexcept.
2486 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2488         PR libstdc++/94418
2489         * include/bits/stl_iterator.h (reverse_iterator): Use
2490         conditional noexcept on constructors and assignment operators.
2491         * testsuite/24_iterators/reverse_iterator/noexcept.cc: New test.
2493 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2495         PR libstdc++/100153
2496         * include/bits/vector.tcc (vector<bool>::_M_shrink_to_fit()):
2497         When size() is zero just deallocate and reset.
2499 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2501         PR libstdc++/96733
2502         * include/bits/stl_algo.h (clamp): Use std::min and std::max.
2504 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2506         * include/bits/regex.h (basic_regex::multiline): Define for
2507         non-strict C++11 and C++14 modes.
2508         * include/bits/regex_constants.h (regex_constants::multiline):
2509         Add _GLIBCXX_RESOLVE_LIB_DEFECTS comment.
2511 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2513         * testsuite/25_algorithms/is_permutation/2.cc: Include <iterator>.
2515 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2517         * include/bits/stream_iterator.h (istream_iterator): Add
2518         noexcept to constructors and non-throwing member functions and
2519         friend functions.
2520         (ostream_iterator): Likewise.
2522 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2524         * include/bits/boost_concept_check.h (_Is_vector_bool_iterator):
2525         New trait to identify vector<bool> iterators, including debug
2526         ones.
2527         (_ForwardIteratorReferenceConcept): Add default template
2528         argument using _Is_vector_bool_iterator and use it in partial
2529         specialization for the vector<bool> cases.
2530         (_Mutable_ForwardIteratorReferenceConcept): Likewise.
2531         * testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error
2532         line number.
2534 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
2536         * include/bits/list.tcc (list::merge): Remove call to size() and
2537         try-catch block. Use _Finalize_merge instead.
2538         * include/bits/stl_list.h (list::_Finalize_merge): New
2539         scope guard type to update _M_size members after a merge.
2541 2021-09-30  Jonathan Wakely  <jwakely@redhat.com>
2543         * include/bits/regex.h (basic_regex::multiline): Fix #if
2544         condition.
2546 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
2548         * include/bits/regex.h (basic_regex::multiline): Define constant
2549         for C++17.
2550         * include/bits/regex_constants.h (regex_constants::multiline):
2551         Define constant for C++17.
2552         (regex_constants::__multiline): Define duplicate constant for
2553         internal use in C++11 and C++14.
2554         * include/bits/regex_executor.h (_Executor::_M_match_multiline()):
2555         New member function.
2556         (_Executor::_M_is_line_terminator(_CharT)): New member function.
2557         (_Executor::_M_at_begin(), _Executor::_M_at_end()): Use new
2558         member functions to support multiline matches.
2559         * testsuite/28_regex/algorithms/regex_match/multiline.cc: New test.
2561 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
2563         * include/bits/regex_compiler.h (_Compiler::_S_validate): New
2564         function.
2565         * include/bits/regex_compiler.tcc (_Compiler::_Compiler): Use
2566         _S_validate to check flags.
2567         * include/bits/regex_error.h (_S_grammar): New error code for
2568         internal use.
2569         * testsuite/28_regex/basic_regex/ctors/grammar.cc: New test.
2571 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
2573         PR libstdc++/84110
2574         * include/bits/regex_error.h (regex_constants::_S_null): New
2575         error code for internal use.
2576         * include/bits/regex_scanner.tcc (_Scanner::_M_scan_normal()):
2577         Check for null character.
2578         * testsuite/28_regex/basic_regex/84110.cc: New test.
2580 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
2582         * include/bits/regex.h (__detail::__is_contiguous_iter): Move
2583         here from <bits/regex_compiler.h>.
2584         (basic_regex::_M_compile): New function to compile an NFA from
2585         a regular expression string.
2586         (basic_regex::basic_regex): Use _M_compile instead of delegating
2587         to other constructors.
2588         (basic_regex::operator=(const basic_regex&)): Define as
2589         defaulted.
2590         (basic_regex::operator=(initializer_list<C>)): Use _M_compile.
2591         (basic_regex::assign(const basic_regex&)): Use copy assignment.
2592         (basic_regex::assign(basic_regex&&)): Use move assignment.
2593         (basic_regex::assign(const C*, flag_type)): Use _M_compile
2594         instead of constructing a temporary string.
2595         (basic_regex::assign(const C*, size_t, flag_type)): Likewise.
2596         (basic_regex::assign(const basic_string<C,T,A>&, flag_type)):
2597         Use _M_compile instead of constructing a temporary basic_regex.
2598         (basic_regex::assign(InputIter, InputIter, flag_type)): Avoid
2599         constructing a temporary string for contiguous iterators of the
2600         right value type.
2601         * include/bits/regex_compiler.h (__is_contiguous_iter): Move to
2602         <bits/regex.h>.
2603         (__enable_if_contiguous_iter, __disable_if_contiguous_iter)
2604         (__compile_nfa): Remove.
2605         * testsuite/28_regex/basic_regex/assign/exception_safety.cc: New
2606         test.
2607         * testsuite/28_regex/basic_regex/ctors/char/other.cc: New test.
2609 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2611         * include/bits/atomic_timed_wait.h (__platform_wait_until_impl):
2612         Return false for ETIMEDOUT and true otherwise.
2614 2021-09-28  François Dumont  <fdumont@gcc.gnu.org>
2616         * testsuite/20_util/default_delete/48631_neg.cc: Adapt dg-prune-output message
2617         to also match message with '__8' in it.
2619 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2621         * include/bits/regex_automaton.h (_NFA_base::_SizeT): Remove.
2622         * include/bits/regex_compiler.h (_Compiler::_IterT): Remove.
2623         * include/bits/regex_compiler.tcc: Likewise.
2624         * include/bits/regex_scanner.h (_Scanner::_IterT): Remove.
2625         * include/bits/regex_scanner.tcc: Likewise.
2627 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2629         * include/bits/regex_compiler.tcc: Add line break in empty while
2630         statement.
2631         * include/bits/regex_executor.tcc: Avoid unused parameter
2632         warning.
2634 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2636         * include/bits/regex.h (basic_regex, swap): Add noexcept to
2637         non-throwing functions.
2638         * include/bits/regex_automaton.h (_State_base, _State)
2639         (_NFA_base): Likewise.
2640         * include/bits/regex_compiler.h (_Compiler): Likewise.
2641         * include/bits/regex_error.h (regex_error::code()): Likewise.
2642         * include/bits/regex_scanner.h (_Scanner): Likewise.
2644 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2646         * include/bits/atomic_wait.h (_GLIBCXX_HAVE_PLATFORM_WAIT):
2647         Define before first attempt to check it.
2649 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2651         * testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc:
2652         Do not check non-default constructible sequences when
2653         _GLIBCXX_CONCEPT_CHECKS is defined.
2654         * testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc:
2655         Likewise.
2656         * testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc:
2657         Likewise.
2658         * testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc:
2659         Likewise.
2660         * testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc:
2661         Likewise.
2662         * testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc:
2663         Likewise.
2665 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2667         * testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc:
2668         Do not test implicit allocator rebinding when _GLIBCXX_CONCEPT_CHECKS
2669         is defined.
2670         * testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc:
2671         Likewise.
2672         * testsuite/23_containers/list/requirements/explicit_instantiation/3.cc:
2673         Likewise.
2674         * testsuite/23_containers/list/requirements/explicit_instantiation/5.cc:
2675         Likewise.
2676         * testsuite/23_containers/map/requirements/explicit_instantiation/3.cc:
2677         Likewise.
2678         * testsuite/23_containers/map/requirements/explicit_instantiation/5.cc:
2679         Likewise.
2680         * testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc:
2681         Likewise.
2682         * testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc:
2683         Likewise.
2684         * testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc:
2685         Likewise.
2686         * testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc:
2687         Likewise.
2688         * testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
2689         Likewise.
2690         * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
2691         Likewise.
2692         * testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc:
2693         Likewise.
2694         * testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc:
2695         Likewise.
2696         * testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc:
2697         Likewise.
2698         * testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc:
2699         Likewise.
2700         * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc:
2701         Likewise.
2702         * testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc:
2703         Likewise.
2705 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2707         * include/bits/boost_concept_check.h (_ForwardIteratorConcept)
2708         (_BidirectionalIteratorConcept, _RandomAccessIteratorConcept):
2709         Check result types of iterator operations.
2710         (_Mutable_ForwardIteratorConcept): Check that iterator's
2711         reference type is a reference to its value type.
2712         (_Mutable_BidirectionalIteratorConcept): Do not require the
2713         value type to be assignable.
2714         (_Mutable_RandomAccessIteratorConcept): Likewise.
2715         * testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error
2716         line number.
2718 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2720         * testsuite/25_algorithms/copy/34595.cc: Add missing operation
2721         for type used as an iterator.
2722         * testsuite/25_algorithms/unique_copy/check_type.cc: Likewise.
2724 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2726         * testsuite/20_util/is_nothrow_swappable/value.h: Use custom
2727         comparison function for priority_queue of type with no
2728         relational operators.
2729         * testsuite/20_util/is_swappable/value.h: Likewise.
2730         * testsuite/24_iterators/output/concept.cc: Add operator< to
2731         type used in set.
2733 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2735         * include/bits/boost_concept_check.h (_OutputIteratorConcept):
2736         Use a function to preserve value category of the type.
2737         * include/bits/stl_algobase.h (copy, move, fill_n): Use a
2738         reference as the second argument for _OutputIteratorConcept.
2739         (copy_backward, move_backward): Use _OutputIteratorConcept
2740         instead of _ConvertibleConcept.
2742 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2744         * include/bits/stl_iterator.h (pointer_traits): Define partial
2745         specialization for __normal_iterator.
2746         * testsuite/24_iterators/normal_iterator/to_address.cc: New test.
2748 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2750         * include/bits/move.h (forward(remove_reference_t<T>&&)):
2751         Improve text of static_assert.
2752         * testsuite/20_util/forward/c_neg.cc: Adjust dg-error.
2753         * testsuite/20_util/forward/f_neg.cc: Likewise.
2755 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
2757         PR libstdc++/102499
2758         * include/bits/fs_path.h (path::begin, path::end): Add noexcept
2759         to declarations, to match definitions.
2761 2021-09-24  Jonathan Wakely  <jwakely@redhat.com>
2763         * include/bits/range_access.h (cbegin, cend): Remove redundant
2764         'inline' specifier.
2766 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
2768         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
2769         Remove dg-error lines for C++20-only errors.
2771 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
2773         * testsuite/19_diagnostics/headers/system_error/93151.cc:
2774         Disable PCH.
2776 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
2778         * src/c++11/system_error.cc (system_error_category) [_WIN32]:
2779         Map Windows error codes to generic POSIX error numbers. Use
2780         FormatMessage instead of strerror.
2781         * testsuite/19_diagnostics/error_category/system_category.cc:
2782         Adjust for new behaviour on Windows.
2784 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
2786         * src/c++11/system_error.cc (generic_error_category): Define
2787         class and virtual functions as 'final'.
2788         (generic_error_category::equivalent(int, const error_condition&)):
2789         Override.
2790         (system_error_category): Define class and virtual functions as
2791         'final'.
2792         (system_error_category::equivalent(int, const error_condition&)):
2793         Override.
2794         (generic_category_instance, system_category_instance): Use
2795         constinit union to make the objects immortal.
2797 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
2799         PR libstdc++/102425
2800         * src/c++11/system_error.cc
2801         (system_error_category::default_error_condition): Add 0 to
2802         switch.
2803         * testsuite/19_diagnostics/error_category/102425.cc: New test.
2805 2021-09-17  Jonathan Wakely  <jwakely@redhat.com>
2807         * include/bits/fs_path.h (path::iterator): Add noexcept to all
2808         member functions and friend functions.
2809         (distance): Add noexcept.
2810         (advance): Add noexcept and inline.
2811         * include/experimental/bits/fs_path.h (path::iterator):
2812         Add noexcept to all member functions.
2814 2021-09-17  Jonathan Wakely  <jwakely@redhat.com>
2816         PR libstdc++/102270
2817         * include/std/tuple (_Tuple_impl): Add constexpr to constructor
2818         missed in previous patch.
2819         * testsuite/20_util/tuple/cons/102270.C: Moved to...
2820         * testsuite/20_util/tuple/cons/102270.cc: ...here.
2821         * testsuite/util/testsuite_allocator.h (SimpleAllocator): Add
2822         constexpr to constructor so it can be used for C++20 tests.
2824 2021-09-17  Jonathan Wakely  <jwakely@redhat.com>
2826         * testsuite/26_numerics/valarray/dr630-3.C: Moved to...
2827         * testsuite/26_numerics/valarray/dr630-3.cc: ...here.
2828         * testsuite/27_io/basic_iostream/cons/16251.C: Moved to...
2829         * testsuite/27_io/basic_iostream/cons/16251.cc: ...here.
2831 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2833         * src/Makefile.am (stamp-debug): Add all Makefiles as
2834         prerequisites.
2835         * src/Makefile.in: Regenerate.
2837 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2839         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Increase
2840         timeout factor to 3.
2841         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
2843 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2845         * doc/xml/manual/using.xml: Generalize to apply to more than
2846         just -std=c++11.
2847         * doc/html/manual/using_macros.html: Regenerate.
2849 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2851         * include/std/optional (nullptr_t): Make constructor noexcept.
2853 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2855         * include/bits/fs_path.h (advance): Remove non-deducible
2856         template parameter.
2858 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2860         PR libstdc++/102270
2861         * include/std/tuple (_Head_base, _Tuple_impl): Add
2862         _GLIBCXX20_CONSTEXPR to allocator-extended constructors.
2863         (tuple<>::swap(tuple&)): Add _GLIBCXX20_CONSTEXPR.
2864         * testsuite/20_util/tuple/cons/102270.C: New test.
2866 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2868         PR libstdc++/102280
2869         * include/std/span (span(Range&&)): Add constraint to deduction
2870         guide.
2872 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2874         * src/c++98/Makefile.am: Use CXXCOMPILE not LTCXXCOMPILE.
2875         * src/c++98/Makefile.in: Regenerate.
2877 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2879         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2880         (to_string): Add noexcept if the type width is 32 bits or less.
2882 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2884         * include/bits/unique_ptr.h (__uniq_ptr_impl::_M_ptr)
2885         (__uniq_ptr_impl::_M_deleter): Add noexcept.
2887 2021-09-16  Thomas Rodgers  <rodgert@twrodgers.com>
2889         PR libstdc++/101761
2890         * testsuite/29_atomics/atomic_ref/wait_notify.cc (test): Use
2891         va and vb as arguments to wait/notify, remove unused bb local.
2893 2021-09-15  Hugo Beauzée-Luyssen  <hugo@beauzee.fr>
2895         * crossconfig.m4: Check for TLS support on mingw.
2896         * configure: Regenerate.
2898 2021-09-13  Jason Merrill  <jason@redhat.com>
2900         * include/std/version: Define __cpp_lib_hardware_interference_size.
2901         * libsupc++/new: Define hardware interference size variables.
2903 2021-09-10  Jonathan Wakely  <jwakely@redhat.com>
2905         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2906         Fix invalid hostname to only match the .invalid TLD.
2908 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2910         * include/bits/atomic_base.h (__atomic_base<P*>::compare_exchange_weak):
2911         Add new functions.
2912         * include/std/atomic (atomic<T*>::compare_exchange_weak): Use
2913         it.
2915 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2917         * include/std/atomic: Tweak whitespace.
2919 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2921         PR c++/102177
2922         * include/bits/atomic_base.h (__is_valid_cmpexch_failure_order):
2923         New function to check if a memory order is valid for the failure
2924         case of compare exchange operations.
2925         (__atomic_base<I>::compare_exchange_weak): Simplify assertions
2926         by using __is_valid_cmpexch_failure_order.
2927         (__atomic_base<I>::compare_exchange_strong): Likewise.
2928         (__atomic_base<P*>::compare_exchange_weak): Likewise.
2929         (__atomic_base<P*>::compare_exchange_strong): Likewise.
2930         (__atomic_impl::compare_exchange_weak): Add assertion.
2931         (__atomic_impl::compare_exchange_strong): Likewise.
2932         * include/std/atomic (atomic::compare_exchange_weak): Likewise.
2933         (atomic::compare_exchange_strong): Likewise.
2935 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2937         * include/std/functional (invoke_r): Define.
2938         * include/std/version (__cpp_lib_invoke_r): Define.
2939         * testsuite/20_util/function_objects/invoke/version.cc: Check
2940         for __cpp_lib_invoke_r as well as __cpp_lib_invoke.
2941         * testsuite/20_util/function_objects/invoke/4.cc: New test.
2943 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2945         PR libstdc++/98421
2946         * include/std/span (span(Iter, size_type), span(Iter, Iter)):
2947         Add valid range checks.
2948         * testsuite/23_containers/span/cons_1_assert_neg.cc: New test.
2949         * testsuite/23_containers/span/cons_2_assert_neg.cc: New test.
2951 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2953         * configure.ac: Fix checks for F_GETFL, F_SETFL and O_NONBLOCK.
2954         * configure: Regenerate.
2956 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2958         * src/c++11/system_error.cc (error_category::~error_category()):
2959         Remove noexcept-specifier.
2960         (system_error::~system_error()): Likewise.
2961         * testsuite/19_diagnostics/error_category/noexcept.cc: New test.
2962         * testsuite/19_diagnostics/system_error/noexcept.cc: New test.
2964 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2966         PR libstdc++/102074
2967         * include/bits/atomic_timed_wait.h (__timed_waiter_pool)
2968         [!_GLIBCXX_HAVE_PLATFORM_TIMED_WAIT]: Add missing return.
2970 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2972         * include/experimental/internet (__make_resolver_error_code):
2973         Handle EAI_SYSTEM errors.
2974         (basic_resolver_results): Use __make_resolver_error_code. Use
2975         Glibc NI_MAXHOST and NI_MAXSERV values for buffer sizes.
2977 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2979         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2980         Try other service if "http" fails.
2982 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2984         * testsuite/17_intro/names.cc: Undefine some more names used
2985         by Solaris system headers.
2987 2021-08-30  Jason Merrill  <jason@redhat.com>
2989         PR c++/96286
2990         * testsuite/30_threads/promise/requirements/lwg3466.cc:
2991         Remove dg-prune-outputs.
2993 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
2995         * include/bits/alloc_traits.h (allocator_traits): Add explicit
2996         specialization for allocator<void>. Improve doxygen comments.
2997         * include/bits/allocator.h (allocator<void>): Restore for the
2998         versioned namespace.
2999         (allocator<void>::construct, allocator<void>::destroy): Remove.
3000         * include/ext/extptr_allocator.h (_Extptr_allocator<void>):
3001         Add default constructor and converting constructor.
3003 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
3005         * include/bits/stl_uninitialized.h: Fix typo in comment.
3007 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
3009         PR libstdc++/99876
3010         * src/c++17/fs_ops.cc (fs::absolute): Call non-throwing form,
3011         to avoid unnecessary current_path() call.
3013 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
3015         * include/bits/std_function.h (function::function(F&&)): Give
3016         name to defaulted template parameter, to improve diagnostics.
3017         Use markdown for more doxygen comments.
3019 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
3021         * include/bits/std_function.h (function): Adjust doxygen
3022         comments.
3023         * include/bits/unique_ptr.h (make_unique_for_overwrite):
3024         Change parameter name to match doxygen comment.
3026 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
3028         * include/bits/std_function.h (_function_base::_Base_manager):
3029         Replace _M_init_functor with a function template using a
3030         forwarding reference, and a pair of _M_create function
3031         templates. Reuse _M_create for the clone operation.
3032         (function::_Decay_t): New alias template.
3033         (function::_Callable): Simplify by using _Decay.
3034         (function::function(F)): Change parameter to forwarding
3035         reference, as per LWG 2447. Add noexcept-specifier. Simplify
3036         constraints.
3037         (function::operator=(F&&)): Add noexcept-specifier.
3038         * testsuite/20_util/function/cons/lwg2774.cc: New test.
3039         * testsuite/20_util/function/cons/noexcept.cc: New test.
3041 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
3043         * include/bits/std_function.h (function::function(F)): Add
3044         static assertions to check constructibility requirements.
3046 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
3048         PR libstdc++/100285
3049         * configure.ac: Check for O_NONBLOCK.
3050         * configure: Regenerate.
3051         * include/experimental/internet: Include <ws2tcpip.h> for
3052         Windows.  Use preprocessor conditions around more constants.
3053         * include/experimental/socket: Use preprocessor conditions
3054         around more constants.
3055         * testsuite/experimental/net/internet/resolver/base.cc: Only use
3056         constants when the corresponding C macro is defined.
3057         * testsuite/experimental/net/socket/basic_socket.cc: Likewise.
3058         * testsuite/experimental/net/socket/socket_base.cc: Likewise.
3059         Make preprocessor checks more fine-grained.
3061 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
3063         * testsuite/17_intro/names.cc: Check 'sz'.
3065 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
3067         * testsuite/17_intro/names.cc: Adjust for Windows.
3069 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
3071         * include/std/valarray: Uglify 'func' parameters.
3072         * testsuite/17_intro/names.cc: Add 'func' to checks.
3074 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
3076         PR libstdc++/102064
3077         * include/bits/stl_uninitialized.h (_GLIBCXX_USE_ASSIGN_FOR_INIT):
3078         Define macro to check conditions for optimizing trivial cases.
3079         (__check_constructible): New function to do static assert.
3080         (uninitialized_copy, uninitialized_fill, uninitialized_fill_n):
3081         Use new macro.
3082         * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
3083         Adjust dg-error pattern.
3084         * testsuite/23_containers/vector/cons/89164.cc: Likewise. Add
3085         C++17-specific checks from 89164_c++17.cc.
3086         * testsuite/23_containers/vector/cons/89164_c++17.cc: Removed.
3087         * testsuite/20_util/specialized_algorithms/uninitialized_copy/102064.cc:
3088         New test.
3089         * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/102064.cc:
3090         New test.
3091         * testsuite/20_util/specialized_algorithms/uninitialized_fill/102064.cc:
3092         New test.
3093         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/102064.cc:
3094         New test.
3096 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
3098         PR libstdc++/102048
3099         * include/ext/rope (rope::erase(size_type)): Remove broken
3100         function.
3102 2021-08-24  Jonathan Wakely  <jwakely@redhat.com>
3104         * doc/xml/manual/status_cxx2020.xml: Update table.
3105         * doc/html/manual/status.html: Regenerate.
3107 2021-08-24  Jonathan Wakely  <jwakely@redhat.com>
3109         * include/std/type_traits (is_layout_compatible): Define.
3110         (is_corresponding_member): Define.
3111         * include/std/version (__cpp_lib_is_layout_compatible): Define.
3112         * testsuite/20_util/is_layout_compatible/is_corresponding_member.cc:
3113         New test.
3114         * testsuite/20_util/is_layout_compatible/value.cc: New test.
3115         * testsuite/20_util/is_layout_compatible/version.cc: New test.
3116         * testsuite/20_util/is_pointer_interconvertible/with_class.cc:
3117         New test.
3118         * testsuite/23_containers/span/layout_compat.cc: Do not use real
3119         std::is_layout_compatible trait if available.
3121 2021-08-24  Jonathan Wakely  <jwakely@redhat.com>
3123         * src/c++11/cxx11-shim_facets.cc: Fix mismatched class-key in
3124         explicit instantiation definitions.
3126 2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
3128         * include/std/ranges (basic_istream_view): Add default template
3129         argument.
3130         * testsuite/std/ranges/istream_view.cc: Check it.
3132 2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
3134         * libsupc++/dyncast.cc (__dynamic_cast): Add __builtin_expect to
3135         precondition check.
3137 2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
3139         PR libstdc++/90787
3140         * testsuite/util/testsuite_fs.h (permissions_are_testable):
3141         Define as inline.
3143 2021-08-20  Jonathan Wakely  <jwakely@redhat.com>
3145         PR libstdc++/90787
3146         * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
3147         Use new __gnu_test::permissions_are_testable() function.
3148         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
3149         Likewise.
3150         * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
3151         * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
3152         * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
3153         * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
3154         * testsuite/27_io/filesystem/operations/status.cc: Likewise.
3155         * testsuite/27_io/filesystem/operations/symlink_status.cc:
3156         Likewise.
3157         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
3158         Likewise.
3159         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3160         Likewise.
3161         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
3162         Likewise.
3163         * testsuite/experimental/filesystem/operations/exists.cc:
3164         Likewise.
3165         * testsuite/experimental/filesystem/operations/is_empty.cc:
3166         Likewise.
3167         * testsuite/experimental/filesystem/operations/remove.cc:
3168         Likewise.
3169         * testsuite/experimental/filesystem/operations/remove_all.cc:
3170         Likewise.
3171         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3172         Likewise.
3173         * testsuite/util/testsuite_fs.h (__gnu_test::permissions_are_testable):
3174         New function to guess whether testing permissions will work.
3176 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3178         * doc/xml/manual/status_cxx2020.xml: Move row  earlier in table.
3179         * doc/html/manual/status.html: Regenerate.
3181 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3183         * doc/doxygen/user.cfg.in: Update to Doxygen 1.9.2
3185 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3187         PR libstdc++/101965
3188         * include/std/charconv (__to_chars_i): Remove redundant check.
3190 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3192         PR libstdc++/101960
3193         * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Use base
3194         class' move constructor. Define as defaulted for versioned
3195         namespace.
3196         * testsuite/20_util/tuple/cons/101960.cc: New test.
3198 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3200         PR libstdc++/100139
3201         * doc/xml/manual/status_cxx2020.xml: Add P1739R4 to status table.
3202         * doc/html/manual/status.html: Regenerate.
3204 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3206         * include/bits/shared_ptr.h: Add @since and @headerfile tags.
3207         * include/bits/unique_ptr.h: Add @headerfile tags.
3209 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3211         * src/filesystem/ops-common.h (filesystem::file_time): Improve
3212         overflow check by using system_clock::duration::max().
3214 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
3216         * include/bits/stl_tree.h: Tweak whitespace.
3218 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
3220         * include/bits/unique_ptr.h (default_delete): Add @since tag.
3221         (unique_ptr, unique_ptr<T[]>): Likewise. Improve @brief.
3222         (make_unique, make_unique_for_overwrite): Likewise. Add @tparam,
3223         @param, and @returns.
3224         (_MakeUniq): Move to __detail namespace. Add alias template
3225         helpers.
3227 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
3229         * include/bits/stl_function.h: Improve doxygen comments.
3231 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
3233         * doc/doxygen/user.cfg.in (PREDEFINED): Enable doxygen
3234         processing for C++20 components and components that depend on
3235         compiler features.
3236         * include/bits/stl_algo.h (random_shuffle): Use @deprecated.
3237         * include/std/type_traits: Improve doxygen comments for C++20
3238         traits.
3240 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
3242         * include/ext/type_traits.h (__promote_2, __promote_3)
3243         (__promote_4): Redfine as alias templates using __promoted_t.
3244         * include/std/complex (__promote_2): Remove partial
3245         specializations for std::complex.
3247 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
3249         * include/bits/stl_algo.h (min(initializer_list<T>))
3250         (min(initializer_list<T>, Compare)): Call __min_element directly to
3251         avoid redundant debug checks for valid ranges.
3252         (max(initializer_list<T>), max(initializer_list<T>, Compare)):
3253         Likewise, for __max_element.
3254         (minmax(initializer_list<T>), minmax(initializer_list<T>, Compare)):
3255         Likewise, for __minmax_element.
3257 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
3259         * include/debug/deque (deque(size_type, const T&, const A&)):
3260         Prevent class template argument deduction and replace with a
3261         deduction guide.
3262         * include/debug/forward_list (forward_list(size_type, const T&, const A&)):
3263         Likewise.
3264         * include/debug/list (list(size_type, const T&, const A&)):
3265         Likewise.
3266         * include/debug/vector (vector(size_type, const T&, const A&)):
3267         Likewise.
3269 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
3271         * python/libstdcxx/v6/printers.py (StdBitReferencePrinter): Use
3272         'std::vector<bool>::reference' as type name, not _Bit_reference.
3273         (build_libstdcxx_dictionary): Register printers for vector<bool>
3274         types in debug mode too.
3275         * testsuite/libstdc++-prettyprinters/simple.cc: Adjust expected
3276         output for invalid _Bit_reference. Use vector<bool>::reference
3277         instead of _Bit_reference.
3278         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3280 2021-08-17  Thomas Schwinge  <thomas@codesourcery.com>
3282         * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose,
3283         continued.
3285 2021-08-17  Luc Michel  <lmichel@kalray.eu>
3286             Marc Poulhies  <mpoulhies@kalrayinc.com>
3288         * testsuite/lib/gdb-test.exp (gdb_version_check)
3289         (gdb_version_check_xmethods): Only check the GDB version for
3290         local native targets.
3292 2021-08-17  Antony Polukhin  <antoshkka@gmail.com>
3293             Jonathan Wakely  <jwakely@redhat.com>
3295         * include/bits/random.tcc (seed_seq::seed_seq): Reserve capacity
3296         if distance is O(1).
3297         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3298         line number.
3300 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
3302         * testsuite/26_numerics/random/seed_seq/cons/range.cc: Check
3303         construction from input iterators.
3305 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
3307         * python/libstdcxx/v6/printers.py (StdErrorCatPrinter): Remove.
3309 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
3311         PR libstdc++/101923
3312         * include/bits/std_function.h (function(function&&)): Check for
3313         non-empty parameter before doing any work.
3315 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
3317         * include/bits/cow_string.h (basic_string::contains): Do not
3318         define for -std=gnu++20.
3320 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
3322         * include/bits/ranges_util.h (__not_same_as): Rename to
3323         __different_from.
3324         * include/std/ranges (__not_same_as): Likewise.
3326 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
3328         * include/std/utility (exchange): Add noexcept-specifier.
3329         * testsuite/20_util/exchange/noexcept.cc: New test.
3331 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
3333         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Define.
3334         (build_libstdcxx_dictionary): Register printer for
3335         std::error_code and std::error_condition.
3336         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
3338 2021-08-16  Jonathan Wakely  <jwakely@redhat.com>
3340         PR libstdc++/101937
3341         * src/c++11/debug.cc (PrintContext::_M_indent): Replace with a
3342         static data member.
3343         (print_word): Use qualified-id to access it.
3345 2021-08-16  Jonathan Wakely  <jwakely@redhat.com>
3347         * python/Makefile.am [GLIBCXX_BUILD_DEBUG] (install-data-local):
3348         Install another copy of the GDB hook.
3349         * python/Makefile.in: Regenerate.
3351 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
3353         PR libstdc++/101870
3354         * include/c_global/cmath (hypot): Use __promoted_t.
3355         (lerp): Add new overload accepting any arithmetic types.
3356         * include/ext/type_traits.h (__promoted_t): New alias template.
3357         * testsuite/26_numerics/lerp.cc: Moved to...
3358         * testsuite/26_numerics/lerp/1.cc: ...here.
3359         * testsuite/26_numerics/lerp/constexpr.cc: New test.
3360         * testsuite/26_numerics/lerp/version.cc: New test.
3362 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
3364         * testsuite/26_numerics/lerp.cc: Add header name to #error.
3365         * testsuite/26_numerics/midpoint/integral.cc: Likewise.
3366         * testsuite/26_numerics/midpoint/version.cc: New test.
3368 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
3370         * include/experimental/random (experimental::randint): Add
3371         nodiscard attribute.
3373 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
3375         * src/c++98/locale_init.cc: Require C++11.
3376         * src/c++98/localename.cc: Likewise.
3377         * src/c++98/misc-inst.cc: Require C++98.
3379 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
3381         PR libstdc++/101866
3382         * testsuite/experimental/random/randint.cc: Loop and retry if
3383         reseed() produces the same sequence.
3385 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
3387         * include/std/type_traits (__cpp_lib_is_pointer_interconvertible)
3388         (is_pointer_interconvertible_base_of_v)
3389         (is_pointer_interconvertible_base_of): Define for C++20.
3390         * include/std/version (__cpp_lib_is_pointer_interconvertible):
3391         Define.
3392         * testsuite/23_containers/span/layout_compat.cc: Use correct
3393         feature test macro for std::is_layout_compatible_v.
3394         * testsuite/20_util/is_pointer_interconvertible/value.cc: New test.
3395         * testsuite/20_util/is_pointer_interconvertible/version.cc: New test.
3397 2021-08-09  Jonathan Wakely  <jwakely@redhat.com>
3399         * include/bits/regex.h (basic_regex::transform_primary): Use
3400         _GLIBCXX_STD_C::vector for local variable.
3401         * include/bits/regex.tcc (__regex_algo_impl): Use reference to
3402         _GLIBCXX_STD_C::vector base class of match_results.
3403         * include/bits/regex_automaton.tcc (_StateSeq:_M_clone): Use
3404         _GLIBCXX_STD_C::map and _GLIBCXX_STD_C::deque for local
3405         variables.
3406         * include/bits/regex_compiler.h (_BracketMatcher): Use
3407         _GLIBCXX_STD_C::vector for data members.
3408         * include/bits/regex_executor.h (_Executor): Likewise.
3409         * include/std/regex [_GLIBCXX_DEBUG]: Include <debug/vector>.
3411 2021-08-09  François Dumont  <fdumont@gcc.gnu.org>
3413         * include/debug/safe_container.h
3414         (_Safe_container(_Safe_container&&, const _Alloc&, std::true_type)): New.
3415         (_Safe_container(_Safe_container&&, const _Alloc&, std::false_type)): New.
3416         (_Safe_container(_Safe_container&&, const _Alloc&)): Use latters.
3418 2021-08-09  Jonathan Wakely  <jwakely@redhat.com>
3420         * testsuite/23_containers/unordered_map/cons/default.cc: Add
3421         equality comparison operators to allocator.
3422         * testsuite/23_containers/unordered_set/cons/default.cc:
3423         Likewise.
3425 2021-08-08  François Dumont  <fdumont@gcc.gnu.org>
3427         * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Replace 'failed_assertion'
3428         dg-prune-output reason with 'builtin_unreachable'.
3429         * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc: Likewise.
3430         * testsuite/25_algorithms/equal/debug/constexpr_neg.cc: Likewise.
3431         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc: Likewise.
3432         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc: Likewise.
3433         * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc: Likewise.
3434         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc: Likewise.
3435         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc: Likewise.
3436         * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc: Likewise.
3438 2021-08-08  Hans-Peter Nilsson  <hp@bitrange.com>
3440         * testsuite/std/ranges/iota/max_size_type.cc: Set
3441         dg-timeout-factor to 4.
3443 2021-08-06  Jonathan Wakely  <jwakely@redhat.com>
3445         * libsupc++/compare (compare_three_way, strong_order)
3446         (weak_order, partial_order, compare_strong_order_fallback)
3447         (compare_weak_order_fallback, compare_partial_order_fallback):
3448         Move nodiscard attributes to correct location.
3450 2021-08-05  Jonathan Wakely  <jwakely@redhat.com>
3452         PR libstdc++/101782
3453         * include/bits/ranges_base.h (ranges::begin, ranges::end)
3454         (ranges::rbegin, ranges::rend, ranges::size, ranges::ssize)
3455         (ranges::empty, ranges::data): Move attribute after the
3456         declarator-id instead of at the end of the declarator.
3457         * include/bits/stl_iterator.h (__gnu_cxx::__normal_iterator):
3458         Move attributes back to the start of the function declarator,
3459         but move the requires-clause to the end.
3460         (common_iterator): Move attribute after the declarator-id.
3461         * include/bits/stl_queue.h (queue): Remove ill-formed attributes
3462         from friend declaration that are not definitions.
3463         * include/std/ranges (views::all, views::filter)
3464         (views::transform, views::take, views::take_while,
3465         views::drop) (views::drop_while, views::join,
3466         views::lazy_split) (views::split, views::counted,
3467         views::common, views::reverse) (views::elements): Move
3468         attributes after the declarator-id.
3470 2021-08-05  Jonathan Wakely  <jwakely@redhat.com>
3472         * libsupc++/compare (partial_ordering, weak_ordering)
3473         (strong_ordering, is_eq, is_neq, is_lt, is_lteq, is_gt, is_gteq)
3474         (compare_three_way, strong_order, weak_order, partial_order)
3475         (compare_strong_order_fallback, compare_weak_order_fallback)
3476         (compare_partial_order_fallback, __detail::__synth3way): Add
3477         nodiscard attribute.
3478         * testsuite/18_support/comparisons/categories/zero_neg.cc: Add
3479         -Wno-unused-result to options.
3481 2021-08-05  Jonathan Wakely  <jwakely@redhat.com>
3483         PR libstdc++/101782
3484         * include/bits/ranges_base.h (ranges::begin, ranges::end)
3485         (ranges::rbegin, ranges::rend, ranges::size, ranges::ssize)
3486         (ranges::empty, ranges::data): Move attribute to the end of
3487         the declarator.
3488         * include/bits/stl_iterator.h (__gnu_cxx::__normal_iterator)
3489         (common_iterator): Likewise for non-member operator functions.
3490         * include/std/ranges (views::all, views::filter)
3491         (views::transform, views::take, views::take_while, views::drop)
3492         (views::drop_while, views::join, views::lazy_split)
3493         (views::split, views::counted, views::common, views::reverse)
3494         (views::elements): Likewise.
3495         * testsuite/std/ranges/access/101782.cc: New test.
3497 2021-08-04  Jonathan Wakely  <jwakely@redhat.com>
3499         * include/bits/forward_list.h: Add [[nodiscard]] to functions
3500         with no side-effects.
3501         * include/bits/stl_bvector.h: Likewise.
3502         * include/bits/stl_deque.h: Likewise.
3503         * include/bits/stl_list.h: Likewise.
3504         * include/bits/stl_queue.h: Likewise.
3505         * include/bits/stl_stack.h: Likewise.
3506         * include/bits/stl_vector.h: Likewise.
3507         * include/debug/deque: Likewise.
3508         * include/debug/forward_list: Likewise.
3509         * include/debug/list: Likewise.
3510         * include/debug/safe_iterator.h: Likewise.
3511         * include/debug/vector: Likewise.
3512         * include/std/array: Likewise.
3513         * testsuite/23_containers/array/creation/3_neg.cc: Use
3514         -Wno-unused-result.
3515         * testsuite/23_containers/array/debug/back1_neg.cc: Cast result
3516         to void.
3517         * testsuite/23_containers/array/debug/back2_neg.cc: Likewise.
3518         * testsuite/23_containers/array/debug/front1_neg.cc: Likewise.
3519         * testsuite/23_containers/array/debug/front2_neg.cc: Likewise.
3520         * testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc:
3521         Likewise.
3522         * testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc:
3523         Likewise.
3524         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
3525         Adjust dg-error line numbers.
3526         * testsuite/23_containers/deque/cons/clear_allocator.cc: Cast
3527         result to void.
3528         * testsuite/23_containers/deque/debug/invalidation/4.cc:
3529         Likewise.
3530         * testsuite/23_containers/deque/types/1.cc: Use
3531         -Wno-unused-result.
3532         * testsuite/23_containers/list/types/1.cc: Cast result to void.
3533         * testsuite/23_containers/priority_queue/members/7161.cc:
3534         Likewise.
3535         * testsuite/23_containers/queue/members/7157.cc: Likewise.
3536         * testsuite/23_containers/vector/59829.cc: Likewise.
3537         * testsuite/23_containers/vector/ext_pointer/types/1.cc:
3538         Likewise.
3539         * testsuite/23_containers/vector/ext_pointer/types/2.cc:
3540         Likewise.
3541         * testsuite/23_containers/vector/types/1.cc: Use
3542         -Wno-unused-result.
3544 2021-08-04  Jonathan Wakely  <jwakely@redhat.com>
3546         * include/bits/iterator_concepts.h (iter_move): Add
3547         [[nodiscard]].
3548         * include/bits/range_access.h (begin, end, cbegin, cend)
3549         (rbegin, rend, crbegin, crend, size, data, ssize): Likewise.
3550         * include/bits/ranges_base.h (ranges::begin, ranges::end)
3551         (ranges::cbegin, ranges::cend, ranges::rbegin, ranges::rend)
3552         (ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
3553         (ranges::empty, ranges::data, ranges::cdata): Likewise.
3554         * include/bits/stl_iterator.h (reverse_iterator, __normal_iterator)
3555         (back_insert_iterator, front_insert_iterator, insert_iterator)
3556         (move_iterator, move_sentinel, common_iterator)
3557         (counted_iterator): Likewise.
3558         * include/bits/stl_iterator_base_funcs.h (distance, next, prev):
3559         Likewise.
3560         * include/bits/stream_iterator.h (istream_iterator)
3561         (ostream_iterartor): Likewise.
3562         * include/bits/streambuf_iterator.h (istreambuf_iterator)
3563         (ostreambuf_iterator): Likewise.
3564         * include/std/ranges (views::single, views::iota, views::all)
3565         (views::filter, views::transform, views::take, views::take_while)
3566         (views::drop, views::drop_while, views::join, views::lazy_split)
3567         (views::split, views::counted, views::common, views::reverse)
3568         (views::elements): Likewise.
3569         * testsuite/20_util/rel_ops.cc: Use -Wno-unused-result.
3570         * testsuite/24_iterators/move_iterator/greedy_ops.cc: Likewise.
3571         * testsuite/24_iterators/normal_iterator/greedy_ops.cc:
3572         Likewise.
3573         * testsuite/24_iterators/reverse_iterator/2.cc: Likewise.
3574         * testsuite/24_iterators/reverse_iterator/greedy_ops.cc:
3575         Likewise.
3576         * testsuite/21_strings/basic_string/range_access/char/1.cc:
3577         Cast result to void.
3578         * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
3579         Likewise.
3580         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
3581         Likewise.
3582         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
3583         Likewise.
3584         * testsuite/23_containers/array/range_access.cc: Likewise.
3585         * testsuite/23_containers/deque/range_access.cc: Likewise.
3586         * testsuite/23_containers/forward_list/range_access.cc:
3587         Likewise.
3588         * testsuite/23_containers/list/range_access.cc: Likewise.
3589         * testsuite/23_containers/map/range_access.cc: Likewise.
3590         * testsuite/23_containers/multimap/range_access.cc: Likewise.
3591         * testsuite/23_containers/multiset/range_access.cc: Likewise.
3592         * testsuite/23_containers/set/range_access.cc: Likewise.
3593         * testsuite/23_containers/unordered_map/range_access.cc:
3594         Likewise.
3595         * testsuite/23_containers/unordered_multimap/range_access.cc:
3596         Likewise.
3597         * testsuite/23_containers/unordered_multiset/range_access.cc:
3598         Likewise.
3599         * testsuite/23_containers/unordered_set/range_access.cc:
3600         Likewise.
3601         * testsuite/23_containers/vector/range_access.cc: Likewise.
3602         * testsuite/24_iterators/customization_points/iter_move.cc:
3603         Likewise.
3604         * testsuite/24_iterators/istream_iterator/sentinel.cc:
3605         Likewise.
3606         * testsuite/24_iterators/istreambuf_iterator/sentinel.cc:
3607         Likewise.
3608         * testsuite/24_iterators/move_iterator/dr2061.cc: Likewise.
3609         * testsuite/24_iterators/operations/prev_neg.cc: Likewise.
3610         * testsuite/24_iterators/ostreambuf_iterator/2.cc: Likewise.
3611         * testsuite/24_iterators/range_access/range_access.cc:
3612         Likewise.
3613         * testsuite/24_iterators/range_operations/100768.cc: Likewise.
3614         * testsuite/26_numerics/valarray/range_access2.cc: Likewise.
3615         * testsuite/28_regex/range_access.cc: Likewise.
3616         * testsuite/experimental/string_view/range_access/char/1.cc:
3617         Likewise.
3618         * testsuite/experimental/string_view/range_access/wchar_t/1.cc:
3619         Likewise.
3620         * testsuite/ext/vstring/range_access.cc: Likewise.
3621         * testsuite/std/ranges/adaptors/take.cc: Likewise.
3622         * testsuite/std/ranges/p2259.cc: Likewise.
3624 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3626         * include/bits/random.tcc (linear_congruential_engine): Do not
3627         define static constexpr members when they are implicitly inline.
3628         * include/std/ratio (ratio, __ratio_multiply, __ratio_divide)
3629         (__ratio_add, __ratio_subtract): Likewise.
3630         * include/std/type_traits (integral_constant): Likewise.
3631         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3632         line number.
3634 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3636         * testsuite/util/testsuite_common_types.h: Replace uses of
3637         tr1::unordered_map and tr1::unordered_set with their C++11
3638         equivalents.
3639         * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust
3640         dg-error line number.
3641         * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
3642         * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
3643         Likewise.
3644         * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc:
3645         Likewise.
3646         * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
3647         Likewise.
3648         * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
3649         Likewise.
3650         * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
3651         Likewise.
3653 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3655         * include/std/memory_resource (polymorphic_allocator::delete_object):
3656         Call destructor directly instead of using destroy.
3657         (allocator_traits<polymorphic_allocator<T>>): Define partial
3658         specialization.
3660 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3662         * testsuite/20_util/function_objects/binders/3113.cc: Remove
3663         trailing whitespace.
3664         * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
3665         * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
3666         * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
3667         Likewise.
3668         * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
3669         * testsuite/25_algorithms/headers/algorithm/synopsis.cc:
3670         Likewise.
3671         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
3672         Likewise.
3673         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
3674         Likewise.
3676 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3678         * doc/xml/manual/evolution.xml: Document deprecation.
3679         * doc/html/*: Regenerate.
3680         * include/bits/c++config (_GLIBCXX14_DEPRECATED): Define.
3681         (_GLIBCXX14_DEPRECATED_SUGGEST): Define.
3682         * include/bits/stl_algo.h (random_shuffle): Deprecate for C++14
3683         and later.
3684         * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adjust
3685         for C++11 and C++14 changes to std::random_shuffle and
3686         std::shuffle.
3687         * testsuite/25_algorithms/random_shuffle/1.cc: Add options to
3688         use deprecated algorithms.
3689         * testsuite/25_algorithms/random_shuffle/59603.cc: Likewise.
3690         * testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
3691         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
3692         Likewise.
3693         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
3694         Likewise.
3696 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3698         * testsuite/23_containers/forward_list/operations/3.cc:
3699         Use lambda instead of std::bind2nd.
3700         * testsuite/20_util/function_objects/binders/3113.cc: Add
3701         options for testing deprecated features.
3702         * testsuite/20_util/pair/cons/99957.cc: Likewise.
3703         * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
3704         * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
3705         * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
3706         Likewise.
3707         * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
3708         * testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
3709         * testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
3710         * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
3711         * testsuite/20_util/unique_ptr/cons/auto_ptr.cc: Likewise.
3712         * testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc: Likewise.
3713         * testsuite/ext/pb_ds/example/priority_queue_erase_if.cc:
3714         Likewise.
3715         * testsuite/ext/pb_ds/example/priority_queue_split_join.cc:
3716         Likewise.
3717         * testsuite/lib/dg-options.exp (dg_add_options_using-deprecated):
3718         New proc.
3720 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3722         * include/bits/regex_executor.h (_State_info): Replace
3723         unique_ptr<bool[]> with array of bool.
3724         * include/bits/regex_executor.tcc: Likewise.
3725         * include/bits/regex_scanner.tcc: Replace std::strchr with
3726         __builtin_strchr.
3727         * include/std/regex: Replace standard headers with smaller
3728         internal ones.
3729         * testsuite/28_regex/traits/char/lookup_classname.cc: Include
3730         <string.h> for strlen.
3731         * testsuite/28_regex/traits/char/lookup_collatename.cc:
3732         Likewise.
3734 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
3736         * include/bits/locale_conv.h (__detail::_Scoped_ptr): Define new
3737         RAII class template.
3738         (wstring_convert, wbuffer_convert): Use __detail::_Scoped_ptr
3739         instead of unique_ptr.
3741 2021-08-02  Patrick Palka  <ppalka@redhat.com>
3743         PR libstdc++/101599
3744         * include/bits/ranges_algo.h (__reverse_copy_fn::operator()):
3745         Add missing std::move in return statement.
3746         (__partition_copy_fn::operator()): Rename templtae parameter
3747         _O2 to _Out2.  Uglify function parameters out_true and out_false.
3748         * include/bits/ranges_algobase.h (__copy_or_move): Add missing
3749         std::move to recursive call that unwraps a __normal_iterator
3750         output iterator.
3751         * testsuite/25_algorithms/copy/constrained.cc (test06): New test.
3752         * testsuite/25_algorithms/move/constrained.cc (test05): New test.
3754 2021-08-02  Patrick Palka  <ppalka@redhat.com>
3756         PR libstdc++/101589
3757         * include/std/ranges (lazy_split_view::_InnerIter::base): Make
3758         the const& overload unconstrained and return a const reference
3759         as per LWG 3533.  Make unconditionally noexcept.
3760         (elements_view::base): Revert accidental r12-569 change.
3761         (elements_view::_Iterator::base): Make the const& overload
3762         unconstrained and return a const reference as per LWG 3533.
3763         Make unconditionally noexcept.
3765 2021-08-02  Patrick Palka  <ppalka@redhat.com>
3767         PR libstdc++/101483
3768         * include/std/ranges (join_view::_Iterator::_Iterator): Add
3769         missing std::move.
3771 2021-08-02  Jonathan Wakely  <jwakely@redhat.com>
3773         PR libstdc++/101709
3774         * src/filesystem/ops-common.h (get_temp_directory_from_env):
3775         Add error_code parameter.
3776         * src/c++17/fs_ops.cc (fs::temp_directory_path): Pass error_code
3777         argument to get_temp_directory_from_env and check it.
3778         * src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
3780 2021-08-02  Jonathan Wakely  <jwakely@redhat.com>
3782         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
3783         Add dg-error for c++11_only target.
3785 2021-07-30  Jonathan Wakely  <jwakely@redhat.com>
3787         PR libstdc++/65018
3788         * configure.ac: Check for secure_getenv.
3789         * config.h.in: Regenerate.
3790         * configure: Regenerate.
3791         * src/filesystem/ops-common.h (get_temp_directory_from_env): New
3792         helper function to obtain path from the environment.
3793         * src/c++17/fs_ops.cc (fs::temp_directory_path): Use new helper.
3794         * src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
3795         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
3796         Print messages if test cannot be run.
3797         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3798         Likewise. Fix incorrect condition. Use "TMP" to work with
3799         Windows as well as POSIX.
3801 2021-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
3803         * src/c++17/memory_resource.cc: Use __exchange instead
3804         of std::exchange.
3806 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
3808         * include/experimental/optional (__throw_bad_optional_access):
3809         Replace GNU attribute with C++11 attribute.
3810         (optional::value, optional::value_or): Use if statements
3811         instead of conditional expressions.
3812         * include/std/optional (__throw_bad_optional_access)
3813         (optional::value, optional::value_or): Likewise.
3815 2021-07-27  Marek Polacek  <polacek@redhat.com>
3817         DR 1512
3818         PR c++/99701
3819         * testsuite/20_util/tuple/comparison_operators/overloaded.cc:
3820         Move a line...
3821         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
3822         ...here.  New test.
3824 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
3826         * include/bits/cow_string.h: Consistently use tab for
3827         indentation.
3829 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
3831         * include/Makefile.am: Add new header.
3832         * include/Makefile.in: Regenerate.
3833         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3834         (basic_string): Move definition of Copy-on-Write string to
3835         new file.
3836         * include/bits/basic_string.tcc: Likewise.
3837         * include/bits/cow_string.h: New file.
3839 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
3841         * include/std/algorithm: Do not include <utility>.
3842         * include/std/functional: Likewise.
3843         * include/std/regex: Include <bits/stl_pair.h> instead of
3844         <utility>.
3845         * include/debug/map.h: Likewise.
3846         * include/debug/multimap.h: Likewise.
3847         * include/debug/multiset.h: Likewise.
3848         * include/debug/set.h: Likewise.
3849         * include/debug/vector: Likewise.
3850         * include/bits/fs_path.h: Likewise.
3851         * include/bits/unique_ptr.h: Do not include <utility>.
3852         * include/experimental/any: Likewise.
3853         * include/experimental/executor: Likewise.
3854         * include/experimental/memory: Likewise.
3855         * include/experimental/optional: Likewise.
3856         * include/experimental/socket: Use __exchange instead
3857         of std::exchange.
3858         * src/filesystem/ops-common.h: Likewise.
3859         * testsuite/20_util/default_delete/48631_neg.cc: Adjust expected
3860         errors to not use a hardcoded line number.
3861         * testsuite/20_util/default_delete/void_neg.cc: Likewise.
3862         * testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc:
3863         Include <utility> for std::as_const.
3864         * testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constrained.cc:
3865         Likewise.
3866         * testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc:
3867         Likewise.
3868         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constrained.cc:
3869         Likewise.
3870         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
3871         Adjust dg-error line number.
3873 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
3875         * include/Makefile.am: Add bits/utility.h header.
3876         * include/Makefile.in: Regenerate.
3877         * include/bits/utility.h: New file.
3878         * include/std/utility (tuple_size, tuple_element): Move
3879         to new header.
3880         * include/std/type_traits (__is_tuple_like_impl<tuple<T...>>):
3881         Move to <tuple>.
3882         (_Index_tuple, _Build_index_tuple, integer_sequence): Likewise.
3883         (in_place_t, in_place_index_t, in_place_type_t): Likewise.
3884         * include/bits/ranges_util.h: Include new header instead of
3885         <utility>.
3886         * include/bits/stl_pair.h (tuple_size, tuple_element): Move
3887         partial specializations for std::pair here.
3888         (get): Move overloads for std::pair here.
3889         * include/std/any: Include new header instead of <utility>.
3890         * include/std/array: Likewise.
3891         * include/std/memory_resource: Likewise.
3892         * include/std/optional: Likewise.
3893         * include/std/variant: Likewise.
3894         * include/std/tuple: Likewise.
3895         (__is_tuple_like_impl<tuple<T...>>): Move here.
3896         (get) Declare overloads for std::array.
3897         * include/std/version (__cpp_lib_tuples_by_type): Change type
3898         to long.
3899         * testsuite/20_util/optional/84601.cc: Include <utility>.
3900         * testsuite/20_util/specialized_algorithms/uninitialized_fill/constrained.cc:
3901         Likewise.
3902         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
3903         Adjust dg-error line numbers.
3904         * testsuite/std/ranges/access/cbegin.cc: Include <utility>.
3905         * testsuite/std/ranges/access/cend.cc: Likewise.
3906         * testsuite/std/ranges/access/end.cc: Likewise.
3907         * testsuite/std/ranges/single_view.cc: Likewise.
3909 2021-07-23  Jonathan Wakely  <jwakely@redhat.com>
3911         * include/std/future: Include <bits/atomic_base.h> instead of
3912         <atomic>.
3914 2021-07-23  Jonathan Wakely  <jwakely@redhat.com>
3916         * include/bits/stl_relops.h: Update documentation comments.
3918 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3920         PR libstdc++/101583
3921         * include/bits/hashtable.h (_Hashtable): Replace mixin with
3922         _Enable_default_ctor. Construct it explicitly in all
3923         non-forwarding, non-defaulted constructors.
3924         * testsuite/23_containers/unordered_map/cons/default.cc: Check
3925         non-default constructors can be used.
3926         * testsuite/23_containers/unordered_set/cons/default.cc:
3927         Likewise.
3929 2021-07-22  David Edelsohn  <dje.gcc@gmail.com>
3931         * config/os/aix/os_defines.h (__LIBC_NO_CPP_MATH_OVERLOADS__): Define.
3933 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3935         PR libstdc++/94295
3936         * include/ext/new_allocator.h (_GLIBCXX_OPERATOR_NEW)
3937         (_GLIBCXX_OPERATOR_DELETE, _GLIBCXX_SIZED_DEALLOC): Define.
3938         (allocator::allocate, allocator::deallocate): Use new macros.
3940 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3942         PR libstdc++/101571
3943         * include/bits/ranges_uninitialized.h (_DestroyGuard): Change
3944         constructor parameter to reference and use addressof.
3945         * testsuite/util/testsuite_iterators.h: Define deleted operator&
3946         overloads for test iterators.
3948 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3950         * include/bits/std_function.h (_Function_base): Add
3951         default member initializers and define constructor as defaulted.
3952         (function::_M_invoker): Add default member initializer.
3954 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3956         PR libstdc++/100682
3957         * doc/xml/manual/debug_mode.xml: Update documentation about
3958         debug capability of std::array.
3959         * doc/html/*: Regenerate.
3960         * include/debug/array: New file.
3962 2021-07-21  Jonathan Wakely  <jwakely@redhat.com>
3964         PR libstdc++/101542
3965         * include/ext/rope (sequence_buffer): Add move constructor and
3966         move assignment operator.
3967         * testsuite/ext/rope/101542.cc: New test.
3969 2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
3971         PR libstdc++/101510
3972         * src/c++17/fs_ops.cc (fs::create_directories): Use status
3973         instead of symlink_status.
3974         * src/filesystem/ops.cc (fs::create_directories): Likewise.
3975         * testsuite/27_io/filesystem/operations/create_directories.cc:
3976         Check symlink to existing directory.
3977         * testsuite/27_io/filesystem/operations/create_directory.cc: Do
3978         not test with symlinks on Windows.
3979         * testsuite/experimental/filesystem/operations/create_directories.cc:
3980         Check symlink to existing directory.
3981         * testsuite/experimental/filesystem/operations/create_directory.cc:
3982         Do not test with symlinks on Windows.
3984 2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
3986         PR libstdc++/100863
3987         * include/bits/hashtable.h (_Hashtable): Conditionally delete
3988         default constructor by deriving from _Enable_special_members.
3989         * testsuite/23_containers/unordered_map/cons/default.cc: New test.
3990         * testsuite/23_containers/unordered_set/cons/default.cc: New test.
3992 2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
3994         PR libstdc++/101510
3995         * src/c++17/fs_ops.cc (create_dir): Adjust whitespace.
3996         * testsuite/27_io/filesystem/operations/create_directory.cc:
3997         Test creating directory with name of existing symlink to
3998         directory.
3999         * testsuite/experimental/filesystem/operations/create_directory.cc:
4000         Likewise.
4002 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
4004         * include/std/tuple (get<I>): Add deleted overload for bad
4005         index.
4006         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust
4007         expected errors.
4009 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
4011         * include/bits/max_size_type.h (numeric_limits<__max_size_type>):
4012         Use __int_traits unconditionally.
4014 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
4016         * include/bits/random.h (_Shift::__value): Use constexpr.
4017         (_Select_uint_least_t::type): Use using-declaration.
4018         (_Mod): Likewise.
4019         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
4020         line number.
4022 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
4024         * include/bits/cpp_type_traits.h (__INT_N): Use __extension__
4025         instead of diagnostic pragmas.
4026         * include/bits/functional_hash.h: Likewise.
4027         * include/bits/iterator_concepts.h (__is_signed_int128)
4028         (__is_unsigned_int128): Likewise.
4029         * include/bits/max_size_type.h (__max_size_type): Likewise.
4030         (numeric_limits<__max_size_type>): Likewise.
4031         * include/bits/std_abs.h (abs): Likewise.
4032         * include/bits/stl_algobase.h (__size_to_integer): Likewise.
4033         * include/bits/uniform_int_dist.h (uniform_int_distribution):
4034         Likewise.
4035         * include/ext/numeric_traits.h (_GLIBCXX_INT_N_TRAITS):
4036         Likewise.
4037         * include/std/type_traits (__is_integral_helper<INT_N>)
4038         (__is_signed_integer, __is_unsigned_integer)
4039         (__make_unsigned<INT_N>, __make_signed<INT_N>): Likewise.
4040         * include/std/limits (__INT_N): Add __extension__ keyword.
4041         * include/bits/random.h (_Select_uint_least_t)
4042         (random_device): Likewise.
4044 2021-07-16  Patrick Palka  <ppalka@redhat.com>
4046         PR libstdc++/101231
4047         * include/std/ranges (_CachedPosition::_M_get): For non-forward
4048         ranges, just call __builtin_unreachable.
4049         * testsuite/std/ranges/istream_view.cc (test05): New test.
4051 2021-07-16  Patrick Palka  <ppalka@redhat.com>
4053         PR libstdc++/101214
4054         * include/std/ranges (split_view::split_view): Use std::move.
4055         (split_view::_Iterator::_Iterator): Remove redundant
4056         default_initializable constraint.
4057         (split_view::_Sentinel::_Sentinel): Declare.
4058         * testsuite/std/ranges/adaptors/split.cc (test02): New test.
4060 2021-07-16  Marek Polacek  <polacek@redhat.com>
4062         * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Add
4063         dg-error.
4065 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
4067         * include/bits/unique_ptr.h: Adjust doxygen markup.
4069 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
4071         PR libstdc++/101307
4072         * include/std/type_traits: Adjust doxygen markup.
4074 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
4076         * include/bits/cpp_type_traits.h: Add diagnostic pragmas around
4077         uses of non-standard integer types.
4078         * include/bits/functional_hash.h: Likewise.
4079         * include/bits/iterator_concepts.h: Likewise.
4080         * include/bits/max_size_type.h: Likewise.
4081         * include/bits/std_abs.h: Likewise.
4082         * include/bits/stl_algobase.h: Likewise.
4083         * include/bits/uniform_int_dist.h: Likewise.
4084         * include/ext/numeric_traits.h: Likewise.
4085         * include/std/type_traits: Likewise.
4087 2021-07-15  Jonathan Wakely  <jwakely@redhat.com>
4089         PR libstdc++/101427
4090         * include/std/tuple (tuple_element): Improve static_assert text.
4091         (__get_helper): Add deleted overload.
4092         (get<i>(tuple<T...>&&), get<i>(const tuple<T...>&&)): Use
4093         __get_helper directly.
4094         (__get_helper2): Remove.
4095         (__find_uniq_type_in_pack): New constexpr helper function.
4096         (get<T>): Use __find_uniq_type_in_pack and __get_helper instead
4097         of __get_helper2.
4098         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust
4099         expected errors.
4100         * testsuite/20_util/tuple/element_access/101427.cc: New test.
4102 2021-07-15  Jonathan Wakely  <jwakely@redhat.com>
4104         PR libstdc++/101429
4105         * include/bits/c++config (__replacement_assert): Add noexcept.
4106         [!_GLIBCXX_VERBOSE] (__glibcxx_assert_impl): Use __builtin_abort
4107         instead of __replacement_assert.
4109 2021-07-14  Jonathan Wakely  <jwakely@redhat.com>
4111         * include/std/string_view (basic_string_view(It, End)): Add
4112         noexcept-specifier.
4113         * testsuite/21_strings/basic_string_view/cons/char/range.cc:
4114         Check noexcept-specifier. Also check construction without CTAD.
4116 2021-07-13  Jonathan Wakely  <jwakely@redhat.com>
4118         PR c++/101361
4119         * include/std/string_view (ends_with): Use traits_type::compare
4120         directly.
4122 2021-07-13  Jonathan Wakely  <jwakely@redhat.com>
4124         * include/std/string_view: Only include <bits/ranges_base.h>
4125         once, and only for C++20 and later.
4127 2021-07-12  Jonathan Wakely  <jwakely@redhat.com>
4129         PR libstdc++/101411
4130         * include/std/span (as_writable_bytes): Add requires-clause.
4131         * testsuite/23_containers/span/101411.cc: New test.
4133 2021-07-09  Matheus Castanho  <msc@linux.ibm.com>
4135         * include/std/mutex (__lock_impl): Check
4136         _GLIBCXX_HAS_GTHREADS before using __gthread_yield.
4138 2021-07-02  Jonathan Wakely  <jwakely@redhat.com>
4140         PR libstdc++/101271
4141         * include/bits/unique_ptr.h (unique_ptr<T[],D>::operator[]):
4142         Remove noexcept-specifier.
4143         (unique_ptr<T[],D>::_S_nothrow_deref): Remove.
4144         * testsuite/20_util/unique_ptr/lwg2762.cc: Remove checks for
4145         operator[].
4147 2021-07-01  Jonathan Wakely  <jwakely@redhat.com>
4149         * doc/doxygen/doxygroups.cc: Fix docs for std::literals.
4150         * doc/doxygen/user.cfg.in: Exclude the Networking TS header.
4151         Add some more predefined macros.
4152         * include/bits/fs_fwd.h: Move @addtogroup commands inside
4153         namespaces. Add better documentation.
4154         * include/bits/fs_path.h: Likewise.
4155         * include/experimental/bits/fs_fwd.h: Likewise.
4156         * include/experimental/bits/fs_path.h: Likewise.
4157         * include/ext/throw_allocator.h: Fix typo and improve docs.
4158         * include/std/chrono: Move @addtogroup commands.
4159         * include/std/system_error: Move @addtogroup commands.
4160         * libsupc++/exception: Improve documentation.
4161         * libsupc++/exception.h: Add @since documentation.
4163 2021-06-30  Jonathan Wakely  <jwakely@redhat.com>
4165         PR libstdc++/101258
4166         * doc/doxygen/user.cfg.in (INPUT): Add <experimental/simd>.
4167         (COLS_IN_ALPHA_INDEX): Remove obsolete tag.
4168         (PREDEFINED): Add/fix some more macros that need to be expanded.
4169         * include/bits/random.h: Stop Doxygen from documenting internal
4170         implementation details.
4171         * include/bits/random.tcc: Likewise.
4172         * include/bits/this_thread_sleep.h: Fix @file name.
4173         * include/experimental/bits/simd.h: Add to Doxygen group. Do not
4174         document internal implementation details.
4175         * include/experimental/bits/simd_detail.h: Do not document
4176         internal implementation details.
4177         * include/experimental/simd: Define Doxygen groups.
4178         * include/experimental/type_traits: Improve documentation for
4179         the header file. Define groups. Use @since commands.
4180         * include/std/scoped_allocator (scoped_allocator_adaptor): Move
4181         declaration before undocumented region.
4182         * include/std/type_traits (true_type, false_type): Use using
4183         declaration instead of typedef.
4184         (is_invocable_v, is_nothrow_invocable_v, is_invocable_r_v)
4185         (is_nothrow_invocable_r_v): Move definitions next to other C++17
4186         variable templates.
4187         Do not document internal implementation details. Move misplaced
4188         group-end command. Define group for variable templates.
4189         * include/std/variant: Do not document internal implementation
4190         details.
4191         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
4192         line number.
4194 2021-06-30  Jonathan Wakely  <jwakely@redhat.com>
4196         * include/experimental/simd: Do not define anything pre-C++17.
4198 2021-06-30  Jonathan Wakely  <jwakely@redhat.com>
4200         * include/bits/random.tcc [__cpp_inline_variables]: Remove
4201         redundant definitions of static constexpr member variables.
4202         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
4203         line number.
4205 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
4207         * include/bits/streambuf.tcc (__copy_streambufs_eof): Remove
4208         explicit instantiation declarations.
4209         * src/c++11/streambuf-inst.cc (__copy_streambufs_eof): Remove
4210         explicit instantiation definitions.
4212 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
4214         PR libstdc++/97088
4215         * testsuite/17_intro/names.cc: Fix #if condition for names used
4216         by newlib headers.
4218 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
4220         PR libstdc++/101236
4221         * include/bits/unique_ptr.h (unique_ptr<T[], D>::operator[]):
4222         Fail gracefully if element_type is incomplete.
4223         * testsuite/20_util/unique_ptr/cons/incomplete.cc: Clarify that
4224         the standard doesn't require this test to work for array types.
4225         * testsuite/20_util/unique_ptr/lwg2762.cc: Check that incomplete
4226         types can be used with array specialization.
4227         * testsuite/20_util/unique_ptr/101236.cc: New test.
4229 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
4231         * doc/xml/manual/intro.xml: Document LWG 415 change.
4232         * doc/html/manual/bugs.html: Regenerate.
4233         * include/bits/istream.tcc (ws): Create sentry and catch
4234         exceptions.
4235         * testsuite/27_io/basic_istream/ws/char/lwg415.cc: New test.
4236         * testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc: New test.
4238 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
4240         * include/bits/ostream.tcc (basic_ostream::write): Call sputn
4241         directly instead of using _M_write. Do setstate(__err) all
4242         outside the try-catch block.
4243         * include/std/ostream (basic_ostream::_M_write): Declare
4244         private. Use __ostream_insert. Do not define for the versioned
4245         namespace.
4247 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
4249         * doc/xml/manual/intro.xml: Document LWG 581 change.
4250         * doc/html/manual/bugs.html: Regenerate.
4251         * include/bits/basic_ios.tcc: Whitespace.
4252         * include/bits/ostream.tcc (basic_ostream::flush()): Construct
4253         sentry.
4254         * testsuite/27_io/basic_ostream/flush/char/2.cc: Check
4255         additional cases.
4256         * testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
4257         Likewise.
4258         * testsuite/27_io/basic_ostream/flush/wchar_t/2.cc: Likewise.
4259         * testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc:
4260         Likewise.
4262 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
4264         * include/bits/ostream.tcc (sentry): Only set failbit if badbit
4265         is set, not if eofbit is set.
4266         (tellp, seekp, seekp): Create sentry object. Do not set badbit
4267         on exceptions.
4268         * testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
4269         Adjust expected behaviour.
4270         * testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc:
4271         Likewise.
4272         * testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
4273         Likewise.
4274         * testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc:
4275         Likewise.
4276         * testsuite/27_io/basic_ostream/seekp/char/n3168.cc: New test.
4277         * testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc: New test.
4278         * testsuite/27_io/basic_ostream/tellp/char/n3168.cc: New test.
4279         * testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc: New test.
4281 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
4283         * include/std/syncstream (basic_syncbuf::swap()): Remove
4284         noexcept, as per LWG 3498.
4286 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
4288         PR libstdc++/97088
4289         * testsuite/17_intro/names.cc: Undef more names for newlib and
4290         also for arm-none-linux-gnueabi.
4291         * testsuite/experimental/names.cc: Disable PCH.
4293 2021-06-25  Matthias Kretz  <m.kretz@gsi.de>
4295         * include/experimental/bits/simd.h (__bit_cast): Implement via
4296         __builtin_bit_cast #if available.
4297         (__proposed::simd_bit_cast): Add overloads for simd and
4298         simd_mask, which use __builtin_bit_cast (or __bit_cast #if not
4299         available), which return an object of the requested type with
4300         the same bits as the argument.
4301         * include/experimental/bits/simd_math.h: Use simd_bit_cast
4302         instead of __bit_cast to allow casts to fixed_size_simd.
4303         (copysign): Remove branch that was only required if __bit_cast
4304         cannot be constexpr.
4305         * testsuite/experimental/simd/tests/bits/test_values.h: Switch
4306         from __bit_cast to __proposed::simd_bit_cast since the former
4307         will not cast fixed_size objects anymore.
4309 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4311         * include/experimental/bits/simd_math.h
4312         (_GLIBCXX_SIMD_MATH_CALL2_): Rename arg2_ to __arg2.
4313         (_GLIBCXX_SIMD_MATH_CALL3_): Rename arg2_ to __arg2 and arg3_ to
4314         __arg3.
4316 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4318         * include/experimental/bits/simd.h (__execute_on_index_sequence)
4319         (__execute_on_index_sequence_with_return)
4320         (__call_with_n_evaluations, __call_with_subscripts): Add flatten
4321         attribute.
4323 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4325         * include/experimental/bits/simd_x86.h (_S_trunc, _S_floor)
4326         (_S_ceil): Set bit 8 (_MM_FROUND_NO_EXC) on AVX and SSE4.1
4327         roundp[sd] calls.
4329 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4331         * include/experimental/bits/simd_x86.h (_S_ldexp): The AVX512F
4332         implementation doesn't require a _VecBltnBtmsk ABI tag, it
4333         requires either a 64-Byte input (in which case AVX512F must be
4334         available) or AVX512VL.
4336 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4338         * include/experimental/bits/simd_math.h: Undefine internal
4339         macros after use.
4340         (frexp): Move #if to a more sensible position and reformat
4341         preceding code.
4342         (logb): Call _SimdImpl::_S_logb for fixed_size instead of
4343         duplicating the code here.
4344         (modf): Simplify condition.
4346 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4348         * include/experimental/bits/simd_math.h (fabs): Remove
4349         fabs(simd<integral>) overload.
4351 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4353         * include/experimental/bits/simd_converter.h
4354         (_SimdConverter::operator()): Pass _SimdTuple by const-ref.
4355         * include/experimental/bits/simd_fixed_size.h
4356         (_GLIBCXX_SIMD_FIXED_OP): Pass binary operator _SimdTuple
4357         arguments by const-ref.
4358         (_S_masked_unary): Pass _SimdTuple by const-ref.
4360 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4362         * include/experimental/bits/simd_fixed_size.h
4363         (_AbisInSimdTuple): Removed.
4365 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
4367         * include/experimental/bits/simd.h: Add missing operator~
4368         overload for simd<floating-point> to __float_bitwise_operators.
4369         * include/experimental/bits/simd_builtin.h
4370         (_SimdImplBuiltin::_S_complement): Bitcast to int (and back) to
4371         implement complement for floating-point vectors.
4372         * include/experimental/bits/simd_fixed_size.h
4373         (_SimdImplFixedSize::_S_copysign): New function, forwarding to
4374         copysign implementation of _SimdTuple members.
4375         * include/experimental/bits/simd_math.h (copysign): Call
4376         _SimdImpl::_S_copysign for fixed_size arguments. Simplify
4377         generic copysign implementation using the new ~ operator.
4379 2021-06-24  Jonathan Wakely  <jwakely@redhat.com>
4381         * testsuite/experimental/simd/README.md: Fix typos.
4383 2021-06-24  Jonathan Wakely  <jwakely@redhat.com>
4385         * include/bits/shared_ptr_base.h (__shared_ptr_access::operator[]):
4386         Add noexcept.
4387         * include/bits/unique_ptr.h (unique_ptr::operator*): Add
4388         conditional noexcept as per LWG 2762.
4389         * testsuite/20_util/shared_ptr/observers/array.cc: Check that
4390         dereferencing cannot throw.
4391         * testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
4392         * testsuite/20_util/optional/observers/lwg2762.cc: New test.
4393         * testsuite/20_util/unique_ptr/lwg2762.cc: New test.
4395 2021-06-23  Patrick Palka  <ppalka@redhat.com>
4397         PR c++/101174
4398         * testsuite/23_containers/multiset/cons/deduction.cc:
4399         Uncomment CTAD example that was rejected by this bug.
4400         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
4402 2021-06-23  Jonathan Wakely  <jwakely@redhat.com>
4404         * include/std/chrono (chrono::year::is_leap()): Fix incorrect
4405         logic in comment.
4407 2021-06-23  Matthias Kretz  <m.kretz@gsi.de>
4409         * testsuite/experimental/simd/README.md: New file.
4411 2021-06-23  Matthias Kretz  <m.kretz@gsi.de>
4413         * testsuite/experimental/simd/driver.sh: Rewrite output
4414         verbosity logic. Add -p/--percentage option. Allow -v/--verbose
4415         to be used twice. Add -x and -o short options. Parse long
4416         options with = instead of separating space generically. Parce
4417         contracted short options. Make unrecognized options an error.
4418         If same-line output is active, trap on EXIT to increment the
4419         progress (only with --percentage), erase the line and print the
4420         current status.
4421         * testsuite/experimental/simd/generate_makefile.sh: Initialize
4422         helper files for progress account keeping. Update help target
4423         for changes to DRIVEROPTS.
4425 2021-06-23  Matthias Kretz  <m.kretz@gsi.de>
4427         * testsuite/Makefile.am (check-simd): Remove -fno-tree-vrp flag
4428         and associated warning.
4429         * testsuite/Makefile.in: Regenerate.
4431 2021-06-23  Cassio Neri  <cassio.neri@gmail.com>
4432             Jonathan Wakely  <jwakely@redhat.com>
4433             Ulrich Drepper  <drepper@redhat.com>
4435         * include/std/chrono (chrono::year::is_leap()): Optimize.
4437 2021-06-23  Patrick Palka  <ppalka@redhat.com>
4439         PR c++/86439
4440         * testsuite/23_containers/map/cons/deduction.cc: Replace ambiguous
4441         CTAD examples.
4442         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
4443         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
4444         Mention one of the replaced examples is broken due to PR101174.
4445         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
4446         * testsuite/23_containers/unordered_map/cons/deduction.cc: Replace
4447         ambiguous CTAD examples.
4448         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
4449         Likewise.
4450         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
4451         Likewise.
4452         * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
4454 2021-06-23  Jonathan Wakely  <jwakely@redhat.com>
4456         * include/std/mutex (__detail::__try_lock_impl): Rename
4457         parameter to avoid clashing with newlib's __lockable macro.
4458         (try_lock): Add 'inline' specifier.
4459         * testsuite/17_intro/names.cc: Add check for __lockable.
4460         * testsuite/30_threads/try_lock/5.cc: Add options for pthreads.
4462 2021-06-22  Jonathan Wakely  <jwakely@redhat.com>
4463             Matthias Kretz  <m.kretz@gsi.de>
4465         * include/std/mutex (lock): Replace recursion with iteration
4466         when lockables all have the same type.
4467         (__detail::__try_lock_impl): Likewise. Pass lockables as
4468         parameters, instead of a tuple. Always lock the first one, and
4469         recurse for the rest.
4470         (__detail::__lock_impl): Adjust call to __try_lock_impl.
4471         (__detail::__try_to_lock): Remove.
4472         * testsuite/30_threads/lock/3.cc: Check that mutexes are locked.
4473         * testsuite/30_threads/lock/4.cc: Also test non-heterogeneous
4474         arguments.
4475         * testsuite/30_threads/unique_lock/cons/60497.cc: Also check
4476         std::try_lock.
4477         * testsuite/30_threads/try_lock/5.cc: New test.
4479 2021-06-22  Jonathan Wakely  <jwakely@redhat.com>
4481         * include/std/memory (declare_reachable, undeclare_reachable)
4482         (declare_no_pointers, undeclare_no_pointers, get_pointer_safety)
4483         (pointer_safety): Only define for C++11 to C++20 inclusive.
4484         * testsuite/20_util/pointer_safety/1.cc: Do not run for C++23.
4486 2021-06-22  Jonathan Wakely  <jwakely@redhat.com>
4488         * include/bits/random.h (seed_seq): Constrain initializer-list
4489         constructor.
4490         * include/bits/random.tcc (seed_seq): Add template parameter.
4491         * testsuite/26_numerics/random/seed_seq/cons/default.cc: Check
4492         for noexcept.
4493         * testsuite/26_numerics/random/seed_seq/cons/initlist.cc: Check
4494         constraints.
4496 2021-06-22  Thomas Rodgers  <rodgert@appliantology.com>
4498         PR libstdc++/100806
4499         * include/bits/semaphore_base.h (__atomic_semaphore::_M_release):
4500         Force _M_release() to wake all waiting threads.
4501         * testsuite/30_threads/semaphore/100806.cc: New test.
4503 2021-06-21  Jonathan Wakely  <jwakely@redhat.com>
4505         * include/std/mutex (__try_to_lock): Move to __detail namespace.
4506         (struct __try_lock_impl): Replace with ...
4507         (__detail::__try_lock_impl<Idx>(tuple<Lockables...>&)): New
4508         function templates to implement std::try_lock.
4509         (try_lock): Use new __try_lock_impl.
4510         (__detail::__lock_impl(int, int&, L0&, L1&...)): New function
4511         template to implement std::lock.
4512         (lock): Use __lock_impl.
4514 2021-06-21  Patrick Palka  <ppalka@redhat.com>
4516         * include/bits/ranges_cmp.h (__cpp_lib_ranges): Adjust value.
4518 2021-06-20  Patrick Palka  <ppalka@redhat.com>
4520         * include/std/ranges (__non_propagating_cache::operator bool):
4521         Define for split_view::begin().
4522         (split_view): Define as per P2210.
4523         (views::__detail::__can_split_view): Define.
4524         (views::_Split, views::split): Define.
4525         * testsuite/std/ranges/adaptors/100577.cc (test01, test02):
4526         Test views::split.
4527         * testsuite/std/ranges/adaptors/split.cc: New test.
4528         * testsuite/std/ranges/p2325.cc (test08a): New test.
4529         * testsuite/std/ranges/p2367.cc (test01): Test views::split.
4531 2021-06-20  Patrick Palka  <ppalka@redhat.com>
4533         * include/std/ranges: Rename views::split to views::lazy_split,
4534         split_view to lazy_split_view, etc. throughout.
4535         * testsuite/std/ranges/*: Likewise.
4536         * testsuite/std/ranges/adaptors/lazy_split.cc: New file.
4537         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: New file.
4539 2021-06-20  Patrick Palka  <ppalka@redhat.com>
4541         * include/std/ranges (split_view::_OuterIter::__at_end):
4542         Check _M_trailing_empty.
4543         (split_view::_OuterIter::_M_trailing_empty): Define this
4544         data member.
4545         (split_view::_OuterIter::operator++): Set _M_trailing_empty
4546         appropriately.
4547         (split_view::_OuterIter::operator==): Compare
4548         _M_trailing_empty.
4549         * testsuite/std/ranges/adaptors/100479.cc (test03): Expect two
4550         split parts instead of one.
4551         * testsuite/std/ranges/adaptors/split.cc (test11): New test.
4553 2021-06-20  Patrick Palka  <ppalka@redhat.com>
4555         * include/std/ranges (split_view::_InnerIter::base): Define as
4556         per P2210.
4558 2021-06-19  Patrick Palka  <ppalka@redhat.com>
4560         * include/std/ranges (transform_view::_Iterator::_S_iter_concept):
4561         Consider _Base instead of _Vp as per LWG 3555.
4562         (elements_view::_Iterator::_S_iter_concept): Likewise.
4564 2021-06-19  Patrick Palka  <ppalka@redhat.com>
4566         * include/std/ranges (split_view::_OuterIter::value_type::begin):
4567         Remove the non-const overload, and remove the copyable constraint
4568         on the const overload as per LWG 3553.
4570 2021-06-19  Patrick Palka  <ppalka@redhat.com>
4572         * include/bits/stl_iterator.h
4573         (__detail::__common_iter_use_postfix_proxy): Add
4574         move_constructible constraint as per LWG 3546.
4575         (common_iterator::__postfix_proxy): Adjust initializer of
4576         _M_keep as per LWG 3546.
4578 2021-06-18  Patrick Palka  <ppalka@redhat.com>
4580         PR libstdc++/100387
4581         * include/bits/ranges_algo.h (__minmax_fn::operator()): Rewrite
4582         to limit comparison complexity to 3*N/2.
4583         (__minmax_element_fn::operator()): Likewise.
4584         (shift_right): Avoid premature std::move of __result.
4585         * testsuite/25_algorithms/minmax/constrained.cc (test04, test05):
4586         New tests.
4587         * testsuite/25_algorithms/minmax_element/constrained.cc (test02):
4588         Likewise.
4590 2021-06-18  Patrick Palka  <ppalka@redhat.com>
4592         * include/std/concepts (convertible_to): Just use declval as per
4593         LWG 3557.
4595 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
4597         PR libstdc++/95833
4598         * include/std/numeric (reduce(Iter, Iter, T, BinaryOp)): Replace
4599         incorrect static_assert with ones matching the 'Mandates'
4600         conditions in the standard.
4601         * testsuite/26_numerics/reduce/95833.cc: New test.
4603 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
4605         * testsuite/21_strings/basic_string/cons/char/1.cc: Use
4606         diagnostic pragma to suppress -Wstringop-overread error.
4608 2021-06-18  Patrick Palka  <ppalka@redhat.com>
4610         * include/bits/ranges_algo.h (__find_fn, find, __find_if_fn)
4611         (find_if, __find_if_not_fn, find_if_not, _in_in_result)
4612         (__mismatch_fn, mismatch, __search_fn, search): Move to ...
4613         * include/bits/ranges_util.h: ... here.
4614         * include/std/ranges (__detail::find, __detail::find_if)
4615         (__detail::find_if_not, __detail::mismatch): Remove.
4616         (filter_view): Use ranges::find_if instead.
4617         (drop_while_view): Use ranges::find_if_not instead.
4618         (split_view): Use ranges::find and ranges::mismatch instead.
4620 2021-06-18  Patrick Palka  <ppalka@redhat.com>
4622         * include/bits/iterator_concepts.h (weakly_incrementable): Remove
4623         default_initializable requirement.
4624         * include/bits/ranges_base.h (ranges::view): Likewise.
4625         * include/bits/ranges_util.h (subrange): Constrain the default
4626         ctor.
4627         * include/bits/stl_iterator.h (back_insert_iterator): Remove the
4628         default ctor.
4629         (front_insert_iterator): Likewise.
4630         (insert_iterator): Likewise.  Remove NSDMIs.
4631         (common_iterator): Constrain the default ctor.
4632         (counted_iterator): Likewise.
4633         * include/bits/stream_iterator.h (ostream_iterator): Remove the
4634         default ctor.
4635         * include/std/ranges (__detail::__box::operator=): Handle
4636         self-assignment in the primary template.
4637         (__detail::__box): In the partial specialization: adjust
4638         constraints as per P2325.  Add specialized operator= for the
4639         case when the wrapped type is not copyable.  Constrain the
4640         default ctor.  Avoid list-initialization.
4641         (single_view): Constraint the default ctor.
4642         (iota_view): Relax semiregular constraint to copyable.
4643         Constrain the default ctor.
4644         (iota_view::_Iterator): Constraint the default ctor.
4645         (basic_istream_view): Remove the default ctor.  Remove NSDMIs.
4646         Remove redundant checks for empty _M_stream.
4647         (basic_istream_view::_Iterator): Likewise.
4648         (ref_view): Remove the default ctor.  Remove NSDMIs.
4649         (ref_view::_Iterator): Constrain the default ctor.
4650         (__detail::__non_propagating_cache::operator=): Define overload
4651         for assigning from a value of the underlying type.
4652         (filter_view): Likewise.
4653         (filter_view::_Iterator): Likewise.
4654         (transform_view): Likewise.
4655         (transform_view::_Iterator): Likewise.
4656         (take_view): Likewise.
4657         (take_view::_Iterator): Likewise.
4658         (take_while_view): Likewise.
4659         (take_while_view::_Iterator): Likewise.
4660         (drop_while_view): Likewise.
4661         (drop_while_view::_Iterator): Likewise.
4662         (join_view): Likewise.
4663         (split_view::_OuterIter::__current): Adjust after changing the
4664         type of _M_current.
4665         (split_view::_M_current): Wrap it in a __non_propagating_cache.
4666         (split_view::split_view): Constrain the default ctor.
4667         (common_view): Constrain the default ctor.
4668         (reverse_view): Likewise.
4669         (elements_view): Likewise.
4670         * include/std/span (enable_view<span<_ElementType, _Extent>>):
4671         Define this partial specialization to true unconditionally.
4672         * include/std/version (__cpp_lib_ranges): Adjust value.
4673         * testsuite/24_iterators/back_insert_iterator/constexpr.cc:
4674         Don't attempt to default construct a back_insert_iterator.
4675         * testsuite/24_iterators/front_insert_iterator/constexpr.cc:
4676         Don't attempt to default construct a front_insert_iterator.
4677         * testsuite/24_iterators/insert_iterator/constexpr.cc:
4678         Don't attempt to default construct an insert_iterator.
4679         * testsuite/24_iterators/ostream_iterator/requirements/constexpr.cc:
4680         Remove this test for default constructibility of ostream_iterator.
4681         * testsuite/std/ranges/97600.cc: Don't attempt to default
4682         construct a basic_istream_view.
4683         * testsuite/std/ranges/adaptors/detail/semiregular_box.cc:
4684         Rename to ...
4685         * testsuite/std/ranges/adaptors/detail/copyable_box.cc: ... this.
4686         (test02): Adjust now that __box is copyable-box not
4687         semiregular-box.
4688         (test03): New test.
4689         * testsuite/std/ranges/p2325.cc: New test.
4690         * testsuite/std/ranges/single_view.cc (test06): New test.
4691         * testsuite/std/ranges/view.cc: Adjust now that view doesn't
4692         require default_initializable.
4694 2021-06-17  Jonathan Wakely  <jwakely@redhat.com>
4696         PR libstdc++/91488
4697         * include/bits/basic_string.h (__cpp_lib_constexpr_string): Only
4698         define when is_constant_evaluated is available.
4699         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
4700         Likewise.
4701         (__constant_string_p, __constant_array_p): Remove.
4702         (char_traits): Use is_constant_evaluated directly.
4703         * include/std/version (__cpp_lib_constexpr_char_traits)
4704         (__cpp_lib_constexpr_string): Only define when
4705         is_constant_evaluated is available.
4707 2021-06-17  Patrick Palka  <ppalka@redhat.com>
4709         PR libstdc++/100940
4710         * include/std/ranges (__adaptor::_Partial): For the "simple"
4711         forwarding partial specializations, also require that
4712         the extra arguments are trivially copyable.
4713         * testsuite/std/ranges/adaptors/100577.cc (test04): New test.
4715 2021-06-17  Patrick Palka  <ppalka@redhat.com>
4717         PR libstdc++/100940
4718         * include/std/ranges (__adaptor::_RangeAdaptor): Document the
4719         template form of _S_has_simple_extra_args.
4720         (__adaptor::__adaptor_has_simple_extra_args): Add _Args template
4721         parameter pack.  Try to treat _S_has_simple_extra_args as a
4722         variable template parameterized by _Args.
4723         (__adaptor::_Partial): Pass _Arg/_Args to the constraint
4724         __adaptor_has_simple_extra_args.
4725         (views::_Take::_S_has_simple_extra_args): Templatize according
4726         to the type of the extra argument.
4727         (views::_Drop::_S_has_simple_extra_args): Likewise.
4728         (views::_Split::_S_has_simple_extra_args): Define.
4729         * testsuite/std/ranges/adaptors/100577.cc (test01, test02):
4730         Adjust after changes to _S_has_simple_extra_args mechanism.
4731         (test03): Define.
4733 2021-06-16  Jonathan Wakely  <jwakely@redhat.com>
4735         * include/bits/iterator_concepts.h (__decay_copy): Name type.
4737 2021-06-16  Jonathan Wakely  <jwakely@redhat.com>
4739         * include/bits/ranges_base.h (ranges::begin, ranges::end)
4740         (ranges::cbegin, ranges::cend, ranges::rbeing, ranges::rend)
4741         (ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
4742         (ranges::empty, ranges::data, ranges::cdata): Remove final
4743         keywords and deleted operator& overloads.
4744         * testsuite/24_iterators/customization_points/iter_move.cc: Use
4745         new is_customization_point_object function.
4746         * testsuite/24_iterators/customization_points/iter_swap.cc:
4747         Likewise.
4748         * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
4749         Likewise.
4750         * testsuite/std/ranges/access/begin.cc: Likewise.
4751         * testsuite/std/ranges/access/cbegin.cc: Likewise.
4752         * testsuite/std/ranges/access/cdata.cc: Likewise.
4753         * testsuite/std/ranges/access/cend.cc: Likewise.
4754         * testsuite/std/ranges/access/crbegin.cc: Likewise.
4755         * testsuite/std/ranges/access/crend.cc: Likewise.
4756         * testsuite/std/ranges/access/data.cc: Likewise.
4757         * testsuite/std/ranges/access/empty.cc: Likewise.
4758         * testsuite/std/ranges/access/end.cc: Likewise.
4759         * testsuite/std/ranges/access/rbegin.cc: Likewise.
4760         * testsuite/std/ranges/access/rend.cc: Likewise.
4761         * testsuite/std/ranges/access/size.cc: Likewise.
4762         * testsuite/std/ranges/access/ssize.cc: Likewise.
4763         * testsuite/util/testsuite_iterators.h
4764         (is_customization_point_object): New function.
4766 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
4768         * include/bits/ranges_base.h (ranges::begin, ranges::end)
4769         (ranges::cbegin, ranges::cend, ranges::rbeing, ranges::rend)
4770         (ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
4771         (ranges::empty, ranges::data, ranges::cdata): Make types final.
4772         Add deleted operator& overloads.
4773         (ranges::advance, ranges::distance, ranges::next, ranges::prev):
4774         Likewise.
4775         * testsuite/std/ranges/headers/ranges/synopsis.cc: Replace
4776         ill-formed & expressions with using-declarations. Add checks for
4777         other function objects.
4779 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
4781         * include/bits/ranges_util.h (view_interface): Add noexcept to
4782         empty, operator bool, data and size members.
4783         (subrange): Add noexcept to constructors.
4784         * include/std/ranges (single_view, ref_view): Add noexcept to
4785         constructors.
4786         (views::single, views::all): Add noexcept.
4787         * testsuite/std/ranges/adaptors/all.cc: Check noexcept.
4788         * testsuite/std/ranges/single_view.cc: Likewise.
4790 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
4792         * include/bits/ranges_util.h (subrange): Add __size_type typedef
4793         and use it to simplify declarations.
4794         (subrange(i, s, n)): Remove assertion.
4795         * testsuite/std/ranges/subrange/constexpr.cc: New test.
4797 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
4799         * include/bits/iterator_concepts.h (__cust_access::__decay_copy):
4800         Replace with function object.
4801         (__cust_access::__member_begin, ___cust_access::_adl_begin): Use
4802         __decay_copy unqualified.
4803         * include/bits/ranges_base.h (__member_end, __adl_end):
4804         Likewise. Use __range_iter_t for type of ranges::begin.
4805         (__member_rend): Use correct value category for rbegin argument.
4806         (__member_data): Use __decay_copy unqualified.
4807         (__begin_data): Use __range_iter_t for type of ranges::begin.
4809 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4811         * include/bits/ranges_base.h (ranges::empty): Check whether
4812         conversion to bool can throw.
4813         * testsuite/std/ranges/access/empty.cc: Check for correct
4814         noexcept-specifier.
4816 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4818         PR libstdc++/100894
4819         * include/std/type_traits (__common_ref_impl<X&, Y&>): Only
4820         use the type if it's a reference.
4821         * testsuite/20_util/common_reference/100894.cc: New test.
4823 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4825         * testsuite/experimental/filesystem/path/native/conv_c++23.cc:
4826         Add dg-require-filesystem-ts directive.
4828 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4830         PR libstdc++/101034
4831         * include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
4832         (any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
4833         to use lvalue.
4834         * testsuite/20_util/any/cons/101034.cc: New test.
4836 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4838         * testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
4839         -std=gnu++17 option.
4841 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4843         PR libstdc++/101056
4844         * libsupc++/compare (compare_partial_order_fallback): Add
4845         constraint using reversed parameter order, as per LWG 3465.
4846         * testsuite/18_support/comparisons/algorithms/fallback.cc:
4847         Adjust expected result.
4849 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4851         * libsupc++/compare (__decayed_same_as): New helper concept.
4852         (strong_order, weak_order, partial_order): Constrain with new
4853         concept instead of using static_assert.
4854         (compare_strong_order_fallback, compare_weak_order_fallback)
4855         (compare_partial_order_fallback): Likewise. Do not deduce return
4856         types. Remove redundant if-constexpr checks.
4857         * testsuite/18_support/comparisons/algorithms/fallback.cc: New test.
4859 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
4861         PR libstdc++/101055
4862         * include/std/tuple: Use reserved form of attribute name.
4863         * testsuite/17_intro/headers/c++2011/all_attributes.cc: Add
4864         check for no_unique_address.
4865         * testsuite/17_intro/headers/c++2014/all_attributes.cc:
4866         Likewise.
4867         * testsuite/17_intro/headers/c++2017/all_attributes.cc:
4868         Likewise.
4870 2021-06-11  Jonathan Wakely  <jwakely@redhat.com>
4872         * include/bits/fs_path.h (operator==, operator<=>): Use new
4873         _S_compare function.
4874         (path::_S_compare): New function to call path::compare in a
4875         context where path::iterator is complete.
4876         * include/experimental/bits/fs_path.h (operator<, operator==):
4877         Define after path::iterator is complete.
4878         * testsuite/27_io/filesystem/path/native/conv_c++23.cc: New
4879         test.
4880         * testsuite/experimental/filesystem/path/native/conv_c++23.cc:
4881         New test.
4883 2021-06-09  Thomas Rodgers  <rodgert@appliantology.com>
4885         * testsuite/29_atomics/atomic_ref/wait_notify.cc: Guard
4886         test logic with constexpr check for is_always_lock_free.
4888 2021-06-09  Jonathan Wakely  <jwakely@redhat.com>
4890         PR libstdc++/100982
4891         * include/std/optional (optional::operator=(const optional<U>&)):
4892         Fix value category used in is_assignable check.
4893         * testsuite/20_util/optional/assignment/100982.cc: New test.
4895 2021-06-09  Jonathan Wakely  <jwakely@redhat.com>
4897         * include/bits/allocator.h (allocator::is_always_equal): Deprecate.
4898         * include/bits/iterator_concepts.h (indirectly_readable_traits):
4899         Add LWG issue number to comment.
4900         * include/std/memory_resource (polymorphic_allocator::release):
4901         Deprecate.
4902         * testsuite/20_util/allocator/requirements/typedefs.cc: Add
4903         dg-warning for deprecation. Also check std::allocator<void>.
4905 2021-06-08  Thomas Rodgers  <rodgert@appliantology.com>
4907         PR libstdc++/100889
4908         * include/bits/atomic_base.h (atomic_ref<_Tp*>::wait):
4909         Change parameter type from _Tp to _Tp*.
4910         * testsuite/29_atomics/atomic_ref/wait_notify.cc: Extend
4911         coverage of types tested.
4913 2021-06-08  Thomas Rodgers  <rodgert@appliantology.com>
4915         * include/std/barrier (__tree_barrier::_M_arrive): Remove
4916         unnecessary hasher instantiation.
4918 2021-06-08  Jonathan Wakely  <jwakely@redhat.com>
4920         * include/experimental/propagate_const (swap): Constrain.
4921         * testsuite/experimental/propagate_const/swap/lwg3413.cc: New test.
4923 2021-06-07  Avi Kivity  <avi@scylladb.com>
4925         PR libstdc++/100900
4926         * include/std/ranges (elements_view::__iter_cat::_S_iter_cat):
4927         Add missing typename.
4929 2021-06-07  Jonathan Wakely  <jwakely@redhat.com>
4931         PR libstdc++/98842
4932         * include/std/optional (operator<=>(const optional<T>& const U&)):
4933         Add missing constraint and add workaround for template
4934         recursion.
4935         * testsuite/20_util/optional/relops/three_way.cc: Check that
4936         type without equality comparison cannot be compared when wrapped
4937         in std::optional.
4939 2021-06-05  Jonathan Wakely  <jwakely@redhat.com>
4941         PR libstdc++/100824
4942         * include/bits/ranges_base.h (_SSize): Return signed type.
4943         * testsuite/std/ranges/access/ssize.cc: Check with __int128.
4945 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4947         * include/bits/ranges_base.h (_SSize): Return the result of
4948         ranges::size converted to the wider of make-signed-like-t<S> and
4949         ptrdiff_t, rather than the ranges different type.
4950         * testsuite/std/ranges/access/ssize.cc: Adjust expected result
4951         for an iota_view that uses an integer class type for its
4952         difference_type.
4954 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4956         PR libstdc++/100824
4957         * include/bits/ranges_base.h (__member_data): Use __decay_copy.
4958         * testsuite/std/ranges/access/data.cc: Add testcase from PR.
4960 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4962         PR libstdc++/100824
4963         * include/bits/iterator_concepts.h (__detail::__decay_copy)
4964         (__detail::__member_begin, __detail::__adl_begin): Move to
4965         namespace ranges::__cust_access.
4966         (__detail::__ranges_begin): Likewise, and rename to __begin.
4967         Remove redundant static assertion.
4968         * include/bits/ranges_base.h (_Begin, _End, _RBegin, _REnd):
4969         Use lvalue in noexcept specifier.
4970         (__as_const): Add non-deduced parameter for value category.
4971         (_CBegin, _CEnd, _CRBegin, _CREnd, _CData): Adjust uses of
4972         __as_const.
4973         (__member_size, __adl_size, __member_empty, __size0_empty):
4974         (__eq_iter_empty, __adl_data): Use lvalue objects in
4975         requirements.
4976         (__sentinel_size): Likewise. Add check for conversion to
4977         unsigned-like.
4978         (__member_data): Allow non-lvalue types to satisfy the concept,
4979         but use lvalue object in requirements.
4980         (_Size, _SSize): Remove forwarding to always use an lvalue.
4981         (_Data): Likewise. Add static assertion for arrays.
4982         * testsuite/std/ranges/access/cdata.cc: Adjust expected
4983         behaviour for rvalues. Add negative tests for ill-formed
4984         expressions.
4985         * testsuite/std/ranges/access/data.cc: Likewise.
4986         * testsuite/std/ranges/access/empty.cc: Adjust expected
4987         behaviour for rvalues.
4988         * testsuite/std/ranges/access/size.cc: Likewise.
4990 2021-06-04  Tim Adye  <Tim.Adye@cern.ch>
4992         * include/std/any (any::_Manager::_S_access): New static
4993         function to access the contained value.
4994         (any::emplace, __any_caster): Use _S_access member of the
4995         manager type.
4997 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4999         * doc/xml/manual/status_cxx2020.xml:
5000         * doc/html/*: Regenerate.
5001         * include/bits/hashtable.h (__cpp_lib_generic_unordered_lookup):
5002         Define.
5003         * include/std/version (__cpp_lib_generic_unordered_lookup):
5004         Define.
5005         * testsuite/23_containers/unordered_map/operations/1.cc: Check
5006         feature test macro.
5007         * testsuite/23_containers/unordered_set/operations/1.cc:
5008         Likewise.
5010 2021-06-03  Patrick Palka  <ppalka@redhat.com>
5012         * include/bits/ranges_algo.h (__detail::__can_reread_output):
5013         Factor out this concept from ...
5014         (__unique_copy_fn::operator()): ... here.  Use the concept
5015         throughout.
5016         * testsuite/std/ranges/range.cc: Remove now ill-formed use
5017         of range_value_t on an output_range.
5018         * testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
5019         Define value_type, pointer and reference member types to void.
5021 2021-06-03  Patrick Palka  <ppalka@redhat.com>
5023         PR libstdc++/100577
5024         * include/std/ranges (_RangeAdaptorClosure): Document
5025         _S_has_simple_call_op mechanism.
5026         (_RangeAdaptor): Document _S_has_simple_extra_args mechanism.
5027         (__closure_has_simple_call_op): New concept.
5028         (__adaptor_has_simple_extra_args): Likewise.
5029         (_Partial<_Adaptor, _Args...>): New partial specialization.
5030         (_Partial<_Adaptor, _Arg>): Likewise.
5031         (_Pipe<_Lhs, _Rhs>): Likewise.
5032         (views::_All::_S_has_simple_call_op): Define to true.
5033         (views::_Filter::_S_has_simple_extra_args): Likewise.
5034         (views::_Transform::_S_has_simple_extra_args): Likewise.
5035         (views::_Take::_S_has_simple_extra_args): Likewise.
5036         (views::_TakeWhile::_S_has_simple_extra_args): Likewise.
5037         (views::_Drop::_S_has_simple_extra_args): Likewise.
5038         (views::_DropWhile::_S_has_simple_extra_args): Likewise.
5039         (views::_Join::_S_has_simple_call_op): Likewise.
5040         (views::_Split): Document why we don't define
5041         _S_has_simple_extra_args to true for this adaptor.
5042         (views::_Common::_S_has_simple_call_op): Define to true.
5043         (views::_Reverse::_S_has_simple_call_op): Likewise.
5044         (views::_Elements::_S_has_simple_call_op): Likewise.
5045         * testsuite/std/ranges/adaptors/100577.cc: New test.
5047 2021-06-02  Jonathan Wakely  <jwakely@redhat.com>
5049         PR libstdc++/100863
5050         PR libstdc++/65816
5051         * include/bits/hashtable_policy.h (_Hashtable_ebo_helper):
5052         Value-initialize subobject.
5053         * testsuite/23_containers/unordered_map/allocator/default_init.cc:
5054         Remove XFAIL.
5055         * testsuite/23_containers/unordered_set/allocator/default_init.cc:
5056         Remove XFAIL.
5058 2021-06-02  Jonathan Wakely  <jwakely@redhat.com>
5060         PR libstdc++/96088
5061         * testsuite/23_containers/unordered_map/96088.cc: Adjust
5062         expected number of allocations.
5063         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
5065 2021-06-02  Jonathan Wakely  <jwakely@redhat.com>
5067         * doc/xml/manual/status_cxxis29124.xml: Improve punctuation.
5068         * doc/xml/manual/status_cxxtr1.xml: Likewise.
5069         * doc/xml/manual/status_cxxtr24733.xml: Likewise.
5070         * doc/html/*: Regenerate.
5072 2021-06-01  Patrick Palka  <ppalka@redhat.com>
5074         PR c++/65816
5075         * testsuite/23_containers/deque/allocator/default_init.cc,
5076         testsuite/23_containers/forward_list/allocator/default_init.cc,
5077         testsuite/23_containers/list/allocator/default_init.cc,
5078         testsuite/23_containers/map/allocator/default_init.cc,
5079         testsuite/23_containers/set/allocator/default_init.cc,
5080         testsuite/23_containers/vector/allocator/default_init.cc,
5081         testsuite/23_containers/vector/bool/allocator/default_init.cc:
5082         Remove xfail.
5084 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
5086         * testsuite/23_containers/unordered_map/96088.cc: Change
5087         effective target to c++17.
5088         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
5090 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
5092         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Only test
5093         isblank for C++11 and later.
5095 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
5097         PR libstdc++/100833
5098         * include/bits/ranges_base.h (ranges::advance(iter, n, sentinel)):
5099         Fix return value for no-op case.
5100         * testsuite/24_iterators/range_operations/advance.cc: Test
5101         return values of three-argument overload.
5103 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
5105         PR libstdc++/99453
5106         * python/Makefile.am: Use archive name for printer hook if no
5107         dynamic library name is available.
5108         * python/Makefile.in: Regenerate.
5110 2021-05-30  Gerald Pfeifer  <gerald@pfeifer.com>
5112         * doc/xml/manual/abi.xml: Remove dead reference to "Intel
5113         Compilers for Linux: Compatibility with GNU Compilers" article.
5114         * doc/html/manual/abi.html: Regenerate.
5116 2021-05-26  François Dumont  <fdumont@gcc.gnu.org>
5118         * include/debug/formatter.h
5119         (_Error_formatter::_Parameter::_Named): New.
5120         (_Error_formatter::_Parameter::_Type): Inherit latter.
5121         (_Error_formatter::_Parameter::_M_integer): Likewise.
5122         (_Error_formatter::_Parameter::_M_string): Likewise.
5123         * src/c++11/debug.cc: Include <cstring>.
5124         (_Print_func_t): New.
5125         (print_raw(PrintContext&, const char*, ptrdiff_t)): New.
5126         (print_word): Use '%.*s' format in fprintf to render only expected number of chars.
5127         (pretty_print(PrintContext&, const char*, _Print_func_t)): New.
5128         (print_type): Rename in...
5129         (print_type_info): ...this. Use pretty_print.
5130         (print_address, print_integer): New.
5131         (print_named_name, print_iterator_constness, print_iterator_state): New.
5132         (print_iterator_seq_type): New.
5133         (print_named_field, print_type_field, print_instance_field, print_iterator_field): New.
5134         (print_field): Use latters.
5135         (print_quoted_named_name, print_type_type, print_type, print_instance): New.
5136         (print_string(PrintContext&, const char*, const _Parameter*, size_t)):
5137         Change signature to...
5138         (print_string(PrintContext&, const char*, ptrdiff_t, const _Parameter*, size_t)):
5139         ...this and adapt. Remove intermediate buffer to render input string.
5140         (print_string(PrintContext&, const char*, ptrdiff_t)): New.
5142 2021-05-26  Jonathan Wakely  <jwakely@redhat.com>
5144         PR libstdc++/100768
5145         * include/bits/ranges_base.h (advance, distance, next, prev):
5146         Replace function templates with function objects.
5147         * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
5148         Adjust for changes to function objects.
5149         * testsuite/std/ranges/adaptors/elements.cc: Add using
5150         declarations for names from namespace ranges.
5151         * testsuite/std/ranges/adaptors/transform.cc: Likewise.
5152         * testsuite/24_iterators/range_operations/100768.cc: New test.
5154 2021-05-24  François Dumont  <fdumont@gcc.gnu.org>
5156         PR libstdc++/96088
5157         * include/bits/hashtable_policy.h (_Select2nd): New.
5158         (_NodeBuilder<>): New.
5159         (_ReuseOrAllocNode<>::operator()): Use variadic template args.
5160         (_AllocNode<>::operator()): Likewise.
5161         * include/bits/hashtable.h
5162         (_Hashtable<>::__node_builder_t): New.
5163         (_Hashtable<>::_M_insert_unique<>(_Kt&&, _Arg&&, const _NodeGenerator&)):
5164          New.
5165         (_Hashtable<>::_S_forward_key): New.
5166         (_Hashtable<>::_M_insert): Use latter.
5167         (_Hashtable<>::_M_insert(const_iterator, _Arg&&, const _NodeGenerator&, false_type)):
5168         Instantiate node first, compute hash code second.
5169         * testsuite/23_containers/unordered_map/96088.cc: New test.
5170         * testsuite/23_containers/unordered_multimap/96088.cc: New test.
5171         * testsuite/23_containers/unordered_multiset/96088.cc: New test.
5172         * testsuite/23_containers/unordered_set/96088.cc: New test.
5173         * testsuite/util/replacement_memory_operators.h
5174         (counter::_M_increment): New.
5175         (counter::_M_decrement): New.
5176         (counter::reset()): New.
5178 2021-05-24  Patrick Palka  <ppalka@redhat.com>
5180         PR libstdc++/100479
5181         * include/std/ranges (__detail::__non_propagating_cache): Move
5182         definition up to before that of _CachedPosition.  Make base
5183         class _Optional_base protected instead of private.  Add const
5184         overload for operator*.
5185         (__detail::_CachedPosition): Rewrite the partial specialization
5186         for forward ranges as a derived class of __non_propagating_cache.
5187         Remove the size constraint on the partial specialization for
5188         random access ranges.  Add copy/move/copy-assignment/move-assignment
5189         members to the offset partial specialization for random
5190         access ranges that propagate the cached value but additionally
5191         invalidate it in the source object on move.
5192         * testsuite/std/ranges/adaptors/100479.cc: New test.
5194 2021-05-24  Jonathan Wakely  <jwakely@redhat.com>
5196         * testsuite/25_algorithms/inplace_merge/constrained.cc: Qualify
5197         call to ranges::next.
5198         * testsuite/25_algorithms/is_sorted/constrained.cc: Likewise.
5199         * testsuite/25_algorithms/is_sorted_until/constrained.cc:
5200         Likewise.
5201         * testsuite/25_algorithms/swap_ranges/1.cc: Qualify call to
5202         swap_ranges.
5204 2021-05-21  Patrick Palka  <ppalka@redhat.com>
5206         PR libstdc++/100606
5207         * include/std/ranges (drop_while_view::begin): Assert the
5208         precondition added by LWG 3490.
5210 2021-05-21  Patrick Palka  <ppalka@redhat.com>
5212         PR libstdc++/100690
5213         * include/std/ranges (iota_view::_Sentinel::_M_distance_from):
5214         Split out this member function from ...
5215         (iota_view::_Sentinel::operator-): ... here, for sake of access
5216         control.
5217         * testsuite/std/ranges/iota/iota_view.cc (test05): New test.
5219 2021-05-20  Jonathan Wakely  <jwakely@redhat.com>
5221         * include/bits/random.tcc (__representable_as_double)
5222         (__p1_representable_as_double): Add "" to static asserts.
5224 2021-05-20  Jonathan Wakely  <jwakely@redhat.com>
5226         PR libstdc++/100676
5227         * include/bits/c++config (__glibcxx_assert_1): Rename to ...
5228         (__glibcxx_constexpr_assert): ... this.
5229         (__glibcxx_assert_impl): Use __glibcxx_constexpr_assert.
5230         (__glibcxx_assert): Define as either __glibcxx_constexpr_assert
5231         or __glibcxx_assert_impl.
5232         (__glibcxx_assert_2): Remove
5233         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): Use
5234         __glibcxx_constexpr_assert instead of __glibcxx_assert_1.
5235         * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc:
5236         Adjust expected error.
5237         * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc:
5238         Likewise.
5239         * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
5240         Likewise.
5241         Likewise.
5242         * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
5243         Likewise.
5244         * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
5245         Likewise.
5246         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
5247         Likewise.
5248         * testsuite/23_containers/span/back_neg.cc: Likewise.
5249         * testsuite/23_containers/span/front_neg.cc: Likewise.
5250         * testsuite/23_containers/span/index_op_neg.cc: Likewise.
5252 2021-05-20  Patrick Palka  <ppalka@redhat.com>
5254         PR libstdc++/100639
5255         * include/bits/stl_iterator.h (reverse_iterator::difference_type):
5256         In C++20 mode, define in terms of iter_difference_t as per P0896R4.
5257         (reverse_iterator::reference): Likewise, but with iter_reference_t.
5258         (reverse_iterator::value_type): Likewise, but with iter_value_t.
5259         * testsuite/std/ranges/adaptors/reverse.cc (test08): New test.
5260         * testsuite/24_iterators/reverse_iterator/100639.cc: New test.
5262 2021-05-20  Joern Rennecke  <joern.rennecke@riscy-ip.com>
5264         PR libstdc++/100361
5265         * include/std/charconv (to_chars): Hide the overloads for
5266         floating-point types for 16 bit targets.
5267         * src/c++17/floating_to_chars.cc: Don't compile for 16 bit targets.
5268         * testsuite/20_util/to_chars/double.cc: Run this test only on
5269         size32plus targets.
5270         * testsuite/20_util/to_chars/float.cc: Likewise.
5271         * testsuite/20_util/to_chars/long_double.cc: Likewise.
5273 2021-05-18  Patrick Palka  <ppalka@redhat.com>
5275         PR libstdc++/100631
5276         * include/std/ranges (elements_view::_Sentinel::operator-): Use
5277         _M_distance_from in the other operator- overload too.
5278         * testsuite/std/ranges/adaptors/elements.cc (test06): Augment test.
5280 2021-05-18  Thomas Schwinge  <thomas@codesourcery.com>
5282         * testsuite/lib/prune.exp: Add note about 'dg-note'.
5284 2021-05-18  Patrick Palka  <ppalka@redhat.com>
5286         PR libstdc++/100475
5287         * include/std/ranges (__box::__box): Use non-list-initialization
5288         in member initializer list of in-place constructor of the
5289         partial specialization for semiregular types.
5290         (__box::operator->): Use std::__addressof.
5291         * testsuite/std/ranges/adaptors/detail/semiregular_box.cc
5292         (test02): New test.
5293         * testsuite/std/ranges/single_view.cc (test04): New test.
5295 2021-05-18  Patrick Palka  <ppalka@redhat.com>
5297         PR libstdc++/100621
5298         * include/std/ranges (reverse_view::_S_needs_cached_begin):
5299         Set to true if the underlying non-common random-access range
5300         doesn't have a sized sentinel.
5302 2021-05-18  Patrick Palka  <ppalka@redhat.com>
5304         PR libstdc++/100631
5305         * include/std/ranges (elements_view::_Iterator): Also befriend
5306         _Sentinel<!_Const>.
5307         (elements_view::_Sentinel::_M_equal): Templatize.
5308         (elements_view::_Sentinel::_M_distance_from): Split out from ...
5309         (elements_view::_Sentinel::operator-): ... here.  Depend on
5310         _Base2 instead of _Base in the return type.
5311         * testsuite/std/ranges/adaptors/elements.cc (test06, test07):
5312         New tests.
5314 2021-05-17  Thomas Rodgers  <rodgert@twrodgers.com>
5316         * include/bits/atomic_wait.h (__waiter::_M_do_wait_v): loop
5317         until value change observed.
5318         (__waiter_base::_M_laundered): New member.
5319         (__waiter_base::_M_notify): Check _M_laundered to determine
5320         whether to wake one or all.
5321         (__detail::__atomic_compare): Return true if call to
5322         __builtin_memcmp() == 0.
5323         (__waiter_base::_S_do_spin_v): Adjust predicate.
5324         * testsuite/29_atomics/atomic/wait_notify/100334.cc: New
5325         test.
5327 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
5329         PR libstdc++/100630
5330         * include/experimental/bits/fs_path.h (__is_constructible_from):
5331         Test construction from a const lvalue, not an rvalue.
5332         * testsuite/27_io/filesystem/path/construct/100630.cc: New test.
5333         * testsuite/experimental/filesystem/path/construct/100630.cc:
5334         New test.
5336 2021-05-17  Antony Polukhin  <antoshkka@gmail.com>
5338         PR libstdc++/89728
5339         * include/bits/locale_facets.h (ctype<basic_string<C,T,A>>):
5340         Declare (but do not define) partial specialization.
5341         * testsuite/22_locale/ctype/is/string/89728_neg.cc: New test.
5343 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
5345         * include/std/thread (jthread::_S_create): Fix static assert
5346         message.
5347         * testsuite/30_threads/jthread/95989.cc: Re-enable test.
5348         * testsuite/30_threads/jthread/jthread.cc: Do not require
5349         pthread effective target.
5350         * testsuite/30_threads/jthread/2.cc: Moved to...
5351         * testsuite/30_threads/jthread/version.cc: ...here.
5353 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
5355         * doc/Makefile.am: Simplify doxygen recipes and use --latex_cmd.
5356         * doc/Makefile.in: Regenerate.
5357         * doc/doxygen/user.cfg.in (LATEX_CMD_NAME): Add placeholder
5358         value.
5359         * scripts/run_doxygen (print_usage): Always print to stdout and
5360         do not exit.
5361         (fail): New function for exiting on error.
5362         (parse_options): Handle --latex_cmd. Do not treat --help the
5363         same as errors. Simplify handling of required arguments.
5365 2021-05-12  Jonathan Wakely  <jwakely@redhat.com>
5367         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
5368         Increase dg-timeout-factor to 4. Fix -Wunused-parameter
5369         warnings. Replace bitwise AND with logical AND in loop
5370         condition.
5371         * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
5372         Replace bitwise AND with logical AND in loop condition.
5373         * testsuite/util/pstl/test_utils.h: Remove unused parameter
5374         names.
5376 2021-05-11  Patrick Palka  <ppalka@redhat.com>
5378         * src/c++17/ryu/LOCAL_PATCHES: Update.
5379         * src/c++17/ryu/ryu_generic_128.h: Remove extern "C".
5380         Remove declarations for never-defined functions.
5381         * testsuite/20_util/to_chars/4.cc: New test.
5383 2021-05-11  Jonathan Wakely  <jwakely@redhat.com>
5385         * testsuite/20_util/headers/memory/synopsis.cc: Define C++98
5386         alternative for macro.
5387         * testsuite/20_util/shared_ptr/creation/99006.cc: Add effective
5388         target keyword.
5389         * testsuite/25_algorithms/copy/debug/99402.cc: Avoid C++11
5390         syntax.
5392 2021-05-11  Jonathan Wakely  <jwakely@redhat.com>
5394         * include/bits/allocator.h (allocator<void>) [C++20]: Add
5395         missing noexcept to constructor. Restore missing POCMA and
5396         is_always_equal_traits.
5397         [C++17]: Make construct and destroy members private and
5398         declare allocator_traits as a friend.
5399         * include/bits/memoryfwd.h (allocator_traits): Declare.
5400         * include/ext/malloc_allocator.h (malloc_allocator::allocate):
5401         Add nodiscard attribute. Add static assertion for LWG 3307.
5402         * include/ext/new_allocator.h (new_allocator::allocate): Add
5403         static assertion for LWG 3307.
5404         * testsuite/20_util/allocator/void.cc: Check that converting
5405         constructor is noexcept. Check for propagation traits and
5406         size_type and difference_type. Check that pointer and
5407         const_pointer are gone in C++20.
5409 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5411         * include/std/stop_token: Remove TODO comment.
5413 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5415         * include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)):
5416         Initialize a non-reference deleter from an rvalue, as per LWG
5417         3548.
5418         (__shared_ptr::_UniqCompatible): Add missing constraint.
5419         * testsuite/20_util/shared_ptr/cons/lwg3548.cc: New test.
5420         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Check
5421         constraints.
5423 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5425         * testsuite/17_intro/headers/c++2017/all_attributes.cc: Remove
5426         -std=gnu++17 from dg-options directive.
5427         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc:
5428         Likewise.
5429         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc:
5430         Likewise.
5431         * testsuite/17_intro/headers/c++2017/operator_names.cc:
5432         Likewise.
5433         * testsuite/17_intro/headers/c++2017/parallel_mode.cc: Likewise.
5434         * testsuite/17_intro/headers/c++2017/stdc++.cc: Likewise.
5435         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
5436         Likewise.
5437         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise.
5438         * testsuite/18_support/byte/81076.cc: Likewise.
5439         * testsuite/18_support/byte/global_neg.cc: Likewise.
5440         * testsuite/18_support/byte/ops.cc: Likewise.
5441         * testsuite/18_support/byte/requirements.cc: Likewise.
5442         * testsuite/18_support/headers/cfloat/values_c++17.cc: Likewise.
5443         * testsuite/18_support/launder/1.cc: Likewise.
5444         * testsuite/18_support/launder/nodiscard.cc: Likewise.
5445         * testsuite/18_support/launder/requirements.cc: Likewise.
5446         * testsuite/18_support/launder/requirements_neg.cc: Likewise.
5447         * testsuite/18_support/new_aligned.cc: Likewise.
5448         * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
5449         Likewise.
5450         * testsuite/19_diagnostics/error_code/is_error_code_v.cc:
5451         Likewise.
5452         * testsuite/19_diagnostics/error_condition/hash.cc: Likewise.
5453         * testsuite/20_util/addressof/requirements/constexpr.cc:
5454         Likewise.
5455         * testsuite/20_util/as_const/1.cc: Likewise.
5456         * testsuite/20_util/as_const/rvalue_neg.cc: Likewise.
5457         * testsuite/20_util/bind/83427.cc: Likewise.
5458         * testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
5459         * testsuite/20_util/bool_constant/requirements.cc: Likewise.
5460         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc:
5461         Likewise.
5462         * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
5463         Likewise.
5464         * testsuite/20_util/duration_cast/rounding.cc: Likewise.
5465         * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
5466         Likewise.
5467         * testsuite/20_util/from_chars/1_neg.cc: Likewise.
5468         * testsuite/20_util/from_chars/requirements.cc: Likewise.
5469         * testsuite/20_util/function/91456.cc: Likewise.
5470         * testsuite/20_util/function/cons/deduction.cc: Likewise.
5471         * testsuite/20_util/function_objects/83607.cc: Likewise.
5472         * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
5473         * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
5474         * testsuite/20_util/function_objects/not_fn/1.cc: Likewise.
5475         * testsuite/20_util/function_objects/not_fn/87538.cc: Likewise.
5476         * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
5477         Likewise.
5478         * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
5479         Likewise.
5480         * testsuite/20_util/has_unique_object_representations/value.cc:
5481         Likewise.
5482         * testsuite/20_util/hash/nullptr.cc: Likewise.
5483         * testsuite/20_util/in_place/requirements.cc: Likewise.
5484         * testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise.
5485         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
5486         Likewise.
5487         * testsuite/20_util/is_aggregate/requirements/typedefs.cc:
5488         Likewise.
5489         * testsuite/20_util/is_aggregate/value.cc: Likewise.
5490         * testsuite/20_util/is_invocable/83395.cc: Likewise.
5491         * testsuite/20_util/is_invocable/91456.cc: Likewise.
5492         * testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc:
5493         Likewise.
5494         * testsuite/20_util/is_invocable/requirements/typedefs.cc:
5495         Likewise.
5496         * testsuite/20_util/is_invocable/value.cc: Likewise.
5497         * testsuite/20_util/is_literal_type/deprecated-1z.cc: Likewise.
5498         * testsuite/20_util/is_nothrow_constructible/94003.cc: Likewise.
5499         * testsuite/20_util/is_nothrow_invocable/83395.cc: Likewise.
5500         * testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc:
5501         Likewise.
5502         * testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc: Likewise.
5503         * testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
5504         * testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc:
5505         Likewise.
5506         * testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
5507         Likewise.
5508         * testsuite/20_util/is_nothrow_swappable/value.cc: Likewise.
5509         * testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc:
5510         Likewise.
5511         * testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc:
5512         Likewise.
5513         * testsuite/20_util/is_nothrow_swappable_with/value.cc:
5514         Likewise.
5515         * testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc:
5516         Likewise.
5517         * testsuite/20_util/is_swappable/requirements/typedefs.cc:
5518         Likewise.
5519         * testsuite/20_util/is_swappable/value.cc: Likewise.
5520         * testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc:
5521         Likewise.
5522         * testsuite/20_util/is_swappable_with/requirements/typedefs.cc:
5523         Likewise.
5524         * testsuite/20_util/is_swappable_with/value.cc: Likewise.
5525         * testsuite/20_util/logical_traits/83134.cc: Likewise.
5526         * testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc:
5527         Likewise.
5528         * testsuite/20_util/logical_traits/requirements/typedefs.cc:
5529         Likewise.
5530         * testsuite/20_util/logical_traits/value.cc: Likewise.
5531         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
5532         * testsuite/20_util/pair/swap_cxx17.cc: Likewise.
5533         * testsuite/20_util/ratio/requirements/ratio_equal_v.cc:
5534         Likewise.
5535         * testsuite/20_util/reference_wrapper/83427.cc: Likewise.
5536         * testsuite/20_util/reference_wrapper/deduction.cc: Likewise.
5537         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
5538         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
5539         * testsuite/20_util/shared_ptr/requirements/weak_type.cc:
5540         Likewise.
5541         * testsuite/20_util/time_point/arithmetic/constexpr.cc:
5542         Likewise.
5543         * testsuite/20_util/time_point_cast/rounding.cc: Likewise.
5544         * testsuite/20_util/to_chars/3.cc: Likewise.
5545         * testsuite/20_util/to_chars/chars_format.cc: Likewise.
5546         * testsuite/20_util/to_chars/lwg3266.cc: Likewise.
5547         * testsuite/20_util/to_chars/requirements.cc: Likewise.
5548         * testsuite/20_util/tuple/78939.cc: Likewise.
5549         * testsuite/20_util/tuple/apply/1.cc: Likewise.
5550         * testsuite/20_util/tuple/apply/2.cc: Likewise.
5551         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
5552         * testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.
5553         * testsuite/20_util/tuple/make_from_tuple/2.cc: Likewise.
5554         * testsuite/20_util/tuple/swap_cxx17.cc: Likewise.
5555         * testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
5556         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
5557         * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
5558         Likewise.
5559         * testsuite/20_util/variable_templates_for_traits.cc: Likewise.
5560         * testsuite/20_util/void_t/1.cc: Likewise.
5561         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
5562         * testsuite/24_iterators/container_access.cc: Likewise.
5563         * testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
5564         Likewise.
5565         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc:
5566         Likewise.
5567         * testsuite/24_iterators/range_access/range_access_cpp17.cc:
5568         Likewise.
5569         * testsuite/24_iterators/range_access/range_access_cpp17_neg.cc:
5570         Likewise.
5571         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
5572         * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc:
5573         Likewise.
5574         * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
5575         * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
5576         Likewise.
5577         * testsuite/26_numerics/lcm/1.cc: Likewise.
5578         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
5579         * testsuite/26_numerics/valarray/deduction.cc: Likewise.
5580         * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc:
5581         Likewise.
5582         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc:
5583         Likewise.
5584         * testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc:
5585         Likewise.
5586         * testsuite/27_io/types/4.cc: Likewise.
5587         * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
5588         * testsuite/libstdc++-prettyprinters/91997.cc: Likewise.
5589         * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
5591 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5593         * testsuite/20_util/function_objects/searchers.cc: Remove
5594         -std=gnu++17 from dg-options directive.
5595         * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
5596         Likewise.
5597         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
5598         Likewise.
5599         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
5600         Likewise.
5601         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc:
5602         Likewise.
5603         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
5604         Likewise.
5605         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
5606         Likewise.
5607         * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
5608         Likewise.
5609         * testsuite/25_algorithms/clamp/1.cc: Likewise.
5610         * testsuite/25_algorithms/clamp/2.cc: Likewise.
5611         * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
5612         * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc:
5613         Likewise.
5614         * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc:
5615         Likewise.
5616         * testsuite/25_algorithms/for_each/for_each_n.cc: Likewise.
5617         * testsuite/25_algorithms/for_each/for_each_n_debug.cc:
5618         Likewise.
5619         * testsuite/25_algorithms/sample/1.cc: Likewise.
5620         * testsuite/25_algorithms/sample/2.cc: Likewise.
5621         * testsuite/25_algorithms/sample/3.cc: Likewise.
5622         * testsuite/25_algorithms/sample/81221.cc: Likewise.
5623         * testsuite/25_algorithms/search/searcher.cc: Likewise.
5624         * testsuite/26_numerics/exclusive_scan/1.cc: Likewise.
5625         * testsuite/26_numerics/inclusive_scan/1.cc: Likewise.
5626         * testsuite/26_numerics/reduce/1.cc: Likewise.
5627         * testsuite/26_numerics/reduce/2.cc: Likewise.
5628         * testsuite/26_numerics/transform_exclusive_scan/1.cc: Likewise.
5629         * testsuite/26_numerics/transform_inclusive_scan/1.cc: Likewise.
5630         * testsuite/26_numerics/transform_reduce/1.cc: Likewise.
5632 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5634         * testsuite/23_containers/array/cons/deduction.cc: Remove
5635         -std=gnu++17 from dg-options directive.
5636         * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
5637         * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
5638         Likewise.
5639         * testsuite/23_containers/array/requirements/constexpr_iter.cc:
5640         Likewise.
5641         * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
5642         Likewise.
5643         * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
5644         * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
5645         Likewise.
5646         * testsuite/23_containers/forward_list/cons/deduction.cc:
5647         Likewise.
5648         * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
5649         Likewise.
5650         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
5651         * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
5652         Likewise.
5653         * testsuite/23_containers/map/cons/deduction.cc: Likewise.
5654         * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
5655         * testsuite/23_containers/map/modifiers/insert/83226.cc:
5656         Likewise.
5657         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
5658         Likewise.
5659         * testsuite/23_containers/map/modifiers/merge.cc: Likewise.
5660         * testsuite/23_containers/map/modifiers/try_emplace/1.cc:
5661         Likewise.
5662         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
5663         * testsuite/23_containers/multimap/modifiers/extract.cc:
5664         Likewise.
5665         * testsuite/23_containers/multimap/modifiers/merge.cc: Likewise.
5666         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
5667         * testsuite/23_containers/multiset/modifiers/extract.cc:
5668         Likewise.
5669         * testsuite/23_containers/multiset/modifiers/merge.cc: Likewise.
5670         * testsuite/23_containers/priority_queue/deduction.cc: Likewise.
5671         * testsuite/23_containers/queue/deduction.cc: Likewise.
5672         * testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
5673         Likewise.
5674         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
5675         * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
5676         * testsuite/23_containers/set/modifiers/merge.cc: Likewise.
5677         * testsuite/23_containers/set/modifiers/node_swap.cc: Likewise.
5678         * testsuite/23_containers/stack/deduction.cc: Likewise.
5679         * testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
5680         Likewise.
5681         * testsuite/23_containers/unordered_map/cons/deduction.cc:
5682         Likewise.
5683         * testsuite/23_containers/unordered_map/modifiers/extract.cc:
5684         Likewise.
5685         * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
5686         Likewise.
5687         * testsuite/23_containers/unordered_map/modifiers/merge.cc:
5688         Likewise.
5689         * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
5690         Likewise.
5691         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
5692         Likewise.
5693         * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
5694         Likewise.
5695         * testsuite/23_containers/unordered_multimap/modifiers/merge.cc:
5696         Likewise.
5697         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
5698         Likewise.
5699         * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
5700         Likewise.
5701         * testsuite/23_containers/unordered_multiset/modifiers/merge.cc:
5702         Likewise.
5703         * testsuite/23_containers/unordered_set/cons/deduction.cc:
5704         Likewise.
5705         * testsuite/23_containers/unordered_set/modifiers/extract.cc:
5706         Likewise.
5707         * testsuite/23_containers/unordered_set/modifiers/merge.cc:
5708         Likewise.
5709         * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
5710         Likewise.
5711         * testsuite/23_containers/vector/cons/89164_c++17.cc: Likewise.
5712         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
5713         * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
5714         Likewise.
5716 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5718         * testsuite/21_strings/basic_string/79162.cc: Remove
5719         -std=gnu++17 from dg-options directive.
5720         * testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
5721         * testsuite/21_strings/basic_string/cons/char/79162.cc:
5722         Likewise.
5723         * testsuite/21_strings/basic_string/cons/char/86138.cc:
5724         Likewise.
5725         * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
5726         * testsuite/21_strings/basic_string/cons/char/deduction.cc:
5727         Likewise.
5728         * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc:
5729         Likewise.
5730         * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
5731         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc:
5732         Likewise.
5733         * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc:
5734         Likewise.
5735         * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
5736         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
5737         Likewise.
5738         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
5739         Likewise.
5740         * testsuite/21_strings/basic_string/hash/hash.cc: Likewise.
5741         * testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
5742         * testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
5743         * testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
5744         Likewise.
5745         * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
5746         Likewise.
5747         * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
5748         Likewise.
5749         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
5750         Likewise.
5751         * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
5752         Likewise.
5753         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
5754         Likewise.
5755         * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
5756         Likewise.
5757         * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
5758         Likewise.
5759         * testsuite/21_strings/basic_string/operations/compare/char/2.cc:
5760         Likewise.
5761         * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
5762         Likewise.
5763         * testsuite/21_strings/basic_string/operations/data/char/2.cc:
5764         Likewise.
5765         * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
5766         Likewise.
5767         * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc:
5768         Likewise.
5769         * testsuite/21_strings/basic_string/operations/find/char/5.cc:
5770         Likewise.
5771         * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
5772         Likewise.
5773         * testsuite/21_strings/basic_string/operators/char/5.cc:
5774         Likewise.
5775         * testsuite/21_strings/basic_string/operators/wchar_t/5.cc:
5776         Likewise.
5777         * testsuite/21_strings/basic_string_view/capacity/1.cc:
5778         Likewise.
5779         * testsuite/21_strings/basic_string_view/capacity/empty_neg.cc:
5780         Likewise.
5781         * testsuite/21_strings/basic_string_view/cons/char/1.cc:
5782         Likewise.
5783         * testsuite/21_strings/basic_string_view/cons/char/2.cc:
5784         Likewise.
5785         * testsuite/21_strings/basic_string_view/cons/char/3.cc:
5786         Likewise.
5787         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
5788         Likewise.
5789         * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc:
5790         Likewise.
5791         * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc:
5792         Likewise.
5793         * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc:
5794         Likewise.
5795         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
5796         Likewise.
5797         * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
5798         Likewise.
5799         * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
5800         Likewise.
5801         * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc:
5802         Likewise.
5803         * testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc:
5804         Likewise.
5805         * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc:
5806         Likewise.
5807         * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
5808         Likewise.
5809         * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
5810         Likewise.
5811         * testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc:
5812         Likewise.
5813         * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
5814         Likewise.
5815         * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
5816         Likewise.
5817         * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
5818         Likewise.
5819         * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
5820         Likewise.
5821         * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc:
5822         Likewise.
5823         * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
5824         Likewise.
5825         * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
5826         Likewise.
5827         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
5828         Likewise.
5829         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
5830         Likewise.
5831         * testsuite/21_strings/basic_string_view/include.cc: Likewise.
5832         * testsuite/21_strings/basic_string_view/inserters/94051.cc:
5833         Likewise.
5834         * testsuite/21_strings/basic_string_view/inserters/char/1.cc:
5835         Likewise.
5836         * testsuite/21_strings/basic_string_view/inserters/char/2.cc:
5837         Likewise.
5838         * testsuite/21_strings/basic_string_view/inserters/char/3.cc:
5839         Likewise.
5840         * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
5841         Likewise.
5842         * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
5843         Likewise.
5844         * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
5845         Likewise.
5846         * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
5847         Likewise.
5848         * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
5849         Likewise.
5850         * testsuite/21_strings/basic_string_view/literals/types.cc:
5851         Likewise.
5852         * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
5853         Likewise.
5854         * testsuite/21_strings/basic_string_view/literals/values.cc:
5855         Likewise.
5856         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
5857         Likewise.
5858         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
5859         Likewise.
5860         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
5861         Likewise.
5862         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
5863         Likewise.
5864         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
5865         Likewise.
5866         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
5867         Likewise.
5868         * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
5869         Likewise.
5870         * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
5871         Likewise.
5872         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
5873         Likewise.
5874         * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
5875         Likewise.
5876         * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc:
5877         Likewise.
5878         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
5879         Likewise.
5880         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
5881         Likewise.
5882         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
5883         Likewise.
5884         * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
5885         Likewise.
5886         * testsuite/21_strings/basic_string_view/operations/copy/char/2.cc:
5887         Likewise.
5888         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
5889         Likewise.
5890         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc:
5891         Likewise.
5892         * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
5893         Likewise.
5894         * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
5895         Likewise.
5896         * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
5897         Likewise.
5898         * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
5899         Likewise.
5900         * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
5901         Likewise.
5902         * testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
5903         Likewise.
5904         * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc:
5905         Likewise.
5906         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
5907         Likewise.
5908         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
5909         Likewise.
5910         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
5911         Likewise.
5912         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
5913         Likewise.
5914         * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
5915         Likewise.
5916         * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
5917         Likewise.
5918         * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
5919         Likewise.
5920         * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc:
5921         Likewise.
5922         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
5923         Likewise.
5924         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
5925         Likewise.
5926         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
5927         Likewise.
5928         * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
5929         Likewise.
5930         * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
5931         Likewise.
5932         * testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc:
5933         Likewise.
5934         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
5935         Likewise.
5936         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc:
5937         Likewise.
5938         * testsuite/21_strings/basic_string_view/operators/char/2.cc:
5939         Likewise.
5940         * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
5941         Likewise.
5942         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
5943         Likewise.
5944         * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
5945         Likewise.
5946         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
5947         Likewise.
5948         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
5949         Likewise.
5950         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
5951         Likewise.
5952         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
5953         Likewise.
5954         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
5955         Likewise.
5956         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
5957         Likewise.
5958         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
5959         Likewise.
5960         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
5961         Likewise.
5962         * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
5963         Likewise.
5964         * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
5965         Likewise.
5966         * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
5967         * testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
5968         * testsuite/21_strings/char_traits/requirements/char/99181.cc:
5969         Likewise.
5970         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
5972 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5974         * testsuite/20_util/memory_resource/1.cc: Remove -std=gnu++17
5975         from dg-options directive.
5976         * testsuite/20_util/memory_resource/2.cc: Likewise.
5977         * testsuite/20_util/monotonic_buffer_resource/1.cc: Likewise.
5978         * testsuite/20_util/monotonic_buffer_resource/93208.cc:
5979         Likewise.
5980         * testsuite/20_util/monotonic_buffer_resource/allocate.cc:
5981         Likewise.
5982         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc:
5983         Likewise.
5984         * testsuite/20_util/monotonic_buffer_resource/release.cc:
5985         Likewise.
5986         * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
5987         Likewise.
5988         * testsuite/20_util/polymorphic_allocator/1.cc: Likewise.
5989         * testsuite/20_util/polymorphic_allocator/construct_pair.cc:
5990         Likewise.
5991         * testsuite/20_util/polymorphic_allocator/resource.cc: Likewise.
5992         * testsuite/20_util/polymorphic_allocator/select.cc: Likewise.
5993         * testsuite/20_util/synchronized_pool_resource/allocate.cc:
5994         Likewise.
5995         * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
5996         Likewise.
5997         * testsuite/20_util/synchronized_pool_resource/cons.cc:
5998         Likewise.
5999         * testsuite/20_util/synchronized_pool_resource/cons_single.cc:
6000         Likewise.
6001         * testsuite/20_util/synchronized_pool_resource/is_equal.cc:
6002         Likewise.
6003         * testsuite/20_util/synchronized_pool_resource/multithreaded.cc:
6004         Likewise.
6005         * testsuite/20_util/synchronized_pool_resource/options.cc:
6006         Likewise.
6007         * testsuite/20_util/synchronized_pool_resource/release.cc:
6008         Likewise.
6009         * testsuite/20_util/synchronized_pool_resource/release_single.cc:
6010         Likewise.
6011         * testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc:
6012         Likewise.
6013         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
6014         Likewise.
6015         * testsuite/20_util/unsynchronized_pool_resource/cons.cc:
6016         Likewise.
6017         * testsuite/20_util/unsynchronized_pool_resource/is_equal.cc:
6018         Likewise.
6019         * testsuite/20_util/unsynchronized_pool_resource/options.cc:
6020         Likewise.
6021         * testsuite/20_util/unsynchronized_pool_resource/release.cc:
6022         Likewise.
6023         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
6024         Likewise.
6025         * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise.
6026         * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc:
6027         Likewise.
6028         * testsuite/23_containers/forward_list/pmr_typedefs.cc:
6029         Likewise.
6030         * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc:
6031         Likewise.
6032         * testsuite/23_containers/list/pmr_typedefs.cc: Likewise.
6033         * testsuite/23_containers/list/pmr_typedefs_debug.cc: Likewise.
6034         * testsuite/23_containers/map/pmr_typedefs.cc: Likewise.
6035         * testsuite/23_containers/map/pmr_typedefs_debug.cc: Likewise.
6036         * testsuite/23_containers/multimap/pmr_typedefs.cc: Likewise.
6037         * testsuite/23_containers/multimap/pmr_typedefs_debug.cc:
6038         Likewise.
6039         * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise.
6040         * testsuite/23_containers/multiset/pmr_typedefs_debug.cc:
6041         Likewise.
6042         * testsuite/23_containers/set/pmr_typedefs.cc: Likewise.
6043         * testsuite/23_containers/set/pmr_typedefs_debug.cc: Likewise.
6044         * testsuite/23_containers/unordered_map/pmr_typedefs.cc:
6045         Likewise.
6046         * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc:
6047         Likewise.
6048         * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc:
6049         Likewise.
6050         * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
6051         Likewise.
6052         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc:
6053         Likewise.
6054         * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
6055         Likewise.
6056         * testsuite/23_containers/unordered_set/pmr_typedefs.cc:
6057         Likewise.
6058         * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
6059         Likewise.
6060         * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise.
6061         * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc:
6062         Likewise.
6063         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
6065 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
6067         * testsuite/29_atomics/atomic/69769.cc: Remove -std=gnu++17 from
6068         dg-options.
6069         * testsuite/29_atomics/atomic/is_always_lock_free.cc:
6070         * testsuite/29_atomics/atomic/requirements/typedefs.cc:
6071         * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
6072         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc:
6073         * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
6074         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
6075         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
6076         * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
6077         Likewise.
6078         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc:
6079         Likewise.
6080         * testsuite/30_threads/shared_lock/70766.cc: Likewise.
6081         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
6082         * testsuite/30_threads/shared_mutex/cons/assign_neg.cc:
6083         Likewise.
6084         * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
6085         * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
6086         Likewise.
6087         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
6088         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
6089         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
6090         * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
6092 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
6094         * testsuite/20_util/any/assign/1.cc: Remove -std=gnu++17 from
6095         dg-options directive.
6096         * testsuite/20_util/any/assign/2.cc: Likewise.
6097         * testsuite/20_util/any/assign/emplace.cc: Likewise.
6098         * testsuite/20_util/any/assign/exception.cc: Likewise.
6099         * testsuite/20_util/any/assign/self.cc: Likewise.
6100         * testsuite/20_util/any/cons/1.cc: Likewise.
6101         * testsuite/20_util/any/cons/2.cc: Likewise.
6102         * testsuite/20_util/any/cons/90415.cc: Likewise.
6103         * testsuite/20_util/any/cons/92156.cc: Likewise.
6104         * testsuite/20_util/any/cons/aligned.cc: Likewise.
6105         * testsuite/20_util/any/cons/explicit.cc: Likewise.
6106         * testsuite/20_util/any/cons/in_place.cc: Likewise.
6107         * testsuite/20_util/any/cons/nontrivial.cc: Likewise.
6108         * testsuite/20_util/any/make_any.cc: Likewise.
6109         * testsuite/20_util/any/misc/any_cast.cc: Likewise.
6110         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise.
6111         * testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise.
6112         * testsuite/20_util/any/misc/swap.cc: Likewise.
6113         * testsuite/20_util/any/modifiers/1.cc: Likewise.
6114         * testsuite/20_util/any/modifiers/83658.cc: Likewise.
6115         * testsuite/20_util/any/modifiers/92156.cc: Likewise.
6116         * testsuite/20_util/any/observers/type.cc: Likewise.
6117         * testsuite/20_util/any/requirements.cc: Likewise.
6118         * testsuite/20_util/any/typedefs.cc: Likewise.
6119         * testsuite/20_util/optional/77288.cc: Likewise.
6120         * testsuite/20_util/optional/84601.cc: Likewise.
6121         * testsuite/20_util/optional/assignment/1.cc: Likewise.
6122         * testsuite/20_util/optional/assignment/2.cc: Likewise.
6123         * testsuite/20_util/optional/assignment/3.cc: Likewise.
6124         * testsuite/20_util/optional/assignment/4.cc: Likewise.
6125         * testsuite/20_util/optional/assignment/5.cc: Likewise.
6126         * testsuite/20_util/optional/assignment/6.cc: Likewise.
6127         * testsuite/20_util/optional/assignment/7.cc: Likewise.
6128         * testsuite/20_util/optional/assignment/8.cc: Likewise.
6129         * testsuite/20_util/optional/assignment/9.cc: Likewise.
6130         * testsuite/20_util/optional/bad_access.cc: Likewise.
6131         * testsuite/20_util/optional/cons/77727.cc: Likewise.
6132         * testsuite/20_util/optional/cons/85642.cc: Likewise.
6133         * testsuite/20_util/optional/cons/copy.cc: Likewise.
6134         * testsuite/20_util/optional/cons/deduction.cc: Likewise.
6135         * testsuite/20_util/optional/cons/default.cc: Likewise.
6136         * testsuite/20_util/optional/cons/move.cc: Likewise.
6137         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
6138         * testsuite/20_util/optional/cons/value.cc: Likewise.
6139         * testsuite/20_util/optional/cons/value_neg.cc: Likewise.
6140         * testsuite/20_util/optional/constexpr/cons/default.cc:
6141         Likewise.
6142         * testsuite/20_util/optional/constexpr/cons/value.cc: Likewise.
6143         * testsuite/20_util/optional/constexpr/in_place.cc: Likewise.
6144         * testsuite/20_util/optional/constexpr/make_optional.cc:
6145         Likewise.
6146         * testsuite/20_util/optional/constexpr/nullopt.cc: Likewise.
6147         * testsuite/20_util/optional/constexpr/observers/1.cc: Likewise.
6148         * testsuite/20_util/optional/constexpr/observers/2.cc: Likewise.
6149         * testsuite/20_util/optional/constexpr/observers/3.cc: Likewise.
6150         * testsuite/20_util/optional/constexpr/observers/4.cc: Likewise.
6151         * testsuite/20_util/optional/constexpr/observers/5.cc: Likewise.
6152         * testsuite/20_util/optional/constexpr/relops/1.cc: Likewise.
6153         * testsuite/20_util/optional/constexpr/relops/2.cc: Likewise.
6154         * testsuite/20_util/optional/constexpr/relops/3.cc: Likewise.
6155         * testsuite/20_util/optional/constexpr/relops/4.cc: Likewise.
6156         * testsuite/20_util/optional/constexpr/relops/5.cc: Likewise.
6157         * testsuite/20_util/optional/constexpr/relops/6.cc: Likewise.
6158         * testsuite/20_util/optional/hash.cc: Likewise.
6159         * testsuite/20_util/optional/in_place.cc: Likewise.
6160         * testsuite/20_util/optional/make_optional.cc: Likewise.
6161         * testsuite/20_util/optional/nullopt.cc: Likewise.
6162         * testsuite/20_util/optional/observers/1.cc: Likewise.
6163         * testsuite/20_util/optional/observers/2.cc: Likewise.
6164         * testsuite/20_util/optional/observers/3.cc: Likewise.
6165         * testsuite/20_util/optional/observers/4.cc: Likewise.
6166         * testsuite/20_util/optional/observers/5.cc: Likewise.
6167         * testsuite/20_util/optional/observers/6.cc: Likewise.
6168         * testsuite/20_util/optional/relops/1.cc: Likewise.
6169         * testsuite/20_util/optional/relops/2.cc: Likewise.
6170         * testsuite/20_util/optional/relops/3.cc: Likewise.
6171         * testsuite/20_util/optional/relops/4.cc: Likewise.
6172         * testsuite/20_util/optional/relops/5.cc: Likewise.
6173         * testsuite/20_util/optional/relops/6.cc: Likewise.
6174         * testsuite/20_util/optional/relops/7.cc: Likewise.
6175         * testsuite/20_util/optional/requirements.cc: Likewise.
6176         * testsuite/20_util/optional/swap/1.cc: Likewise.
6177         * testsuite/20_util/optional/swap/2.cc: Likewise.
6178         * testsuite/20_util/optional/typedefs.cc: Likewise.
6179         * testsuite/20_util/variant/80165.cc: Likewise.
6180         * testsuite/20_util/variant/85183.cc: Likewise.
6181         * testsuite/20_util/variant/86874.cc: Likewise.
6182         * testsuite/20_util/variant/87431.cc: Likewise.
6183         * testsuite/20_util/variant/87619.cc: Likewise.
6184         * testsuite/20_util/variant/91807.cc: Likewise.
6185         * testsuite/20_util/variant/any.cc: Likewise.
6186         * testsuite/20_util/variant/compile.cc: Likewise.
6187         * testsuite/20_util/variant/deduction.cc: Likewise.
6188         * testsuite/20_util/variant/exception_safety.cc: Likewise.
6189         * testsuite/20_util/variant/hash.cc: Likewise.
6190         * testsuite/20_util/variant/index_type.cc: Likewise.
6191         * testsuite/20_util/variant/relops/89851.cc: Likewise.
6192         * testsuite/20_util/variant/relops/90008.cc: Likewise.
6193         * testsuite/20_util/variant/run.cc: Likewise.
6194         * testsuite/20_util/variant/visit.cc: Likewise.
6196 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
6198         * testsuite/27_io/basic_filebuf/open/char/path.cc: Remove
6199         -std=gnu++17 from dg-options directive.
6200         * testsuite/27_io/basic_fstream/cons/char/path.cc: Likewise.
6201         * testsuite/27_io/basic_fstream/open/char/path.cc: Likewise.
6202         * testsuite/27_io/basic_ifstream/cons/char/path.cc: Likewise.
6203         * testsuite/27_io/basic_ifstream/open/char/path.cc: Likewise.
6204         * testsuite/27_io/basic_ofstream/cons/char/path.cc: Likewise.
6205         * testsuite/27_io/basic_ofstream/open/char/path.cc: Likewise.
6206         * testsuite/27_io/filesystem/directory_entry/86597.cc: Likewise.
6207         * testsuite/27_io/filesystem/directory_entry/lwg3171.cc:
6208         Likewise.
6209         * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
6210         * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
6211         * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
6212         * testsuite/27_io/filesystem/iterators/91067.cc: Likewise.
6213         * testsuite/27_io/filesystem/iterators/caching.cc: Likewise.
6214         * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
6215         Likewise.
6216         * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
6217         * testsuite/27_io/filesystem/iterators/recursion_pending.cc:
6218         Likewise.
6219         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
6220         Likewise.
6221         * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
6222         * testsuite/27_io/filesystem/operations/all.cc: Likewise.
6223         * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
6224         * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
6225         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
6226         * testsuite/27_io/filesystem/operations/create_directories.cc:
6227         Likewise.
6228         * testsuite/27_io/filesystem/operations/create_directory.cc:
6229         Likewise.
6230         * testsuite/27_io/filesystem/operations/create_symlink.cc:
6231         Likewise.
6232         * testsuite/27_io/filesystem/operations/current_path.cc:
6233         Likewise.
6234         * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
6235         * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
6236         * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
6237         * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
6238         * testsuite/27_io/filesystem/operations/last_write_time.cc:
6239         Likewise.
6240         * testsuite/27_io/filesystem/operations/permissions.cc:
6241         Likewise.
6242         * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
6243         * testsuite/27_io/filesystem/operations/read_symlink.cc:
6244         Likewise.
6245         * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
6246         * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
6247         * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
6248         * testsuite/27_io/filesystem/operations/rename.cc: Likewise.
6249         * testsuite/27_io/filesystem/operations/resize_file.cc:
6250         Likewise.
6251         * testsuite/27_io/filesystem/operations/space.cc: Likewise.
6252         * testsuite/27_io/filesystem/operations/status.cc: Likewise.
6253         * testsuite/27_io/filesystem/operations/symlink_status.cc:
6254         Likewise.
6255         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
6256         Likewise.
6257         * testsuite/27_io/filesystem/operations/weakly_canonical.cc:
6258         Likewise.
6259         * testsuite/27_io/filesystem/path/append/path.cc: Likewise.
6260         * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
6261         * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
6262         * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
6263         * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
6264         * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
6265         * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
6266         * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
6267         * testsuite/27_io/filesystem/path/concat/92853.cc: Likewise.
6268         * testsuite/27_io/filesystem/path/concat/94063.cc: Likewise.
6269         * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
6270         * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
6271         * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
6272         * testsuite/27_io/filesystem/path/construct/90281.cc: Likewise.
6273         * testsuite/27_io/filesystem/path/construct/90634.cc: Likewise.
6274         * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
6275         * testsuite/27_io/filesystem/path/construct/default.cc:
6276         Likewise.
6277         * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
6278         * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
6279         * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
6280         * testsuite/27_io/filesystem/path/construct/string_view.cc:
6281         Likewise.
6282         * testsuite/27_io/filesystem/path/decompose/extension.cc:
6283         Likewise.
6284         * testsuite/27_io/filesystem/path/decompose/filename.cc:
6285         Likewise.
6286         * testsuite/27_io/filesystem/path/decompose/parent_path.cc:
6287         Likewise.
6288         * testsuite/27_io/filesystem/path/decompose/relative_path.cc:
6289         Likewise.
6290         * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
6291         Likewise.
6292         * testsuite/27_io/filesystem/path/decompose/root_name.cc:
6293         Likewise.
6294         * testsuite/27_io/filesystem/path/decompose/root_path.cc:
6295         Likewise.
6296         * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
6297         * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc:
6298         Likewise.
6299         * testsuite/27_io/filesystem/path/factory/u8path.cc: Likewise.
6300         * testsuite/27_io/filesystem/path/generation/normal.cc:
6301         Likewise.
6302         * testsuite/27_io/filesystem/path/generation/normal2.cc:
6303         Likewise.
6304         * testsuite/27_io/filesystem/path/generation/proximate.cc:
6305         Likewise.
6306         * testsuite/27_io/filesystem/path/generation/relative.cc:
6307         Likewise.
6308         * testsuite/27_io/filesystem/path/generic/94242.cc: Likewise.
6309         * testsuite/27_io/filesystem/path/generic/generic_string.cc:
6310         Likewise.
6311         * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
6312         * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
6313         * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
6314         * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
6315         * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
6316         * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
6317         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
6318         Likewise.
6319         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
6320         Likewise.
6321         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
6322         Likewise.
6323         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
6324         Likewise.
6325         * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
6326         * testsuite/27_io/filesystem/path/native/alloc.cc: Likewise.
6327         * testsuite/27_io/filesystem/path/native/string-char8_t.cc:
6328         Likewise.
6329         * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
6330         * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
6331         * testsuite/27_io/filesystem/path/nonmember/cmp.cc: Likewise.
6332         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc:
6333         Likewise.
6334         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
6335         * testsuite/27_io/filesystem/path/query/empty_neg.cc:
6336         * testsuite/27_io/filesystem/path/query/has_extension.cc:
6337         Likewise.
6338         * testsuite/27_io/filesystem/path/query/has_filename.cc:
6339         Likewise.
6340         * testsuite/27_io/filesystem/path/query/has_parent_path.cc:
6341         Likewise.
6342         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
6343         Likewise.
6344         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
6345         Likewise.
6346         * testsuite/27_io/filesystem/path/query/has_root_name.cc:
6347         Likewise.
6348         * testsuite/27_io/filesystem/path/query/has_root_path.cc:
6349         Likewise.
6350         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
6351         * testsuite/27_io/filesystem/path/query/is_absolute.cc:
6352         Likewise.
6353         * testsuite/27_io/filesystem/path/query/is_relative.cc:
6354         Likewise.
6355         * testsuite/experimental/filesystem/path/construct/string_view.cc:
6356         Likewise.
6358 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
6360         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
6361         Remove -std=gnu++17 from dg-options.
6362         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
6363         Likewise.
6364         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc:
6365         Likewise.
6366         * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc:
6367         Likewise.
6368         * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
6369         * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
6370         Likewise.
6371         * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
6372         Likewise.
6373         * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc:
6374         Likewise.
6375         * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc:
6376         Likewise.
6377         * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
6378         Likewise.
6379         * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
6380         Likewise.
6381         * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
6382         Likewise.
6383         * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
6384         Likewise.
6385         * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc:
6386         Likewise.
6387         * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc:
6388         Likewise.
6389         * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
6390         Likewise.
6391         * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
6392         Likewise.
6393         * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
6394         Likewise.
6395         * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc:
6396         Likewise.
6397         * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc:
6398         Likewise.
6399         * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc:
6400         Likewise.
6401         * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
6402         Likewise.
6403         * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
6404         Likewise.
6405         * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc:
6406         Likewise.
6407         * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc:
6408         Likewise.
6409         * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc:
6410         Likewise.
6411         * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc:
6412         Likewise.
6413         * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc:
6414         Likewise.
6415         * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc:
6416         Likewise.
6417         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
6418         Likewise.
6419         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
6420         Likewise.
6421         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc:
6422         Likewise.
6423         * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc:
6424         Likewise.
6425         * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc:
6426         Likewise.
6427         * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc:
6428         Likewise.
6429         * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
6430         Likewise.
6431         * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc:
6432         Likewise.
6433         * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
6434         Likewise.
6435         * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
6436         Likewise.
6437         * testsuite/25_algorithms/pstl/alg_sorting/includes.cc:
6438         Likewise.
6439         * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
6440         * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc:
6441         Likewise.
6442         * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
6443         Likewise.
6444         * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
6445         Likewise.
6446         * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc:
6447         Likewise.
6448         * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
6449         Likewise.
6450         * testsuite/25_algorithms/pstl/alg_sorting/set.cc: Likewise.
6451         * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: Likewise.
6452         * testsuite/25_algorithms/pstl/feature_test-2.cc: Likewise.
6453         * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
6454         * testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise.
6455         * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
6456         * testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
6457         * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
6458         Likewise.
6459         * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
6460         * testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
6461         * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc:
6462         Likewise.
6463         * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc:
6464         Likewise.
6466 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
6468         * testsuite/20_util/scoped_allocator/69293_neg.cc: Add dg-error
6469         for additional errors in C++20.
6470         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
6471         Likewise.
6472         * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
6473         * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
6475 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
6477         * testsuite/20_util/variant/compile.cc: Rename 'any' to avoid
6478         clash with std::any.
6480 2021-05-07  Jonathan Wakely  <jwakely@redhat.com>
6482         * include/std/istream (__rvalue_stream_extraction_t): Replace
6483         use of __rval_streamable.
6484         * include/std/ostream (__rvalue_stream_insertion_t): Likewise.
6485         (__rval_streamable): Remove.
6486         (_Require_derived_from_ios_base, __derived_from_ios_base): New
6487         helper for checking constraints.
6488         * testsuite/27_io/basic_istream/extractors_other/char/4.cc: Fix
6489         reference to the wrong subclause of the standard.
6490         * testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc:
6491         Likewise.
6492         * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
6493         Likewise.
6494         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
6495         Likewise.
6496         * testsuite/27_io/basic_ostream/inserters_other/char/99692.cc:
6497         New test.
6498         * testsuite/27_io/filesystem/path/io/dr2989.cc: Adjust pruned
6499         errors.
6501 2021-05-06  Jonathan Wakely  <jwakely@redhat.com>
6503         * include/bits/stl_algobase.h (__copy_move, __copy_move_backward):
6504         Improve static_assert messages.
6505         * testsuite/25_algorithms/copy/58982.cc: Adjust expected output.
6506         * testsuite/25_algorithms/copy_n/58982.cc: Likewise.
6508 2021-05-06  Patrick Palka  <ppalka@redhat.com>
6510         * include/std/ranges (filter_view::_Iterator::base): Make the
6511         const& overload unconstrained and return a const reference as
6512         per LWG 3533.  Make unconditionally noexcept.
6513         (transform_view::_Iterator::base): Likewise.
6514         (elements_view::_Iterator::base): Likewise.
6516 2021-05-06  Patrick Palka  <ppalka@redhat.com>
6518         * include/bits/stl_iterator.h (move_iterator::base): Make the
6519         const& overload unconstrained and return a const reference as
6520         per LWG 3391.  Make unconditionally noexcept.
6521         (counted_iterator::base): Likewise.
6522         * testsuite/24_iterators/move_iterator/lwg3391.cc: New test.
6523         * testsuite/24_iterators/move_iterator/move_only.cc: Adjust
6524         has_member_base concept to decay-copy the result of base().
6526 2021-05-06  Jonathan Wakely  <jwakely@redhat.com>
6528         * include/std/type_traits (remove_cvref_t): Define in terms of
6529         remove_cvref.
6530         * testsuite/20_util/remove_cvref/value.cc: Check alias.
6532 2021-05-06  Jonathan Wakely  <jwakely@redhat.com>
6534         Revert:
6535         2021-05-05  Jonathan Wakely  <jwakely@redhat.com>
6537         * include/std/charconv (__from_chars_alnum): Pass unsigned
6538         char to std::isdigit.
6540 2021-05-05  Patrick Palka  <ppalka@redhat.com>
6542         * include/bits/ranges_util.h (enable_borrowed_range<subrange>):
6543         Remove constraints on this partial specialization.
6544         * include/std/ranges (enable_borrowed_range<iota_view>):
6545         Likewise.
6547 2021-05-05  Patrick Palka  <ppalka@redhat.com>
6549         * include/std/ranges (transform_view::_Iterator::iter_swap):
6550         Remove as per LWG 3520.
6551         (join_view::_Iterator::iter_swap): Add indirectly_swappable
6552         constraint as per LWG 3517.
6554 2021-05-05  Jonathan Wakely  <jwakely@redhat.com>
6556         * testsuite/20_util/function_objects/invoke/3.cc: Check feature
6557         test macro.
6558         * testsuite/20_util/function_objects/invoke/version.cc: New test.
6560 2021-05-05  Jonathan Wakely  <jwakely@redhat.com>
6562         * include/std/charconv (__from_chars_alnum): Pass unsigned
6563         char to std::isdigit.
6565 2021-05-05  Corentin Gay  <gay@adacore.com>
6567         * acinclude.m4: Add VxWorks-specific case for the
6568         configuration of ctypes.
6569         * configure: Regenerate.
6570         * config/locale/vxworks/ctype_members.cc: Add VxWorks-specific
6571         version.
6572         * config/os/vxworks/ctype_base.h: Adjust for VxWorks7+.
6573         * config/os/vxworks/ctype_configure_char.cc: Likewise.
6574         * config/os/vxworks/ctype_inline.h: Likewise.
6575         * testsuite/28_regex/traits/char/isctype.cc: Defines
6576         NEWLINE_IN_CLASS_BLANK if the target is VxWorks.
6577         * testsuite/28_regex/traits/wchar_t/isctype.cc: Likewise.
6579 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
6581         * include/std/future (promise::set_value): Check for existence
6582         of shared state before dereferncing it.
6583         (promise::set_exception, promise::set_value_at_thread_exit)
6584         (promise::set_exception_at_thread_exit): Likewise.
6585         (promise<R&>::set_value, promise<R&>::set_exception)
6586         (promise<R&>::set_value_at_thread_exit)
6587         (promise<R&>::set_exception_at_thread_exit): Likewise.
6588         (promise<void>::set_value, promise<void>::set_exception)
6589         (promise<void>::set_value_at_thread_exit)
6590         (promise<void>::set_exception_at_thread_exit): Likewise.
6591         * testsuite/30_threads/promise/members/at_thread_exit2.cc:
6592         Remove unused variable.
6594 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
6596         * include/bits/basic_string.h (basic_string(const CharT*, const A&)):
6597         Do not do arithmetic on null pointer.
6599 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
6601         * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
6602         (find_key_pointer(key_const_reference, false_type))
6603         (find_key_pointer(key_const_reference, true_type)): Do not
6604         dereference null pointer.
6606 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
6608         * testsuite/20_util/from_chars/3.cc: Use unsigned type to avoid
6609         overflow.
6610         * testsuite/24_iterators/reverse_iterator/2.cc: Do not add
6611         non-zero value to null pointer.
6612         * testsuite/25_algorithms/copy_backward/move_iterators/69478.cc:
6613         Use past-the-end iterator for result.
6614         * testsuite/25_algorithms/move_backward/69478.cc: Likewise.
6615         * testsuite/25_algorithms/move_backward/93872.cc: Likewise.
6617 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
6619         PR libstdc++/100384
6620         * include/std/variant (__get_t): New alias template yielding the
6621         return type of std::get<N> on a variant.
6622         (__visit_result_t): New alias template yielding the result of
6623         std::visit.
6624         (__same_types): Move into namespace __detail::__variant.
6625         (__check_visitor_results): Likewise. Use __invoke_result_t and
6626         __get_t.
6627         (__check_visitor_result): Remove.
6628         (visit): Use __visit_result_t for return type.
6629         * testsuite/20_util/variant/100384.cc: New test.
6631 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
6633         * acinclude.m4 (GLIBCXX_ENABLE_INT128_FLOAT128): Remove
6634         checks for __int128 and rename to GLIBCXX_ENABLE_FLOAT128.
6635         * config.h.in: Regenerate.
6636         * configure: Regenerate.
6637         * configure.ac: Adjust to use GLIBCXX_ENABLE_FLOAT128.
6638         * include/bits/random.h (_Select_uint_least_t<s, 1>):
6639         Use __SIZEOF_INT128__ to decide whether to use __int128.
6640         * include/std/charconv (__to_chars_unsigned_type): Likewise.
6642 2021-05-03  Gerald Pfeifer  <gerald@pfeifer.com>
6644         * doc/xml/manual/ctype.xml: Move unix.org reference to https.
6645         * doc/html/manual/facets.html: Regenerate.
6647 2021-04-30  Patrick Palka  <ppalka@redhat.com>
6649         * include/std/ranges (__detail::__non_propating_cache): Define
6650         as per P2328.
6651         (join_view): Remove constraints on the value and reference types
6652         of the wrapped iterator type as per P2328.
6653         (join_view::_Iterator::_M_satisfy): Adjust as per P2328.
6654         (join_view::_Iterator::operator++): Likewise.
6655         (join_view::_M_inner): Use __non_propating_cache as per P2328.
6656         Remove now-redundant use of __maybe_present_t.
6657         * testsuite/std/ranges/adaptors/join.cc: Include <array>.
6658         (test10): New test.
6660 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
6662         * include/bits/basic_string.h (__cpp_lib_constexpr_string):
6663         Only define for C++17 and later.
6664         * include/std/version (__cpp_lib_semaphore): Fix condition
6665         to match the one in <semaphore>.
6667 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
6669         * acinclude.m4 (GLIBCXX_CHECK_INT64_T): Delete.
6670         * config.h.in: Regenerate.
6671         * configure: Regenerate.
6672         * configure.ac: Do not use GLIBCXX_CHECK_INT64_T.
6673         * include/bits/postypes.h: Remove include of <stdint.h> and
6674         definition/undefinition of the __STDC_LIMIT_MACROS and
6675         __STDC_CONSTANT_MACROS macros.
6676         (streamoff): Use __INT64_TYPE__ if defined.
6678 2021-04-30  Patrick Palka  <ppalka@redhat.com>
6680         * include/std/ranges (split_view::_InnerIter::operator++):
6681         Depend on _Base instead of _Vp directly, as per LWG 3532.
6683 2021-04-30  Patrick Palka  <ppalka@redhat.com>
6685         * include/bits/ranges_util.h (subrange::subrange): Avoid
6686         list-initialization in delegating constructor.
6687         * include/std/ranges (single_view): Replace implicit guide
6688         with explicit deduction guide that decays its argument.
6689         (_Single::operator()): Avoid CTAD when constructing the
6690         single_view object.
6691         (_Iota::operator()): Avoid list-initialization.
6692         (__detail::__can_filter_view, _Filter::operator()): Likewise.
6693         (__detail::__can_transform_view, _Transform::operator()): Likewise.
6694         (take_view::begin): Likewise.
6695         (__detail::__can_take_view, _Take::operator()): Likewise.
6696         (__detail::__can_take_while_view, _TakeWhile::operator()): Likewise.
6697         (__detail::__can_drop_view, _Drop::operator()): Likewise.
6698         (__detail::__can_drop_while_view, _DropWhile::operator()): Likewise.
6699         (split_view::split_view): Use views::single when initializing
6700         _M_pattern.
6701         (__detail::__can_split_view, _Split::operator()): Avoid
6702         list-initialization.
6703         (_Counted::operator()): Likewise.
6704         * testsuite/std/ranges/p2367.cc: New test.
6706 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
6708         PR libstdc++/60497
6709         * include/bits/basic_ios.tcc (basic_ios::copyfmt): use
6710         std::addressof.
6711         * include/bits/basic_string.tcc (basic_string::swap)
6712         (basic_string::assign): Likewise.
6713         * include/bits/deque.tcc (deque::operator=(const deque&)):
6714         Likewise.
6715         * include/bits/stl_tree.h (_Rb_tree::operator=(const * _Rb_tree&)):
6716         Likewise.
6717         * include/bits/vector.tcc (vector::operator=(const vector&)):
6718         Likewise.
6720 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
6722         * include/std/istream (operator>>(Istream&&, x&)): Simplify, as
6723         per LWG 1203.
6724         * include/std/ostream (operator<<(Ostream&&, const x&)):
6725         Likewise.
6726         * testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc:
6727         Adjust dg-error pattern.
6728         * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc:
6729         Likewise.
6730         * testsuite/27_io/basic_istream/extractors_other/char/4.cc: Define
6731         is_extractable trait to replace std::__is_extractable. Make it
6732         work with rvalue streams as well as lvalues, to replace f() and
6733         g() helper functions.
6734         * testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc:
6735         Likewise.
6736         * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
6737         Define is_insertable trait to replace std::__is_insertable. Make
6738         it work with rvalue streams as well as lvalues, to replace f()
6739         and g() helper functions.
6740         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
6741         Likewise.
6742         * testsuite/27_io/filesystem/path/io/dr2989.cc: Prune additional
6743         errors from new constraints.
6744         * testsuite/27_io/rvalue_streams-2.cc: Remove PR 80675 checks,
6745         which are no longer expected to compile.
6746         * testsuite/27_io/rvalue_streams.cc: Adjust existing test.
6747         Verify LWG 1203 changes.
6749 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
6751         PR libstdc++/100285
6752         * include/experimental/socket (__basic_socket_impl::set_option)
6753         (__basic_socket_impl::get_option) [!_GLIBCXX_HAVE_SYS_SOCKET_H]:
6754         Just set error code.
6755         * testsuite/experimental/net/socket/socket_base.cc: CHeck
6756         for <sys/socket.h> not <socket.h>.
6758 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
6760         PR libstdc++/100180
6761         PR libstdc++/100286
6762         PR libstdc++/100351
6763         * testsuite/experimental/net/internet/address/v4/comparisons.cc:
6764         Use new effective-target keyword.
6765         * testsuite/experimental/net/internet/address/v4/cons.cc:
6766         Likewise.
6767         * testsuite/experimental/net/internet/address/v4/creation.cc:
6768         Likewise.
6769         * testsuite/experimental/net/internet/address/v4/members.cc:
6770         Likewise.
6771         * testsuite/experimental/net/internet/address/v6/members.cc:
6772         Likewise.
6773         * testsuite/experimental/net/internet/resolver/base.cc:
6774         Likewise.
6775         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
6776         Likewise.
6777         * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
6778         Likewise.
6779         * testsuite/experimental/net/internet/socket/opt.cc:
6780         Likewise.
6781         * testsuite/experimental/net/internet/tcp.cc:
6782         Likewise.
6783         * testsuite/experimental/net/internet/udp.cc:
6784         Likewise.
6785         * testsuite/lib/libstdc++.exp (check_effective_target_net_ts_ip):
6786         New proc to check net_ts_ip et.
6788 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
6790         PR libstdc++/97930
6791         * testsuite/20_util/pair/requirements/structural.cc: New test.
6793 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
6795         * include/bits/stl_pair.h (pair) [__cplusplus > 202002]: Add
6796         new definitions for constructors and assignment operators using
6797         concepts for constraints.
6798         * testsuite/20_util/pair/cons/99957.cc: Disable for C++20 and
6799         later.
6800         * testsuite/20_util/pair/cons/explicit_construct.cc: Adjust
6801         expected error messages to also match C++20 errors.
6803 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
6805         PR libstdc++/99957
6806         * include/bits/stl_pair.h (_PCC::_MoveCopyPair, _PCC::_CopyMovePair):
6807         Combine and replace with ...
6808         (_PCC::_DeprConsPair): New SFINAE helper function.
6809         (pair): Merge preprocessor blocks so that all C++03 members
6810         are defined together at the end.
6811         (pair::pair(const _T1&, _U2&&), pair::pair(_U1&&, const _T2&)):
6812         Replace _T1 and _T2 parameters with __null_ptr_constant and
6813         adjust constraints.
6814         * testsuite/20_util/pair/40925.cc: Use nullptr instead of 0.
6815         * testsuite/20_util/pair/cons/explicit_construct.cc: Likewise.
6816         * testsuite/20_util/pair/cons/99957.cc: New test.
6818 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
6820         * include/bits/basic_string.h (__cpp_lib_constexpr_string): Define.
6821         * include/std/version (__cpp_lib_constexpr_string): Define.
6822         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
6823         Check for __cpp_lib_constexpr_string.
6824         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
6825         Likewise.
6826         * testsuite/21_strings/char_traits/requirements/version.cc: New test.
6828 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
6830         * doc/Makefile.am (stamp-pdf-doxygen): Improve comment about
6831         dealing with errors. Use '@' to prevent shell command being
6832         echoed.
6833         * doc/Makefile.in: Regenerate.
6835 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
6837         PR libstdc++/100298
6838         * include/bits/std_thread.h (thread::hardware_concurrency): Add
6839         missing noexcept to inline definition for non-gthreads targets.
6841 2021-04-28  Patrick Palka  <ppalka@redhat.com>
6843         PR libstdc++/100187
6844         PR libstdc++/100237
6845         PR libstdc++/100249
6846         PR libstdc++/100287
6847         * include/bits/ranges_algo.h (__search_n_fn::operator()): Give
6848         the __value_comp lambda an explicit bool return type.
6849         (__is_permutation_fn::operator()): Give the __proj_scan local
6850         variable auto&& return type.  Give the __comp_scan lambda an
6851         explicit bool return type.
6852         (__remove_fn::operator()): Give the __pred lambda an explicit
6853         bool return type.
6854         (__partition_fn::operator()): Don't std::move __first twice
6855         when returning an empty subrange.
6856         (__min_fn::operator()): Don't std::move __comp.
6857         (__max_fn::operator()): Likewise.
6858         (__minmax_fn::operator()): Likewise.
6860 2021-04-27  Patrick Palka  <ppalka@redhat.com>
6862         PR libstdc++/100290
6863         * include/std/ranges (join_view::_Iterator::operator++): Correct
6864         the return type of the lambda to avoid returning a copy of
6865         _M_parent->_M_inner.
6866         * testsuite/std/ranges/adaptors/join.cc (test10): New test.
6868 2021-04-27  Jakub Jelinek  <jakub@redhat.com>
6870         Revert:
6871         2021-04-22  Jakub Jelinek  <jakub@redhat.com>
6873         PR target/100182
6874         * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for
6875         ia32.
6876         * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for
6877         ia32.
6879 2021-04-27  Jonathan Wakely  <jwakely@redhat.com>
6881         * include/experimental/internet (address_v6::bytes_type): Adjust
6882         formatting.
6883         (basic_endpoint): Define _M_is_v6() to put all checks for
6884         AF_INET6 in one place.
6885         (basic_endpoint::resize): Simplify.
6886         (operator==(const tcp&, const tcp&)): Add constexpr and noexcept.
6887         (operator!=(const tcp&, const tcp&)): Likewise.
6888         (operator==(const udp&, const udp&)): Likewise.
6889         (operator!=(const udp&, const udp&)): Likewise.
6890         * testsuite/experimental/net/internet/tcp.cc: New test.
6891         * testsuite/experimental/net/internet/udp.cc: New test.
6893 2021-04-27  Jonathan Wakely  <jwakely@redhat.com>
6895         PR libstdc++/100286
6896         * include/experimental/internet (resolver_errc, resolver_category())
6897         (make_error_code, make_error_condition): Define unconditionally,
6898         only make enumerators and use of gai_strerror depend on the
6899         availability of <netdb.h>.
6900         (address_v4::to_string): Use correct constant for string length.
6901         (address_v4::to_string, address_v6::to_string): Define
6902         unconditionally, throw if unsupported.
6903         (make_address_v4, make_address_v6): Define unconditionally.
6904         Return an error if unsupported.
6905         (tcp, udp, v6_only, unicast::hops, multicast::*): Define
6906         conditionally,
6907         * testsuite/experimental/net/internet/socket/opt.cc: Check for
6908         <netinet/in.h> and <netinet/tcp.h> before using types from
6909         namespace net::ip.
6911 2021-04-27  Jonathan Wakely  <jwakely@redhat.com>
6913         PR libstdc++/100285
6914         * include/experimental/internet (resolver_base::flags):
6915         Define overloaded operators as hidden friends.
6916         * include/experimental/socket (socket_base::message_flags):
6917         Likewise.
6919 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6921         * include/experimental/internet (tcp::no_delay, v6_only)
6922         (unicast::hops, multicast::hops, multicast::enable_loopback):
6923         Change access of base class and static data members. Add
6924         using-declaration for __socket_crtp::operator=(_Tp).
6925         (multicast::__mcastopt): New type.
6926         (multicast::join_group, multicast::leave_group): Derive from
6927         __mcastopt for common implementation.
6928         * include/experimental/socket: Add comment.
6929         * testsuite/experimental/net/internet/socket/opt.cc: New test.
6930         * testsuite/experimental/net/socket/socket_base.cc: Check for
6931         protected constructor/destructor of socket_base. Check for
6932         explicit constructors of socket option classes.
6934 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6936         * include/experimental/bits/net.h (__socket_base): Add
6937         bool template parameter to allow BooleanSocketOption and
6938         IntegerSocketOption to have different __socket_base<int>
6939         base classes.
6940         (__socket_base<bool>): Adjust base class.
6941         (__socket_base<int>): Add partial specialization.
6942         (__socket_crtp::operator=(_Tp)): Add noexcept-specifier.
6943         * include/experimental/socket (socket_base::broadcast)
6944         (socket_base::debug, socket_base::do_not_route)
6945         (socket_base::keep_alive, socket_base::linger)
6946         (socket_base::out_of_band_inline)
6947         (socket_base::receive_buffer_size)
6948         (socket_base::receive_low_watermark)
6949         (socket_base::reuse_address, socket_base::send_buffer_size)
6950         (socket_base::send_low_watermark): Add using-declaration for
6951         __socket_crtp::operator=(_Tp).
6952         * testsuite/experimental/net/socket/socket_base.cc: Check
6953         properties of socket option types.
6955 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6957         * include/experimental/internet (resolver_base::flags): Remove
6958         enumerators. Initialize constants directly with desired values.
6959         Make all operators constexpr and noexcept.
6960         * testsuite/experimental/net/internet/resolver/base.cc: Use
6961         __gnu_test::test_bitmask_values for bitmask type. Check
6962         construction and destruction is protected.
6964 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6966         * include/bits/semaphore_base.h: Include <exception> and <errno.h>.
6968 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6970         PR libstdc++/100259
6971         * include/experimental/internet (net::ip::make_error_code)
6972         (net::ip::make_error_condition, net::ip::make_network_v4)
6973         (net::ip::operator==(const udp&, const udp&)): Add 'inline'.
6975 2021-04-24  David Edelsohn  <dje.gcc@gmail.com>
6977         * testsuite/lib/dg-options.exp (atomic_link_flags): New.
6978         (add_options_for_libatomic): Use atomic_link_flags.
6980 2021-04-23  Jonathan Wakely  <jwakely@redhat.com>
6982         PR libstdc++/100180
6983         * include/experimental/io_context (io_context): Define
6984         dummy_pollfd type so that most member functions still compile
6985         without <poll.h> and struct pollfd.
6987 2021-04-23  Jonathan Wakely  <jwakely@redhat.com>
6989         * include/experimental/io_context (io_context::async_wait): Add
6990         comment.
6991         * include/experimental/socket (basic_socket::async_connect):
6992         Cast wait_type constant to int.
6993         (basic_datagram_socket::async_receive): Likewise.
6994         (basic_datagram_socket::async_receive_from): Likewise.
6995         (basic_datagram_socket::async_send): Likewise.
6996         (basic_datagram_socket::async_send_to): Likewise.
6997         (basic_stream_socket::async_receive): Likewise.
6998         (basic_stream_socket::async_send): Likewise. Use io_context
6999         parameter directly, instead of via an executor.
7000         (basic_socket_acceptor::async_accept): Likewise.
7002 2021-04-23  Jonathan Wakely  <jwakely@redhat.com>
7004         * include/experimental/socket (socket_base::shutdown_type):
7005         (socket_base::wait_type, socket_base::message_flags):
7006         Remove enumerators. Initialize constants directly with desired
7007         values.
7008         (socket_base::message_flags): Make all operators constexpr and
7009         noexcept.
7010         * testsuite/util/testsuite_common_types.h (test_bitmask_values):
7011         New test utility.
7012         * testsuite/experimental/net/socket/socket_base.cc: New test.
7014 2021-04-22  David Edelsohn  <dje.gcc@gmail.com>
7016         * config/os/aix/atomicity.h: Delete.
7018 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
7020         * include/bits/atomic_timed_wait.h (__cond_wait_until_impl):
7021         Handle system_clock as well as steady_clock.
7022         * testsuite/30_threads/semaphore/try_acquire_for.cc: Re-enable.
7023         * testsuite/30_threads/semaphore/try_acquire_until.cc:
7024         Re-enable.
7026 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
7028         * testsuite/30_threads/semaphore/try_acquire_posix.cc: Add
7029         options for libatomic.
7031 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
7033         * config/os/gnu-linux/os_defines.h: Fix type in comment.
7035 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
7037         PR libstdc++/99006
7038         * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
7039         is not an array type.
7040         * include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
7041         * testsuite/20_util/shared_ptr/creation/99006.cc: New test.
7043 2021-04-22  Thomas Rodgers  <rodgert@twrodgers.com>
7045         * include/bits/atomic_wait.h: Always notify waiters in the
7046         case of 'bare' address notification.
7048 2021-04-22  Jakub Jelinek  <jakub@redhat.com>
7050         PR target/100182
7051         * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for
7052         ia32.
7053         * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for
7054         ia32.
7056 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
7058         PR libstdc++/100179
7059         * include/bits/semaphore_base.h: Remove #error.
7060         * include/std/semaphore: Do not define anything unless one of
7061         the implementations is available.
7063 2021-04-21  Thomas Rodgers  <rodgert@twrodgers.com>
7065         * include/bits/semaphore_base.h: Always reload __old in
7066         __atomic_semaphore::_S_do_try_acquire().
7067         * testsuite/30_threads/stop_token/stop_callback/destroy.cc:
7068         re-enable testcase.
7070 2021-04-21  Philippe Blain  <levraiphilippeblain@gmail.com>
7071             Jonathan Wakely  <jwakely@redhat.com>
7073         PR libstdc++/99453
7074         * python/Makefile.am: Install libstdc++*-gdb.py more robustly.
7075         * python/Makefile.in: Regenerate.
7077 2021-04-21  Thomas Rodgers  <rodgert@twrodgers.com>
7079         * include/bits/semaphore_base.h: Add missing _M_try_acquire()
7080         member to __platform_wait.
7082 2021-04-21  Jonathan Wakely  <jwakely@redhat.com>
7084         * include/std/latch: Replace tab characters in license text.
7085         * include/std/semaphore: Likewise.
7087 2021-04-21  Jakub Jelinek  <jakub@redhat.com>
7089         PR libstdc++/100164
7090         * acinclude.m4: For POSIX semaphores AC_DEFINE HAVE_POSIX_SEMAPHORE
7091         rather than _GLIBCXX_HAVE_POSIX_SEMAPHORE.
7092         * configure: Regenerated.
7093         * config.h.in: Regenerated.
7095 2021-04-20  Jonathan Wakely  <jwakely@redhat.com>
7097         * testsuite/30_threads/semaphore/try_acquire_for.cc: Disable
7098         test for targets not using futexes for semaphores.
7099         * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
7100         * testsuite/30_threads/stop_token/stop_callback/destroy.cc:
7101         Disable for all targets.
7103 2021-04-20  Thomas Rodgers  <trodgers@redhat.com>
7105         * include/Makefile.am: Add new <bits/this_thread_sleep.h> header.
7106         * include/Makefile.in: Regenerate.
7107         * include/bits/this_thread_sleep.h: New file.
7108         * include/bits/atomic_base.h: Adjust all calls
7109         to __atomic_wait/__atomic_notify for new call signatures.
7110         * include/bits/atomic_timed_wait.h: Extensive rewrite.
7111         * include/bits/atomic_wait.h: Likewise.
7112         * include/bits/semaphore_base.h: Adjust all calls
7113         to __atomic_wait/__atomic_notify for new call signatures.
7114         * include/std/atomic: Likewise.
7115         * include/std/barrier: Likewise.
7116         * include/std/latch: Likewise.
7117         * include/std/semaphore: Likewise.
7118         * include/std/thread (this_thread::sleep_for)
7119         (this_thread::sleep_until): Move to new header.
7120         * testsuite/29_atomics/atomic/wait_notify/bool.cc: Simplify
7121         test.
7122         * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise.
7123         * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
7124         * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
7125         * testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise.
7126         * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
7127         * testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise.
7129 2021-04-20  Patrick Palka  <ppalka@redhat.com>
7131         PR libstdc++/95983
7132         * include/bits/stl_iterator.h (__detail::__move_iter_cat):
7133         Define.
7134         (move_iterator): Derive from the above in C++20 in order to
7135         conditionally define iterator_category as per P2259.
7136         (move_iterator::__base_cat): No longer used, so remove.
7137         (move_iterator::iterator_category): Remove in C++20.
7138         (__detail::__common_iter_use_postfix_proxy): Define.
7139         (common_iterator::_Proxy): Rename to ...
7140         (common_iterator:__arrow_proxy): ... this.
7141         (common_iterator::__postfix_proxy): Define as per P2259.
7142         (common_iterator::operator->): Adjust.
7143         (common_iterator::operator++): Adjust as per P2259.
7144         (iterator_traits<common_iterator>::_S_iter_cat): Define.
7145         (iterator_traits<common_iterator>::iterator_category): Change as
7146         per P2259.
7147         (__detail::__counted_iter_value_type): Define.
7148         (__detail::__counted_iter_concept): Define.
7149         (__detail::__counted_iter_cat): Define.
7150         (counted_iterator): Derive from the above three classes in order
7151         to conditionally define value_type, iterator_concept and
7152         iterator category respectively as per P2259.
7153         (counted_iterator::operator->): Define as per P2259.
7154         (incrementable_traits<counted_iterator>): Remove as per P2259.
7155         (iterator_traits<counted_iterator>): Adjust as per P2259.
7156         * include/std/ranges (__detail::__iota_view_iter_cat): Define.
7157         (iota_view::_Iterator): Derive from the above in order to
7158         conditionally define iterator_category as per P2259.
7159         (iota_view::_S_iter_cat): Rename to ...
7160         (iota_view::_S_iter_concept): ... this.
7161         (iota_view::iterator_concept): Use it to apply LWG 3291 changes.
7162         (iota_view::iterator_category): Remove.
7163         (__detail::__filter_view_iter_cat): Define.
7164         (filter_view::_Iterator): Derive from the above in order to
7165         conditionally define iterator_category as per P2259.
7166         (filter_view::_Iterator): Move to struct __filter_view_iter_cat.
7167         (filter_view::_Iterator::iterator_category): Remove.
7168         (transform_view::_Base): Define.
7169         (transform_view::__iter_cat): Define.
7170         (transform_view::_Iterator): Derive from the above in order to
7171         conditionally define iterator_category as per P2259.
7172         (transform_view::_Iterator::_Base): Just alias
7173         transform_view::_Base.
7174         (transform_view::_Iterator::_S_iter_cat): Move to struct
7175         transform_view::__iter_cat.
7176         (transform_view::_Iterator::iterator_category): Remove.
7177         (transform_view::_Sentinel::_Base): Just alias
7178         transform_view::_Base.
7179         (join_view::_Base): Define.
7180         (join_view::_Outer_iter): Define.
7181         (join_view::_Inner_iter): Define.
7182         (join_view::_S_ref_is_glvalue): Define.
7183         (join_view::__iter_cat): Define.
7184         (join_view::_Iterator): Derive from it in order to conditionally
7185         define iterator_category as per P2259.
7186         (join_view::_Iterator::_Base): Just alias join_view::_Base.
7187         (join_view::_Iterator::_S_ref_is_glvalue): Just alias
7188         join_view::_S_ref_is_glvalue.
7189         (join_view::_Iterator::_S_iter_cat): Move to struct
7190         transform_view::__iter_cat.
7191         (join_view::_Iterator::_Outer_iter): Just alias
7192         join_view::_Outer_iter.
7193         (join_view::_Iterator::_Inner_iter): Just alias
7194         join_view::_Inner_iter.
7195         (join_view::_Iterator::iterator_category): Remove.
7196         (join_view::_Sentinel::_Base): Just alias join_view::_Base.
7197         (__detail::__split_view_outer_iter_cat): Define.
7198         (__detail::__split_view_inner_iter_cat): Define.
7199         (split_view::_Base): Define.
7200         (split_view::_Outer_iter): Derive from __split_view_outer_iter_cat
7201         in order to conditionally define iterator_category as per P2259.
7202         (split_view::_Outer_iter::iterator_category): Remove.
7203         (split_view::_Inner_iter): Derive from __split_view_inner_iter_cat
7204         in order to conditionally define iterator_category as per P2259.
7205         (split_view::_Inner_iter::_S_iter_cat): Move to
7206         __split_view_inner_iter_cat.
7207         (split_view::_Inner_iter::iterator_category): Remove.
7208         (elements_view::_Base): Define.
7209         (elements_view::__iter_cat): Define.
7210         (elements_view::_Iterator): Derive from the above in order to
7211         conditionall define iterator_category as per P2259.
7212         (elements_view::_Iterator::_Base): Just alias
7213         elements_view::_Base.
7214         (elements_view::_Iterator::_S_iter_concept)
7215         (elements_view::_Iterator::iterator_concept): Define as per
7216         P2259.
7217         (elements_view::_Iterator::iterator_category): Remove.
7218         (elements_view::_Sentinel::_Base): Just alias
7219         elements_view::_Base.
7220         * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
7221         Adjust constraints on iterator_traits<counted_iterator>.
7222         * testsuite/std/ranges/p2259.cc: New test.
7224 2021-04-20  Jonathan Wakely  <jwakely@redhat.com>
7226         PR libstdc++/100146
7227         * include/std/charconv (__cpp_lib_to_chars): Define
7228         conditionally.
7229         * include/std/version (__cpp_lib_to_chars): Likewise..
7230         * testsuite/20_util/from_chars/4.cc: Only check feature test
7231         macro, not _GLIBCXX_HAVE_USELOCALE.
7232         * testsuite/20_util/from_chars/5.cc: Likewise.
7233         * testsuite/20_util/from_chars/6.cc: Likewise.
7234         * testsuite/20_util/to_chars/long_double.cc: Likewise.
7236 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
7238         * testsuite/util/testsuite_abi.cc (compare_symbols): If any symbol
7239         versions with _IEEE128_ substring are found, set ieee_version_found
7240         to true.  Ignore missing symbols with _IEEE128_ in version name if
7241         !ieee_version_found.  Use i->first as version_name instead of
7242         i->second.version_name if the latter is empty.
7243         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
7245 2021-04-19  H.J. Lu  <hjl.tools@gmail.com>
7247         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt:
7248         Updated.
7250 2021-04-17  Jakub Jelinek  <jakub@redhat.com>
7252         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
7253         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
7255 2021-04-17  Jakub Jelinek  <jakub@redhat.com>
7257         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
7258         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
7259         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
7260         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
7261         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
7262         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
7264 2021-04-15  Jonathan Wakely  <jwakely@redhat.com>
7266         * testsuite/lib/dg-options.exp (add_options_for_libatomic): Also
7267         add libatomic options for 32-bit sparc*-*-linux-gnu.
7269 2021-04-15  Jonathan Wakely  <jwakely@redhat.com>
7271         PR libstdc++/96657
7272         * libsupc++/Makefile.am: Add atomicity.cc here.
7273         * src/c++98/Makefile.am: Remove it from here.
7274         * libsupc++/Makefile.in: Regenerate.
7275         * src/c++98/Makefile.in: Regenerate.
7276         * testsuite/18_support/exception_ptr/96657.cc: New test.
7278 2021-04-13  Jonathan Wakely  <jwakely@redhat.com>
7280         PR libstdc++/100060
7281         * include/std/bit: Only include <ext/numeric_traits.h> for
7282         hosted build, use <limits> otherwise.
7284 2021-04-13  Jonathan Wakely  <jwakely@redhat.com>
7286         * doc/xml/manual/backwards_compatibility.xml: Remove porting
7287         notes for libg++ and libstdc++-v2, and bibliography.
7288         * doc/html/*: Regenerated.
7290 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
7292         PR libstdc++/100044
7293         * include/bits/ranges_util.h (__detail::__iterator_sentinel_pair):
7294         Remove helper concept.
7295         (subrange(_Pr), subrange(Pr, __make_unsigned_like<...>)): Remove
7296         deduction guides, as per LWG 3404.
7297         * testsuite/std/ranges/subrange/lwg3282_neg.cc: Check that class
7298         template argument deduction fails.
7300 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
7302         * testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc:
7303         Adjust expected error for C++20 mode.
7304         * testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc:
7305         Likewise.
7307 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
7309         PR libstdc++/99995
7310         * testsuite/17_intro/headers/c++1998/49745.cc: Include all
7311         standard headers and XFAIL for effective-target c++20.
7313 2021-04-09  François Dumont  <fdumont@gcc.gnu.org>
7315         PR libstdc++/99402
7316         * include/debug/helper_functions.h (__can_advance(_InputIterator,
7317         const std::pair<_Diff, _Distance_precision>&, int)): New.
7318         (__can_advance(const _Safe_iterator<>&,
7319         const std::pair<_Diff, _Distance_precision>&, int)): New.
7320         * include/debug/macros.h (__glibcxx_check_can_increment_dist): New,
7321         use latter.
7322         (__glibcxx_check_can_increment_range): Adapt to use latter.
7323         (__glibcxx_check_can_decrement_range): Likewise.
7324         * include/debug/safe_iterator.h
7325         (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
7326         int)): New.
7327         (__can_advance(const _Safe_iterator<>&,
7328         const std::pair<_Diff, _Distance_precision>&, int)): New.
7329         * include/debug/safe_iterator.tcc
7330         (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
7331         int)): New.
7332         (_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&,
7333         std::pair<difference_type, _Distance_precision>&, bool)): Adapt for
7334         __dp_sign_max_size.
7335         (__copy_move_a): Adapt to use __glibcxx_check_can_increment_dist.
7336         (__copy_move_backward_a): Likewise.
7337         (__equal_aux): Likewise.
7338         * include/debug/stl_iterator.h (__can_advance(const std::reverse_iterator<>&,
7339         const std::pair<_Diff, _Distance_precision>&, int)): New.
7340         (__can_advance(const std::move_iterator<>&,
7341         const std::pair<_Diff, _Distance_precision>&, int)): New.
7342         * testsuite/25_algorithms/copy/debug/99402.cc: New test.
7344 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
7346         PR libstdc++/99985
7347         * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): Fix
7348         to be a valid constexpr function in C++11.
7349         * testsuite/23_containers/unordered_set/cons/99985.cc: New test.
7351 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
7353         * include/bits/fs_fwd.h: Fix doxygen group command.
7354         * include/bits/streambuf_iterator.h: Likewise.
7355         * include/bits/uses_allocator_args.h: Likewise.
7356         * include/std/memory: Likewise.
7357         * include/tr1/complex: Likewise.
7359 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
7361         * include/bits/basic_string.h: Tweak doxygen comment.
7363 2021-04-08  Patrick Palka  <ppalka@redhat.com>
7365         * include/std/ranges (__detail::find): Define.
7366         (split_view::_OuterIter::operator++): Apply proposed resolution
7367         of LWG 3505.
7368         * testsuite/std/ranges/adaptors/split.cc (test10): New test.
7370 2021-04-08  Patrick Palka  <ppalka@redhat.com>
7372         * include/std/ranges (__detail::find_if): Simplify.
7373         (__detail::find_if_not): Likewise.
7374         (__detail::min): Remove.
7375         (__detail::mismatch): Simplify.
7376         (take_view::size): Use std::min instead of __detail::min.
7378 2021-04-08  Patrick Palka  <ppalka@redhat.com>
7380         * include/std/ranges (__detail::__returnable_element): New
7381         concept.
7382         (elements_view): Use this concept in its constraints.  Add
7383         missing private access specifier.
7384         (elements_view::_S_get_element): Define as per LWG 3502.
7385         (elements_view::operator*, elements_view::operator[]): Use
7386         _S_get_element.
7387         (elements_view::operator++): Remove unnecessary constraint
7388         as per LWG 3492.
7389         * testsuite/std/ranges/adaptors/elements.cc (test05): New test.
7391 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
7393         * doc/Makefile.am (stamp-pdf-doxygen): Also grep for
7394         out-of-memory error in log file.
7395         * doc/Makefile.in: Regenerate.
7397 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
7399         * configure: Regenerate.
7401 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
7403         * include/bits/random.h: Fix doxygen group commands.
7404         * include/bits/regex_constants.h: Likewise.
7405         * include/tr1/random.h: Likewise.
7407 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
7409         * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()):
7410         New function to determine noexcept-specifier for move
7411         constructors.
7412         (_Hashtable): Use _S_nothrow_move() on move constructors.
7413         * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
7414         Correct static assertion message.
7415         * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
7416         Likewise.
7417         * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
7418         Likewise.
7419         * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
7420         Likewise.
7422 2021-04-08  Patrick Palka  <ppalka@redhat.com>
7424         PR libstdc++/98384
7425         * testsuite/20_util/to_chars/long_double.cc: Don't run the test
7426         on targets without a large long double.  XFAIL the execution on
7427         targets with a non-conforming printf.
7429 2021-04-08  Patrick Palka  <ppalka@redhat.com>
7431         PR libstdc++/99433
7432         * include/std/ranges (__adaptor::__maybe_refwrap): Remove.
7433         (__adaptor::__adaptor_invocable): New concept.
7434         (__adaptor::__adaptor_partial_app_viable): New concept.
7435         (__adaptor::_RangeAdaptorClosure): Rewrite, turning it into a
7436         non-template base class.
7437         (__adaptor::_RangeAdaptor): Rewrite, turning it into a CRTP base
7438         class template.
7439         (__adaptor::_Partial): New class template that represents
7440         partial application of a range adaptor non-closure.
7441         (__adaptor::__pipe_invocable): New concept.
7442         (__adaptor::_Pipe): New class template.
7443         (__detail::__can_ref_view): New concept.
7444         (__detail::__can_subrange): New concept.
7445         (all): Replace the lambda here with ...
7446         (_All): ... this functor.  Add appropriate constraints.
7447         (__detail::__can_filter_view): New concept.
7448         (filter, _Filter): As in all/_All.
7449         (__detail::__can_transform): New concept.
7450         (transform, _Transform): As in all/_All.
7451         (__detail::__can_take_view): New concept.
7452         (take, _Take): As in all/_All.
7453         (__detail::__can_take_while_view): New concept.
7454         (take_while, _TakeWhile): As in all/_All.
7455         (__detail::__can_drop_view): New concept.
7456         (drop, _Drop): As in all/_All.
7457         (__detail::__can_drop_while_view): New concept.
7458         (drop_while, _DropWhile): As in all/_All.
7459         (__detail::__can_join_view): New concept.
7460         (join, _Join): As in all/_All.
7461         (__detail::__can_split_view): New concept.
7462         (split, _Split): As in all/_All.  Rename template parameter
7463         _Fp to _Pattern.
7464         (__detail::__already_common): New concept.
7465         (__detail::__can_common_view): New concept.
7466         (common, _Common): As in all/_All.
7467         (__detail::__can_reverse_view): New concept.
7468         (reverse, _Reverse): As in all/_All.
7469         (__detail::__can_elements_view): New concept.
7470         (elements, _Elements): As in all/_All.
7471         (keys, values): Adjust.
7472         * testsuite/std/ranges/adaptors/99433.cc: New test.
7473         * testsuite/std/ranges/adaptors/all.cc: No longer expect that
7474         adding empty range adaptor closure objects to a pipeline doesn't
7475         increase the size of the pipeline.
7476         (test05): New test.
7477         * testsuite/std/ranges/adaptors/common.cc (test03): New test.
7478         * testsuite/std/ranges/adaptors/drop.cc (test09): New test.
7479         * testsuite/std/ranges/adaptors/drop_while.cc (test04): New test.
7480         * testsuite/std/ranges/adaptors/elements.cc (test04): New test.
7481         * testsuite/std/ranges/adaptors/filter.cc (test06): New test.
7482         * testsuite/std/ranges/adaptors/join.cc (test09): New test.
7483         * testsuite/std/ranges/adaptors/p2281.cc: New test.
7484         * testsuite/std/ranges/adaptors/reverse.cc (test07): New test.
7485         * testsuite/std/ranges/adaptors/split.cc (test01, test04):
7486         Adjust.
7487         (test09): New test.
7488         * testsuite/std/ranges/adaptors/split_neg.cc (test01): Adjust
7489         expected error message.
7490         (test02): Likewise.  Extend test.
7491         * testsuite/std/ranges/adaptors/take.cc (test06): New test.
7492         * testsuite/std/ranges/adaptors/take_while.cc (test05): New test.
7493         * testsuite/std/ranges/adaptors/transform.cc (test07, test08):
7494         New test.
7496 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
7498         * include/std/string_view: Adjust Doxygen @file comment.
7500 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
7502         * include/std/type_traits (is_scoped_enum<T>): Constrain partial
7503         specialization to not match incomplete enum types. Use a
7504         requires-expression instead of instantiating is_convertible.
7505         (is_scoped_enum<const T>): Add as workaround for PR c++/99968.
7506         * testsuite/20_util/is_scoped_enum/value.cc: Check with
7507         incomplete types and opaque-enum-declarations.
7509 2021-04-07  Jonathan Wakely  <jwakely@redhat.com>
7511         PR libstdc++/99805
7512         * src/c++17/fs_path.cc (path::_M_split_cmpts): Do not call
7513         non-const member on _M_pathname, to avoid copy-on-write.
7514         * testsuite/27_io/filesystem/path/decompose/parent_path.cc:
7515         Check construction from strings that might be shared.
7517 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
7519         * include/bits/move.h (forward, move, move_if_noexcept)
7520         (addressof): Add _GLIBCXX_NODISCARD.
7521         * include/bits/ranges_cmp.h (identity::operator()): Add
7522         nodiscard attribute.
7523         * include/c_global/cstddef (to_integer): Likewise.
7524         * include/std/bit (bit_cast): Likewise.
7525         * include/std/utility (as_const, to_underlying): Likewise.
7527 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
7529         * include/bits/move.h (forward): Change static_assert message
7530         to be unambiguous about what must be true.
7531         * testsuite/20_util/forward/c_neg.cc: Adjust dg-error.
7532         * testsuite/20_util/forward/f_neg.cc: Likewise.
7534 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
7536         * include/bits/alloc_traits.h: Use markdown for code font.
7537         * include/bits/basic_string.h: Fix @param names.
7538         * include/bits/max_size_type.h: Remove period after @file.
7539         * include/bits/regex.h: Fix duplicate @retval names, and rename.
7540         * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Add
7541         group open to match existing group close.
7542         * include/ext/pb_ds/priority_queue.hpp: Add blank line before group
7543         open.
7545 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
7547         * include/bits/atomic_base.h: Fix doxygen group close.
7548         * include/bits/basic_ios.h: Likewise.
7549         * include/bits/forward_list.h: Likewise.
7550         * include/bits/fs_dir.h: Likewise.
7551         * include/bits/fs_ops.h: Likewise.
7552         * include/bits/fs_path.h: Likewise.
7553         * include/bits/functional_hash.h: Likewise.
7554         * include/bits/gslice.h: Likewise.
7555         * include/bits/gslice_array.h: Likewise.
7556         * include/bits/hashtable_policy.h: Likewise.
7557         * include/bits/indirect_array.h: Likewise.
7558         * include/bits/locale_classes.h: Likewise.
7559         * include/bits/locale_facets.h: Likewise.
7560         * include/bits/locale_facets_nonio.h: Likewise.
7561         * include/bits/mask_array.h: Likewise.
7562         * include/bits/refwrap.h: Likewise.
7563         * include/bits/regex.h: Likewise.
7564         * include/bits/regex_automaton.h: Likewise.
7565         * include/bits/regex_compiler.h: Likewise.
7566         * include/bits/regex_constants.h: Likewise.
7567         * include/bits/regex_error.h: Likewise.
7568         * include/bits/regex_executor.h: Likewise.
7569         * include/bits/regex_scanner.h: Likewise.
7570         * include/bits/shared_ptr.h: Likewise.
7571         * include/bits/shared_ptr_atomic.h: Likewise.
7572         * include/bits/shared_ptr_base.h: Likewise.
7573         * include/bits/slice_array.h: Likewise.
7574         * include/bits/specfun.h: Likewise.
7575         * include/bits/std_function.h: Likewise.
7576         * include/bits/std_mutex.h: Likewise.
7577         * include/bits/stl_deque.h: Likewise.
7578         * include/bits/stl_iterator.h: Likewise.
7579         * include/bits/stl_iterator_base_types.h: Likewise.
7580         * include/bits/stl_map.h: Likewise.
7581         * include/bits/stl_multimap.h: Likewise.
7582         * include/bits/stl_multiset.h: Likewise.
7583         * include/bits/stl_numeric.h: Likewise.
7584         * include/bits/stl_pair.h: Likewise.
7585         * include/bits/stl_set.h: Likewise.
7586         * include/bits/stl_uninitialized.h: Likewise.
7587         * include/bits/stream_iterator.h: Likewise.
7588         * include/bits/streambuf_iterator.h: Likewise.
7589         * include/bits/unique_ptr.h: Likewise.
7590         * include/bits/unordered_map.h: Likewise.
7591         * include/bits/unordered_set.h: Likewise.
7592         * include/decimal/decimal: Likewise.
7593         * include/experimental/any: Likewise.
7594         * include/experimental/array: Likewise.
7595         * include/experimental/bits/fs_dir.h: Likewise.
7596         * include/experimental/bits/fs_fwd.h: Likewise.
7597         * include/experimental/bits/fs_ops.h: Likewise.
7598         * include/experimental/bits/fs_path.h: Likewise.
7599         * include/experimental/buffer: Likewise.
7600         * include/experimental/internet: Likewise.
7601         * include/experimental/optional: Likewise.
7602         * include/experimental/propagate_const: Likewise.
7603         * include/experimental/socket: Likewise.
7604         * include/ext/pb_ds/assoc_container.hpp: Likewise.
7605         * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp:
7606         Likewise.
7607         * include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Likewise.
7608         * include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Likewise.
7609         * include/ext/pb_ds/detail/types_traits.hpp: Likewise.
7610         * include/ext/pb_ds/exception.hpp: Likewise.
7611         * include/ext/pb_ds/priority_queue.hpp: Likewise.
7612         * include/ext/pb_ds/tag_and_trait.hpp: Likewise.
7613         * include/ext/random: Likewise.
7614         * include/std/any: Likewise.
7615         * include/std/atomic: Likewise.
7616         * include/std/bitset: Likewise.
7617         * include/std/chrono: Likewise.
7618         * include/std/complex: Likewise.
7619         * include/std/condition_variable: Likewise.
7620         * include/std/fstream: Likewise.
7621         * include/std/future: Likewise.
7622         * include/std/iostream: Likewise.
7623         * include/std/istream: Likewise.
7624         * include/std/mutex: Likewise.
7625         * include/std/numeric: Likewise.
7626         * include/std/ostream: Likewise.
7627         * include/std/ratio: Likewise.
7628         * include/std/shared_mutex: Likewise.
7629         * include/std/stdexcept: Likewise.
7630         * include/std/streambuf: Likewise.
7631         * include/std/system_error: Likewise.
7632         * include/std/thread: Likewise.
7633         * include/std/valarray: Likewise.
7634         * include/std/variant: Likewise.
7635         * include/tr1/cmath: Likewise.
7636         * include/tr1/regex: Likewise.
7637         * include/tr2/dynamic_bitset: Likewise.
7638         * libsupc++/atomic_lockfree_defines.h: Likewise.
7639         * libsupc++/exception: Likewise.
7640         * libsupc++/exception.h: Likewise.
7641         * libsupc++/exception_ptr.h: Likewise.
7642         * libsupc++/nested_exception.h: Likewise.
7644 2021-03-31  Alexandre Oliva  <oliva@adacore.com>
7646         * testsuite/30_threads/future/members/poll.cc: Use faster
7647         after-ready call in the calibration loop.
7649 2021-03-29  Jonathan Wakely  <jwakely@redhat.com>
7651         * doc/xml/manual/status_cxx2017.xml: Adjust link for PSTL.
7652         * doc/html/manual/status.html: Regenerate.
7654 2021-03-28  François Dumont  <fdumont@gcc.gnu.org>
7656         * include/debug/forward_list
7657         (forward_list(forward_list&&, const allocator_type&)): Add noexcept qualification.
7658         * include/debug/list (list(list&&, const allocator_type&)): Likewise and add
7659         call to safe container allocator aware move constructor.
7660         * include/debug/vector (vector(vector&&, const allocator_type&)):
7661         Fix noexcept qualification.
7662         * testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc:
7663         Add allocator-extended move constructor noexceot qualification check.
7664         * testsuite/23_containers/list/cons/noexcept_move_construct.cc: Likewise.
7666 2021-03-26  Jonathan Wakely  <jwakely@redhat.com>
7668         * src/c++11/random.cc (USE_LCG): Define when a pseudo-random
7669         fallback is needed.
7670         [USE_LCG] (bad_seed, construct_lcg_at, destroy_lcg_at, __lcg):
7671         New helper functions and callback.
7672         (random_device::_M_init): Add 'prng' and 'all' enumerators.
7673         Replace switch with fallthrough with a series of 'if' statements.
7674         [USE_LCG]: Construct an lcg_type engine and use __lcg when cpuid
7675         checks fail.
7676         (random_device::_M_init_pretr1) [USE_MT19937]: Accept "prng"
7677         token.
7678         (random_device::_M_getval): Check for callback unconditionally
7679         and always pass _M_file pointer.
7680         * testsuite/26_numerics/random/random_device/85494.cc: Remove
7681         effective-target check. Use new random_device_available helper.
7682         * testsuite/26_numerics/random/random_device/94087.cc: Likewise.
7683         * testsuite/26_numerics/random/random_device/cons/default-cow.cc:
7684         Remove effective-target check.
7685         * testsuite/26_numerics/random/random_device/cons/default.cc:
7686         Likewise.
7687         * testsuite/26_numerics/random/random_device/cons/token.cc: Use
7688         new random_device_available helper. Test "prng" token.
7689         * testsuite/util/testsuite_random.h (random_device_available):
7690         New helper function.
7692 2021-03-25  François Dumont  <fdumont@gcc.gnu.org>
7694         * include/debug/string
7695         (basic_string(const basic_string&, const _Alloc&)): Define even if !_GLIBCXX_USE_CXX11_ABI.
7696         (basic_string(basic_string&&, const _Alloc&)): Likewise and add noexcept qualification.
7697         (basic_string<>::erase): Adapt to take __const_iterator.
7698         (basic_string(const _CharT*, const _Allocator&)): Remove assign call.
7699         (basic_string<>::insert(const_iterator, _InputIte, _InputIte)): Try to
7700         remove iterator debug layer even if !_GLIBCXX_USE_CXX11_ABI.
7701         [_GLIBCXX_USE_CHAR8_T] (__gnu_debug::u8string): New.
7702         (__gnu_debug::u16string, __gnu_debug::u32string): New.
7703         (std::hash<__gnu_debug::basic_string<>>): New partial specialization.
7704         (std::__is_fast_hash<__gnu_debug::basic_string<>>): Likewise.
7705         * testsuite/util/exception/safety.h
7706         (erase_base<__gnu_debug::basic_string<>>): New partial specialization.
7707         (insert_base<__gnu_debug::basic_string<>>): Likewise.
7708         * testsuite/util/testsuite_container_traits.h (traits<__gnu_debug::basic_string<>>):
7709         New partial specialization.
7710         * testsuite/21_strings/basic_string/hash/debug.cc: New test.
7711         * testsuite/21_strings/basic_string/requirements/citerators.cc:
7712         Add test on __gnu_debug::string.
7713         * testsuite/21_strings/basic_string/requirements/dr438/constructor.cc: Likewise.
7714         * testsuite/21_strings/basic_string/requirements/exception/basic.cc: Likewise.
7715         * testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc:
7716         Likewise.
7717         * testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc:
7718         Likewise.
7719         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc:
7720         Likewise.
7721         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc:
7722         Likewise.
7723         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc:
7724         Likewise.
7725         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc:
7726         Likewise.
7727         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc:
7728         Likewise.
7729         * testsuite/21_strings/basic_string/requirements/typedefs.cc: Likewise.
7731 2021-03-25  Jakub Jelinek  <jakub@redhat.com>
7733         PR c++/99672
7734         * testsuite/18_support/source_location/consteval.cc (main): Adjust
7735         expected column numbers.
7736         * testsuite/18_support/source_location/1.cc (main): Likewise.
7738 2021-03-25  Jonathan Wakely  <jwakely@redhat.com>
7740         * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare malloc.
7742 2021-03-25  Jonathan Wakely  <jwakely@redhat.com>
7744         * testsuite/util/exception/safety.h (setup_base::generate):
7745         Support seeding random engine.
7746         (erase_point, erase_range): Adjust range of random numbers to
7747         ensure dereferenceable iterators are used where required.
7748         (generation_prohibited::run): Do not try to erase from empty
7749         containers.
7750         * testsuite/util/testsuite_containergen.h (test_containers):
7751         Support seeding random engine.
7753 2021-03-23  Jonathan Wakely  <jwakely@redhat.com>
7755         * testsuite/std/ranges/adaptors/reverse.cc: Replace duplicated
7756         line with a check that uses the const being/end overloads.
7758 2021-03-23  Moritz Sichert  <sichert@in.tum.de>
7760         * include/std/ranges (reverse_view::begin, reverse_view::end):
7761         Qualify make_reverse_iterator calls to avoid ADL.
7762         * testsuite/std/ranges/adaptors/reverse.cc: Test that
7763         views::reverse works when make_reverse_iterator is defined
7764         in an associated namespace.
7766 2021-03-23  Jonathan Wakely  <jwakely@redhat.com>
7768         * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT):
7769         Do not define when compiling with Clang.
7771 2021-03-22  Jonathan Wakely  <jwakely@redhat.com>
7773         * include/std/string_view (basic_string_view(Range&&)): Define new
7774         constructor and deduction guide.
7775         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc: New test.
7776         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc: New test.
7778 2021-03-22  Jonathan Wakely  <jwakely@redhat.com>
7780         * include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])):
7781         Add missing 'noexcept' as per LWG 2280.
7782         (rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list<T>))
7783         (rend(initializer_list<T>)): Add 'noexcept' as per LWG 3537.
7784         * testsuite/24_iterators/range_access/range_access.cc: Check for
7785         expected noexcept specifiers. Check result types of generic
7786         std::begin and std::end overloads.
7787         * testsuite/24_iterators/range_access/range_access_cpp14.cc:
7788         Check for expected noexcept specifiers.
7789         * testsuite/24_iterators/range_access/range_access_cpp17.cc:
7790         Likewise.
7792 2021-03-19  Jonathan Wakely  <jwakely@redhat.com>
7794         * include/std/type_traits (is_scoped_enum): Define.
7795         * include/std/version (__cpp_lib_is_scoped_enum): Define.
7796         * testsuite/20_util/is_scoped_enum/value.cc: New test.
7797         * testsuite/20_util/is_scoped_enum/version.cc: New test.
7799 2021-03-16  Jonathan Wakely  <jwakely@redhat.com>
7801         PR libstdc++/99341
7802         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Remove
7803         std::once_flag symbols.
7804         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise.
7805         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise.
7806         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt:
7807         Likewise.
7808         * config/abi/pre/gnu.ver: Likewise.
7809         * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX]
7810         (struct __once_flag_compat): Remove.
7811         (_ZNSt9once_flag11_M_activateEv): Remove.
7812         (_ZNSt9once_flag9_M_finishEb): Remove.
7814 2021-03-16  Jonathan Wakely  <jwakely@redhat.com>
7816         PR libstdc++/99341
7817         * include/std/mutex [_GLIBCXX_HAVE_LINUX_FUTEX] (once_flag):
7818         Revert to pthread_once_t implementation.
7819         [_GLIBCXX_HAVE_LINUX_FUTEX] (call_once): Likewise.
7820         * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX]
7821         (struct __once_flag_compat): New type matching the reverted
7822         implementation of once_flag using futexes.
7823         (once_flag::_M_activate): Remove, replace with ...
7824         (_ZNSt9once_flag11_M_activateEv): ... alias symbol.
7825         (once_flag::_M_finish): Remove, replace with ...
7826         (_ZNSt9once_flag9_M_finishEb): ... alias symbol.
7827         * testsuite/30_threads/call_once/66146.cc: Removed.
7829 2021-03-15  Iain Sandoe  <iain@sandoe.co.uk>
7831         * testsuite/17_intro/names.cc: Exclude j from the list
7832         of test symbols for Darwin.
7834 2021-03-15  Iain Sandoe  <iain@sandoe.co.uk>
7836         * config/os/bsd/darwin/ppc-extra.ver: Add matching for
7837         to_chars and from_chars for long double.
7839 2021-03-15  Patrick Palka  <ppalka@redhat.com>
7841         * include/bits/max_size_type.h (__max_size_type::operator _Tp):
7842         Fix formatting.
7843         (__max_size_type::operator++): Define.
7844         (__max_size_type::operator--): Likewise.
7845         (__max_size_type::operator<=>): Conditionally define (in place
7846         of the other comparison operators).
7847         (__max_diff_type::operator _Tp): Fix formatting.
7848         (__max_diff_type::operator++): Define.
7849         (__max_diff_type::operator--): Likewise.
7850         (__max_diff_type::operator<=>): Conditionally define (in place
7851         of the other comparison operators).
7852         * testsuite/std/ranges/iota/max_size_type.cc (test01): Test
7853         these operator overloads.
7855 2021-03-15  Caroline Tice  <cmtice@google.com>
7857         PR libstdc++/99172
7858         * src/Makefile.am (AM_CXXFLAGS_PRE, AM_CXXFLAGS): Add
7859         AM_CXXFLAGS_PRE with the old definition of AM_CXXFLAGS; make
7860         AM_CXXFLAGS to be AM_CXXFLAGS_PRE with '-fvtable-verify=std'
7861         filtered out.
7862         * src/Makefile.in: Regenerate.
7864 2021-03-11  Patrick Palka  <ppalka@redhat.com>
7866         * src/c++17/floating_to_chars.cc: Simplify the file as if
7867         __SIZEOF_INT128__ is always defined.
7868         [!defined __SIZEOF_INT128__]: Include "uint128_t.h".  Define
7869         a base-10 to_chars overload for the uint128_t class type.
7870         * src/c++17/uint128_t.h: New file.
7871         * testsuite/20_util/to_chars/long_double.cc: No longer expect an
7872         execution FAIL on targets that have a large long double type
7873         but lack __int128.
7875 2021-03-11  Patrick Palka  <ppalka@redhat.com>
7877         * src/c++17/ryu/LOCAL_PATCHES: Update.
7878         * src/c++17/ryu/d2s_intrinsics.h: Don't define uint128_t.
7879         * src/c++17/ryu/generic_128.h: Likewise.
7880         * src/c++17/ryu/ryu_generic_128.h (struct floating_decimal_128):
7881         Use uint128_t instead of __uint128_t.
7882         (generic_binary_to_decimal): Likewise.
7884 2021-03-11  Patrick Palka  <ppalka@redhat.com>
7886         * src/c++17/ryu/LOCAL_PATCHES: New file.
7888 2021-03-11  Patrick Palka  <ppalka@redhat.com>
7890         * src/c++17/floating_to_chars.cc (uint128_t): New conditionally
7891         defined alias of unsigned __int128.
7892         (floating_type_traits_binary128::mantissa_t): Use uint128_t
7893         instead of unsigned __int128.
7894         (floating_type_traits<long double>::mantissa_t)
7895         [LONG_DOUBLE_KIND == LDK_IBM128]: Likewise.
7896         (get_ieee_repr): Likewise.  Make casts from uint_t to mantissa_t
7897         and uint32_t explicit.  Simplify the extraction of mantissa,
7898         exponent and sign bit.
7900 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7902         * include/std/barrier (barrier::arrival_token): New move-only
7903         class that encapsulates the underlying token value.
7905 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7907         * python/libstdcxx/v6/printers.py (find_type): Use tag attribute
7908         instead of unqualified() method.
7910 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7912         PR libstdc++/99537
7913         * include/std/stop_token (_Stop_state_t::_M_release_ownership):
7914         Use acq_rel memory ordering.
7916 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7918         PR libstdc++/99533
7919         * src/c++17/fs_dir.cc (recursive_directory_iterator): Use new
7920         helper function to check for permission denied errors.
7921         * src/filesystem/dir.cc (recursive_directory_iterator):
7922         Likewise.
7923         * src/filesystem/dir-common.h (is_permission_denied_error): New
7924         helper function.
7926 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7928         PR libstdc++/99536
7929         * include/bits/random.h (normal_distribution): Use
7930         default-initializer for _M_saved and _M_saved_available.
7932 2021-03-10  John David Anglin  <danglin@gcc.gnu.org>
7934         * testsuite/29_atomics/atomic/wait_notify/bool.cc: Add options to
7935         link with libatomic.
7936         * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise.
7937         * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
7938         * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
7939         * testsuite/30_threads/barrier/arrive.cc: Likewise.
7940         * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise.
7941         * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise.
7942         * testsuite/30_threads/barrier/completion.cc: Likewise.
7943         * testsuite/30_threads/latch/3.cc: Likewise.
7944         * testsuite/30_threads/semaphore/try_acquire.cc: Likewise.
7945         * testsuite/30_threads/semaphore/try_acquire_for.cc: Likewise.
7946         * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
7948 2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
7950         PR libstdc++/99413
7951         * include/bits/align.h: Include debug/assertions.h.
7952         * include/bits/codecvt.h: Include bits/c++config.h.
7953         * include/bits/enable_special_members.h: Likewise.
7954         * include/bits/erase_if.h: Likewise.
7955         * include/bits/functional_hash.h: Include <type_traits>.
7956         * include/bits/invoke.h: Include bits/move.h.
7957         * include/bits/ostream_insert.h: Include bits/exception_defines.h.
7958         * include/bits/parse_numbers.h: Include <type_traits>.
7959         * include/bits/predefined_ops.h: Include bits/c++config.h.
7960         * include/bits/range_access.h: Include bits/stl_iterator.h.
7961         * include/bits/stl_bvector.h: Do not include bits/stl_vector.h.
7962         * include/bits/stl_iterator.h: Include bits/stl_iterator_base_types.h.
7963         * include/bits/stl_uninitialized.h: Include bits/stl_algobase.h.
7964         * include/bits/uniform_int_dist.h: Include bits/concept_check.h.
7965         * include/bits/unique_lock.h: Include bits/std_mutex.h.
7966         * include/debug/assertions.h: Include bits/c++config.h.
7968 2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
7970         * include/bits/ranges_cmp.h (__eq_builtin_ptr_cmp): Remove.
7971         (ranges::equal_to, ranges::not_equal_to): Do not constrain
7972         with __eq_builtin_ptr_cmp.
7973         (ranges::less, ranges::greater, ranges::less_equal)
7974         (ranges::greater_equal): Do not constrain with
7975         __less_builtin_ptr_cmp.
7976         * libsupc++/compare (compare_three_way): Do not constrain with
7977         __3way_builtin_ptr_cmp.
7978         * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to...
7979         * testsuite/18_support/comparisons/object/lwg3530.cc: ...here.
7980         * testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test.
7982 2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
7984         * testsuite/std/time/syn_c++20.cc: Enable synopsis checks for
7985         C++20 calendar types.
7987 2021-03-06  Jakub Jelinek  <jakub@redhat.com>
7989         PR libstdc++/99396
7990         * include/std/bit (__rotl, __rotr): Add optimized variants for power of
7991         two _Nd which the compiler can pattern match the rotates.
7993 2021-03-04  Jonathan Wakely  <jwakely@redhat.com>
7995         PR libstdc++/99382
7996         * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
7997         Make storage larger than required. Verify no write to the last
7998         element.
7999         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
8000         Likewise.
8002 2021-03-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8004         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
8005         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
8006         Likewise.
8007         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
8008         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
8009         Likewise.
8011 2021-03-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8013         * include/experimental/bits/simd.h: Replace reserved _X, _B by
8014         _Xp, _Bp.
8015         * include/experimental/bits/simd_builtin.h: Likewise.
8016         * include/experimental/bits/simd_x86.h: Likewise.
8018 2021-02-27  Jonathan Wakely  <jwakely@redhat.com>
8020         PR libstdc++/99301
8021         * include/std/chrono (year_month_day::_M_days_since_epoch()):
8022         Convert chrono::month and chrono::day to unsigned before
8023         converting to uint32_t.
8025 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
8027         * include/std/chrono (year_month_day::_S_from_days): Perform
8028         all calculations with type uint32_t.
8030 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
8032         * doc/xml/manual/abi.xml: Document versioning for GCC 11.
8033         * doc/html/manual/abi.html: Regenerate.
8035 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
8037         PR libstdc++/99270
8038         * testsuite/27_io/headers/cstdio/types_std.cc: Use pointer to
8039         FILE instead of FILE.
8041 2021-02-25  Andreas Schwab  <schwab@suse.de>
8043         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
8044         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
8045         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
8046         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
8048 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
8050         PR libstdc++/99265
8051         * include/std/chrono (year_month_day::_S_from_days): Cast long
8052         to int explicitly.
8054 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
8056         * include/std/utility (to_underlying): Define.
8057         * include/std/version (__cpp_lib_to_underlying): Define.
8058         * testsuite/20_util/to_underlying/1.cc: New test.
8059         * testsuite/20_util/to_underlying/version.cc: New test.
8061 2021-02-24  Jonathan Wakely  <jwakely@redhat.com>
8063         PR libstdc++/99261
8064         * src/c++17/floating_to_chars.cc (sprintf_ld): Add extra args
8065         before value to be printed.
8067 2021-02-24  Patrick Palka  <ppalka@redhat.com>
8069         * src/c++17/floating_to_chars.cc (__floating_to_chars_precision):
8070         Relax the condition that guards the printf code path to accept
8071         F128_type as well as long double.
8073 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
8075         * include/std/chrono (year_month_day_last:day): New
8076         implementation.
8078 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
8080         * include/std/chrono (year::is_leap): New implementation.
8081         * testsuite/std/time/year/2.cc: New test.
8083 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
8085         * include/std/chrono (year_month_day::_M_days_since_epoch):
8086         New implementation.
8087         * testsuite/std/time/year_month_day/4.cc: New test.
8089 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
8091         * include/std/chrono (year_month_day::_S_from_days): New
8092         implementation.
8093         * testsuite/std/time/year_month_day/3.cc: New test.
8095 2021-02-24  Patrick Palka  <ppalka@redhat.com>
8097         PR libstdc++/98384
8098         * testsuite/20_util/to_chars/long_double.cc: Include <optional>.
8099         (test01): Simplify verifying the nearby values by using a
8100         2-iteration loop and a dedicated output buffer to check that the
8101         nearby values are different.  Factor out the printf-based
8102         verification into a local function, and check that the leading
8103         hex digits agree before comparing to the output of printf.  Also
8104         verify the output by round-tripping it through from_chars.
8106 2021-02-24  Jonathan Wakely  <jwakely@redhat.com>
8108         PR libstdc++/98389
8109         * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Do not match to_chars
8110         symbols for long double arguments mangled as 'g'.
8111         * config/os/gnu-linux/ldbl-extra.ver: Likewise.
8112         * config/os/gnu-linux/ldbl-ieee128-extra.ver: Likewise.
8113         * src/c++17/Makefile.am [GLIBCXX_LDBL_ALT128_COMPAT_TRUE]:
8114         Use -mabi=ibmlongdouble for floating_to_chars.cc.
8115         * src/c++17/Makefile.in: Regenerate.
8116         * src/c++17/floating_to_chars.cc (floating_type_traits_binary128):
8117         New type defining type traits of IEEE binary128 format.
8118         (floating_type_traits<__float128>): Define specialization.
8119         (floating_type_traits<long double>): Define in terms of
8120         floating_type_traits_binary128 when appropriate.
8121         (floating_to_shortest_scientific): Handle __float128.
8122         (sprintf_ld): New function template for printing a long double
8123         or __ieee128 value using sprintf.
8124         (__floating_to_chars_shortest, __floating_to_chars_precision):
8125         Use sprintf_ld.
8126         (to_chars): Define overloads for __float128.
8128 2021-02-24  Jonathan Wakely  <jwakely@redhat.com>
8130         * testsuite/17_intro/names.cc: Undefine 'u' on powerpc*-linux*.
8132 2021-02-23  Martin Sebor  <msebor@redhat.com>
8134         PR c++/99074
8135         * libsupc++/dyncast.cc (__dynamic_cast): Return null when
8136         first argument is null.
8138 2021-02-23  Jakub Jelinek  <jakub@redhat.com>
8140         PR libstdc++/99181
8141         * testsuite/21_strings/char_traits/requirements/char/99181.cc: New
8142         test.
8144 2021-02-23  Jakub Jelinek  <jakub@redhat.com>
8146         PR libstdc++/99181
8147         * include/bits/char_traits.h (char_traits<char>::compare): For
8148         constexpr evaluation don't call
8149         __gnu_cxx::char_traits<char_type>::compare but do the comparison loop
8150         directly.
8152 2021-02-23  Jakub Jelinek  <jakub@redhat.com>
8154         PR libstdc++/97549
8155         * include/pstl/parallel_backend_serial.h: Remove __pstl::__par_backend.
8157 2021-02-23  Patrick Palka  <ppalka@redhat.com>
8159         PR libstdc++/98384
8160         * src/c++17/floating_to_chars.cc (get_ieee_repr): Extract
8161         the high- and low-order parts from an IBM long double value
8162         in an endian-agnostic way.
8164 2021-02-19  Jonathan Wakely  <jwakely@redhat.com>
8166         * include/bits/atomic_wait.h (__thread_relax()): Call
8167         __thread_yield() not __gthread_yield().
8169 2021-02-15  Jonathan Wakely  <jwakely@redhat.com>
8171         * include/bits/atomic_wait.h (__thread_yield()): Check
8172         _GLIBCXX_HAS_GTHREADS before using __gthread_yield.
8173         (__thread_relax()): Use __thread_yield() instead of repeating
8174         the preprocessor checks for __gthread_yield.
8176 2021-02-15  Jonathan Wakely  <jwakely@redhat.com>
8178         * include/std/mutex (once_flag::_M_activate()): Add explicit
8179         return statement for passive case.
8180         (once_flag::_M_finish(bool)): Use reserved name for parameter.
8182 2021-02-14  Jonathan Wakely  <jwakely@redhat.com>
8184         PR libstdc++/99096
8185         * testsuite/util/testsuite_fs.h: Always include <unistd.h>.
8187 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8189         PR libstdc++/88881
8190         * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround.
8192 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8194         * doc/xml/manual/status_cxx2014.xml: Document implementation
8195         specific properties of std::experimental::filesystem::rename.
8196         * doc/xml/manual/status_cxx2017.xml: Document implementation
8197         specific properties of std::filesystem::rename.
8198         * doc/html/*: Regenerate.
8199         * src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour
8200         for directories on Windows.
8201         * src/filesystem/ops-common.h (__gnu_posix::rename): Use
8202         MoveFileExW on Windows.
8203         * testsuite/27_io/filesystem/operations/rename.cc: New test.
8204         * testsuite/experimental/filesystem/operations/rename.cc: New test.
8206 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8208         * testsuite/util/testsuite_fs.h (nonexistent_path): Add
8209         random number to the path.
8211 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8213         * include/experimental/internet (address_v6::to_string): Include
8214         scope ID in string.
8215         * testsuite/experimental/net/internet/address/v6/members.cc:
8216         Test to_string() results.
8218 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8220         * include/experimental/internet (address_v6::any): Avoid using
8221         memcpy in constexpr function.
8222         (address_v6::loopback): Likewise.
8223         (make_address_v6): Fix missing return statements on error paths.
8224         * include/experimental/io_context: Avoid -Wdangling-else
8225         warning.
8226         * testsuite/experimental/net/internet/address/v4/members.cc:
8227         Remove unused variables.
8228         * testsuite/experimental/net/internet/address/v6/members.cc:
8229         New test.
8231 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8233         * include/bits/shared_ptr_base.h (__shared_ptr::_M_get_deleter):
8234         Add unused attribute to parameter.
8235         * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq):
8236         Likewise.
8238 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8240         * testsuite/27_io/basic_ostream/emit/1.cc: Expect test to fail
8241         if -fno-rtti is used.
8242         * testsuite/30_threads/async/forced_unwind.cc: Expect test
8243         to abort if -fno-rtti is used.
8245 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8247         * testsuite/util/testsuite_allocator.h (memory_resource):
8248         Remove requirement for RTTI and exceptions to be enabled.
8250 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8252         * testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc: Use
8253         static_cast when RTTI is disabled.
8254         * testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc:
8255         Likewise.
8256         * testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc:
8257         Likewise.
8258         * testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc:
8259         Likewise.
8260         * testsuite/27_io/basic_stringstream/str/char/2.cc:
8261         Likewise.
8262         * testsuite/27_io/basic_stringstream/str/wchar_t/2.cc:
8263         Likewise.
8265 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8267         * include/std/ostream (__syncbuf_base::_S_get): Mark parameter
8268         as unused and only use dynamic_cast when RTTI is enabled.
8270 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
8272         PR libstdc++/99077
8273         * src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)):
8274         Change int parameter to error_code, to match std::ios_failure.
8275         (__throw_ios_failure(const char*, int)): Construct error_code
8276         from int parameter.
8278 2021-02-11  Jonathan Wakely  <jwakely@redhat.com>
8280         * libsupc++/eh_ptr.cc (_GLIBCXX_EH_PTR_RELOPS_COMPAT): Define
8281         new macro.
8282         * libsupc++/exception_ptr.h (_GLIBCXX_EH_PTR_USED): Check new
8283         macro instead of _GLIBCXX_EH_PTR_COMPAT.
8284         (operator==): Likewise.
8286 2021-02-11  Jonathan Wakely  <jwakely@redhat.com>
8288         PR libstdc++/99058
8289         * doc/xml/manual/status_cxx2011.xml: Document when support
8290         became stable.
8291         * doc/xml/manual/status_cxx2014.xml: Likewise.
8292         * doc/xml/manual/status_cxx2017.xml: Likewise.
8293         * doc/html/manual/status.html: Regenerate.
8295 2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
8297         PR libstdc++/88881
8298         * src/c++17/fs_ops.cc (fs::status): Re-enable workaround.
8300 2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
8302         * src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent)
8303         (fs::remove): Use std::system_category() for error codes from
8304         GetLastError().
8305         * src/filesystem/ops.cc (fs::create_hard_link, fs::remove):
8306         Likewise.
8308 2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
8310         * testsuite/27_io/filesystem/operations/proximate.cc: Fix typo
8311         in __MINGW32__ macro name.
8312         * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
8313         * testsuite/27_io/filesystem/path/generation/proximate.cc:
8314         Likewise.
8315         * testsuite/27_io/filesystem/path/generation/relative.cc:
8316         Likewise.
8317         * testsuite/util/testsuite_fs.h: Likewise.
8319 2021-02-09  François Dumont  <fdumont@gcc.gnu.org>
8321         * include/bits/stl_tree.h
8322         (__has_is_transparent, __has_is_transparent_t): Move...
8323         * include/bits/stl_function.h: ...here.
8324         * include/bits/hashtable_policy.h (_Hash_code_base<>::_M_hash_code_tr): New..
8325         (_Hashtable_base<>::_M_equals_tr): New.
8326         * include/bits/hashtable.h (_Hashtable<>::_M_find_tr, _Hashtable<>::_M_count_tr,
8327         _Hashtable<>::_M_equal_range_tr): New member function templates to perform
8328         heterogeneous lookup.
8329         (_Hashtable<>::_M_find_before_node_tr): New.
8330         (_Hashtable<>::_M_find_node_tr): New.
8331         * include/bits/unordered_map.h (unordered_map::find<>, unordered_map::count<>,
8332         unordered_map::contains<>, unordered_map::equal_range<>): New member function
8333         templates to perform heterogeneous lookup.
8334         (unordered_multimap::find<>, unordered_multimap::count<>,
8335         unordered_multimap::contains<>, unordered_multimap::equal_range<>): Likewise.
8336         * include/bits/unordered_set.h  (unordered_set::find<>, unordered_set::count<>,
8337         unordered_set::contains<>, unordered_set::equal_range<>): Likewise.
8338         (unordered_multiset::find<>, unordered_multiset::count<>,
8339         unordered_multiset::contains<>, unordered_multiset::equal_range<>): Likewise.
8340         * include/debug/unordered_map
8341         (unordered_map::find<>, unordered_map::equal_range<>): Likewise.
8342         (unordered_multimap::find<>, unordered_multimap::equal_range<>): Likewise.
8343         * include/debug/unordered_set
8344         (unordered_set::find<>, unordered_set::equal_range<>): Likewise.
8345         (unordered_multiset::find<>, unordered_multiset::equal_range<>): Likewise.
8346         * testsuite/23_containers/unordered_map/operations/1.cc: New test.
8347         * testsuite/23_containers/unordered_multimap/operations/1.cc: New test.
8348         * testsuite/23_containers/unordered_multiset/operations/1.cc: New test.
8349         * testsuite/23_containers/unordered_set/operations/1.cc: New test.
8351 2021-02-09  François Dumont  <fdumont@gcc.gnu.org>
8353         * include/bits/stl_deque.h
8354         (std::operator-(deque::iterator, deque::iterator)): Replace if/then with
8355         a null pointer test.
8357 2021-02-09  Jonathan Wakely  <jwakely@redhat.com>
8359         * testsuite/27_io/filesystem/operations/remove_all.cc: Remove
8360         test directory after making it writable again.
8361         * testsuite/experimental/filesystem/operations/remove_all.cc:
8362         Likewise.
8364 2021-02-09  Jonathan Wakely  <jwakely@redhat.com>
8366         PR libstdc++/99021
8367         * include/std/coroutine (coroutine_handle<P>::from_address): Add
8368         noexcept.
8370 2021-02-09  Vladimir Vishnevsky  <vv.os.swe@gmail.com>
8372         * include/ext/stdio_sync_filebuf.h: Remove unused <unistd.h>.
8373         * src/c++17/fs_ops.cc (fs::permissions): Qualify mode_t.
8375 2021-02-09  Jakub Jelinek  <jakub@redhat.com>
8377         PR middle-end/98465
8378         * include/bits/basic_string.tcc (basic_string::_M_replace): When __s
8379         points to the characters moved by earlier _S_move, compute the source
8380         address using expression based on the __p pointer rather than __s
8381         pointer.
8383 2021-02-03  Jonathan Wakely  <jwakely@redhat.com>
8385         * testsuite/19_diagnostics/error_code/operators/not_equal.cc:
8386         Add comparison with same category and different values.
8387         * testsuite/19_diagnostics/error_code/operators/less.cc:
8388         Likewise. Fix comparison involving different categories.
8389         * testsuite/19_diagnostics/error_code/operators/three_way.cc:
8390         Likewise.
8391         * testsuite/19_diagnostics/error_condition/operators/less.cc:
8392         Add comment.
8393         * testsuite/19_diagnostics/error_condition/operators/three_way.cc:
8394         Likewise.
8396 2021-02-03  yaozhongxiao  <yaozhongxiao@linux.alibaba.com>
8398         * include/experimental/bits/simd_neon.h: Replace repeated vpadd
8399         calls with a single vaddv for aarch64.
8401 2021-02-03  Matthias Kretz  <kretz@kde.org>
8403         * testsuite/Makefile.am: Warn about the workaround. Add
8404         -fno-tree-vrp to CXXFLAGS passed to the check_simd script.
8405         Improve initial user feedback from make check-simd.
8406         * testsuite/Makefile.in: Regenerated.
8408 2021-02-03  Matthias Kretz  <kretz@kde.org>
8410         * include/experimental/bits/simd.h: Add __detail::_Minimum and
8411         __detail::_Maximum to use them as _BinaryOperation to _S_reduce.
8412         Add hmin and hmax overloads for simd and const_where_expression.
8413         * include/experimental/bits/simd_scalar.h
8414         (_SimdImplScalar::_S_reduce): Make unused _BinaryOperation
8415         parameter const-ref to allow calling _S_reduce with an rvalue.
8416         * testsuite/experimental/simd/tests/reductions.cc: Add tests for
8417         hmin and hmax. Since the compiler statically determined that all
8418         tests pass, repeat the test after a call to make_value_unknown.
8420 2021-02-03  Matthias Kretz  <kretz@kde.org>
8422         * testsuite/experimental/simd/tests/bits/verify.h (verify): Add
8423         instruction pointer data member. Ensure that the `if (m_failed)`
8424         branch is always inlined into the calling code. The body of the
8425         conditional can still be a function call. Move the get_ip call
8426         into the verify ctor to simplify the ctor calls.
8427         (COMPARE): Don't mention the use of all_of for reduction of a
8428         simd_mask. It only distracts from the real issue.
8430 2021-02-03  Matthias Kretz  <kretz@kde.org>
8432         * testsuite/experimental/simd/driver.sh: Abstract reading test
8433         options into read_src_option function. Read skip, only,
8434         expensive, and xfail via read_src_option. Add timeout and
8435         timeout-factor options and adjust timeout variable accordingly.
8436         * testsuite/experimental/simd/tests/loadstore.cc: Set
8437         timeout-factor 2.
8439 2021-02-03  Matthias Kretz  <kretz@kde.org>
8441         * testsuite/experimental/simd/driver.sh: When handling the pipe
8442         to log (and on verbose to stdout) count the lines. If it exceeds
8443         1000 log the issue and exit 125, which is then handled as a
8444         failure.
8446 2021-02-03  Matthias Kretz  <kretz@kde.org>
8448         * testsuite/experimental/simd/tests/hypot3_fma.cc: Add skip:
8449         markup for long double on powerpc64*.
8451 2021-02-03  Matthias Kretz  <kretz@kde.org>
8453         * include/experimental/bits/simd.h: Add __have_power10vec
8454         conditional on _ARCH_PWR10.
8455         * include/experimental/bits/simd_builtin.h: Forward declare
8456         _MaskImplPpc and use it as _MaskImpl when __ALTIVEC__ is
8457         defined.
8458         (_MaskImplBuiltin::_S_some_of): Call _S_popcount from the
8459         _SuperImpl for optimizations and correctness.
8460         * include/experimental/bits/simd_ppc.h: Add _MaskImplPpc.
8461         (_MaskImplPpc::_S_popcount): Implement via vec_cntm for POWER10.
8462         Otherwise, for >=int use -vec_sums divided by a sizeof factor.
8463         For <int use -vec_sums(vec_sum4s(...)) to sum all mask entries.
8465 2021-02-03  Matthias Kretz  <kretz@kde.org>
8467         * testsuite/experimental/simd/driver.sh: Remove executable on
8468         SIGINT. Process compiler and test executable output: In verbose
8469         mode print messages immediately, limited to 1000 lines and
8470         breaking long lines to below $COLUMNS (or 1024 if not set).
8471         Communicating the exit status of the compiler / test with the
8472         necessary pipe is done via a message through stdout/-in.
8474 2021-02-03  Matthias Kretz  <kretz@kde.org>
8476         * testsuite/Makefile.am: Ensure .simd.summary is empty before
8477         collecting a new summary.
8478         * testsuite/Makefile.in: Regenerate.
8480 2021-02-03  Matthias Kretz  <kretz@kde.org>
8482         * testsuite/experimental/simd/generate_makefile.sh: Use
8483         different variables internally than documented for user
8484         overrides. This makes internal append/prepend work as intended.
8486 2021-02-03  Matthias Kretz  <kretz@kde.org>
8488         * testsuite/experimental/simd/driver.sh (verify_test): Print
8489         test output on run xfail. Do not repeat lines from the log that
8490         were already printed on stdout.
8491         (test_selector): Make the compiler flags pattern usable as a
8492         substring selector.
8493         (toplevel): Trap on SIGINT and remove the log and sum files.
8494         Call timout with --foreground to quickly terminate on SIGINT.
8495         * testsuite/experimental/simd/generate_makefile.sh: Simplify run
8496         targets via target patterns. Default DRIVEROPTS to -v for run
8497         targets. Remove log and sum files after completion of the run
8498         target (so that it's always recompiled).
8499         Place help text into text file for reasonable 'make help'
8500         performance.
8502 2021-02-03  Matthias Kretz  <kretz@kde.org>
8504         * include/experimental/bits/simd.h: Remove unnecessary static
8505         assertion. Allow sizeof(8) integer __intrinsic_type to enable
8506         the necessary mask type.
8508 2021-02-03  Matthias Kretz  <kretz@kde.org>
8510         * include/experimental/bits/simd.h: Let __intrinsic_type<long
8511         double, N> be valid if sizeof(long double) == sizeof(double) and
8512         use a __vector double as member type.
8514 2021-02-03  Matthias Kretz  <kretz@kde.org>
8516         * include/experimental/bits/simd.h (__is_intrinsic_type): New
8517         internal type trait. Alias for __is_vector_type on x86.
8518         (_VectorTraitsImpl): Enable for __intrinsic_type in addition for
8519         __vector_type.
8520         (__intrin_bitcast): Allow casting to & from vector & intrinsic
8521         types.
8522         (__intrinsic_type): Explicitly specialize for NEON intrinsic
8523         vector types.
8525 2021-02-03  Matthias Kretz  <kretz@kde.org>
8527         * testsuite/experimental/simd/driver.sh: Implement skip, only,
8528         expensive, and xfail markers. They can select on type, ABI tag
8529         subset number, target-triplet, and compiler flags.
8530         * testsuite/experimental/simd/generate_makefile.sh: The summary
8531         now includes lines for unexpected passes and expected failures.
8532         If the skip or only markers are only conditional on the type, do
8533         not generate rules for those types.
8534         * testsuite/experimental/simd/tests/abs.cc: Mark test expensive
8535         for ABI tag subsets 1-9.
8536         * testsuite/experimental/simd/tests/algorithms.cc: Ditto.
8537         * testsuite/experimental/simd/tests/broadcast.cc: Ditto.
8538         * testsuite/experimental/simd/tests/casts.cc: Ditto.
8539         * testsuite/experimental/simd/tests/generator.cc: Ditto.
8540         * testsuite/experimental/simd/tests/integer_operators.cc: Ditto.
8541         * testsuite/experimental/simd/tests/loadstore.cc: Ditto.
8542         * testsuite/experimental/simd/tests/mask_broadcast.cc: Ditto.
8543         * testsuite/experimental/simd/tests/mask_conversions.cc: Ditto.
8544         * testsuite/experimental/simd/tests/mask_implicit_cvt.cc: Ditto.
8545         * testsuite/experimental/simd/tests/mask_loadstore.cc: Ditto.
8546         * testsuite/experimental/simd/tests/mask_operator_cvt.cc: Ditto.
8547         * testsuite/experimental/simd/tests/mask_operators.cc: Ditto.
8548         * testsuite/experimental/simd/tests/mask_reductions.cc: Ditto.
8549         * testsuite/experimental/simd/tests/operator_cvt.cc: Ditto.
8550         * testsuite/experimental/simd/tests/operators.cc: Ditto.
8551         * testsuite/experimental/simd/tests/reductions.cc: Ditto.
8552         * testsuite/experimental/simd/tests/simd.cc: Ditto.
8553         * testsuite/experimental/simd/tests/split_concat.cc: Ditto.
8554         * testsuite/experimental/simd/tests/splits.cc: Ditto.
8555         * testsuite/experimental/simd/tests/where.cc: Ditto.
8556         * testsuite/experimental/simd/tests/fpclassify.cc: Ditto. In
8557         addition replace "test only floattypes" marker by unconditional
8558         "float|double|ldouble" only marker.
8559         * testsuite/experimental/simd/tests/frexp.cc: Ditto.
8560         * testsuite/experimental/simd/tests/hypot3_fma.cc: Ditto.
8561         * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
8562         Ditto.
8563         * testsuite/experimental/simd/tests/logarithm.cc: Ditto.
8564         * testsuite/experimental/simd/tests/math_1arg.cc: Ditto.
8565         * testsuite/experimental/simd/tests/math_2arg.cc: Ditto.
8566         * testsuite/experimental/simd/tests/remqo.cc: Ditto.
8567         * testsuite/experimental/simd/tests/trigonometric.cc: Ditto.
8568         * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: Ditto.
8569         * testsuite/experimental/simd/tests/sincos.cc: Ditto. In
8570         addition, xfail on run because the reference data is missing.
8572 2021-02-02  Jonathan Wakely  <jwakely@redhat.com>
8574         * doc/xml/manual/status_cxx2011.xml: Remove stray table cell.
8575         * doc/xml/manual/status_cxx2014.xml: Likewise.
8576         * doc/xml/manual/status_cxx2017.xml: Likewise.
8577         * doc/html/manual/status.html: Regenerate.
8579 2021-02-01  François Dumont  <fdumont@gcc.gnu.org>
8581         PR libstdc++/70303
8582         * include/bits/stl_deque.h (std::deque<>::operator-(iterator, iterator)):
8583         Return 0 if both iterators are value-initialized.
8584         * testsuite/23_containers/deque/70303.cc: New test.
8585         * testsuite/23_containers/vector/70303.cc: New test.
8587 2021-02-01  Jonathan Wakely  <jwakely@redhat.com>
8589         * doc/xml/manual/status_cxx2011.xml: Update std::call_once
8590         status.
8591         * doc/xml/manual/status_cxx2014.xml: Likewise.
8592         * doc/xml/manual/status_cxx2017.xml: Likewise. Update
8593         std::from_chars and std::to_chars status. Fix formatting.
8594         * doc/html/manual/status.html: Regenerate.
8596 2021-01-28  Jonathan Wakely  <jwakely@redhat.com>
8598         * include/experimental/bits/numeric_traits.h: Update copyright
8599         dates.
8600         * include/experimental/bits/simd.h: Likewise.
8601         * include/experimental/bits/simd_builtin.h: Likewise.
8602         * include/experimental/bits/simd_converter.h: Likewise.
8603         * include/experimental/bits/simd_detail.h: Likewise.
8604         * include/experimental/bits/simd_fixed_size.h: Likewise.
8605         * include/experimental/bits/simd_math.h: Likewise.
8606         * include/experimental/bits/simd_neon.h: Likewise.
8607         * include/experimental/bits/simd_ppc.h: Likewise.
8608         * include/experimental/bits/simd_scalar.h: Likewise.
8609         * include/experimental/bits/simd_x86.h: Likewise.
8610         * include/experimental/bits/simd_x86_conversions.h: Likewise.
8611         * include/experimental/simd: Likewise.
8612         * testsuite/experimental/simd/*: Likewise.
8614 2021-01-27  Jonathan Wakely  <jwakely@redhat.com>
8616         * doc/xml/manual/status_cxx2017.xml: Replace invalid entity.
8617         * doc/html/*: Regenerate.
8619 2021-01-27  Jonathan Wakely  <jwakely@redhat.com>
8621         * testsuite/experimental/simd/generate_makefile.sh: Use printf
8622         instead of echo when printing escape characters.
8624 2021-01-27  Matthias Kretz  <kretz@kde.org>
8626         * scripts/check_simd: New file. This script is called from the
8627         the check-simd target. It determines a set of compiler flags and
8628         simulator setups for calling generate_makefile.sh and passes the
8629         information back to the check-simd target, which recurses to the
8630         generated Makefiles.
8631         * scripts/create_testsuite_files: Remove files below simd/tests/
8632         from testsuite_files and place them in testsuite_files_simd.
8633         * testsuite/Makefile.am: Add testsuite_files_simd. Add
8634         check-simd target.
8635         * testsuite/Makefile.in: Regenerate.
8636         * testsuite/experimental/simd/driver.sh: New file. This script
8637         compiles and runs a given simd test, logging its output and
8638         status. It uses the timeout command to implement compile and
8639         test timeouts.
8640         * testsuite/experimental/simd/generate_makefile.sh: New file.
8641         This script generates a Makefile which uses driver.sh to compile
8642         and run the tests and collect the logs into a single log file.
8643         * testsuite/experimental/simd/tests/abs.cc: New file. Tests
8644         abs(simd).
8645         * testsuite/experimental/simd/tests/algorithms.cc: New file.
8646         Tests min/max(simd, simd).
8647         * testsuite/experimental/simd/tests/bits/conversions.h: New
8648         file. Contains functions to support tests involving conversions.
8649         * testsuite/experimental/simd/tests/bits/make_vec.h: New file.
8650         Support functions make_mask and make_vec.
8651         * testsuite/experimental/simd/tests/bits/mathreference.h: New
8652         file. Support functions to supply precomputed math function
8653         reference data.
8654         * testsuite/experimental/simd/tests/bits/metahelpers.h: New
8655         file. Support code for SFINAE testing.
8656         * testsuite/experimental/simd/tests/bits/simd_view.h: New file.
8657         * testsuite/experimental/simd/tests/bits/test_values.h: New
8658         file. Test functions to easily drive a test with simd objects
8659         initialized from a given list of values and a range of random
8660         values.
8661         * testsuite/experimental/simd/tests/bits/ulp.h: New file.
8662         Support code to determine the ULP distance of simd objects.
8663         * testsuite/experimental/simd/tests/bits/verify.h: New file.
8664         Test framework for COMPARE'ing simd objects and instantiating
8665         the test templates with value_type and ABI tag.
8666         * testsuite/experimental/simd/tests/broadcast.cc: New file. Test
8667         simd broadcasts.
8668         * testsuite/experimental/simd/tests/casts.cc: New file. Test
8669         simd casts.
8670         * testsuite/experimental/simd/tests/fpclassify.cc: New file.
8671         Test floating-point classification functions.
8672         * testsuite/experimental/simd/tests/frexp.cc: New file. Test
8673         frexp(simd).
8674         * testsuite/experimental/simd/tests/generator.cc: New file. Test
8675         simd generator constructor.
8676         * testsuite/experimental/simd/tests/hypot3_fma.cc: New file.
8677         Test 3-arg hypot(simd,simd,simd) and fma(simd,simd,sim).
8678         * testsuite/experimental/simd/tests/integer_operators.cc: New
8679         file. Test integer operators.
8680         * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
8681         New file. Test ldexp(simd), scalbn(simd), scalbln(simd), and
8682         modf(simd).
8683         * testsuite/experimental/simd/tests/loadstore.cc: New file. Test
8684         (converting) simd loads and stores.
8685         * testsuite/experimental/simd/tests/logarithm.cc: New file. Test
8686         log*(simd).
8687         * testsuite/experimental/simd/tests/mask_broadcast.cc: New file.
8688         Test simd_mask broadcasts.
8689         * testsuite/experimental/simd/tests/mask_conversions.cc: New
8690         file. Test simd_mask conversions.
8691         * testsuite/experimental/simd/tests/mask_implicit_cvt.cc: New
8692         file. Test simd_mask implicit conversions.
8693         * testsuite/experimental/simd/tests/mask_loadstore.cc: New file.
8694         Test simd_mask loads and stores.
8695         * testsuite/experimental/simd/tests/mask_operator_cvt.cc: New
8696         file. Test simd_mask operators convert as specified.
8697         * testsuite/experimental/simd/tests/mask_operators.cc: New file.
8698         Test simd_mask compares, subscripts, and negation.
8699         * testsuite/experimental/simd/tests/mask_reductions.cc: New
8700         file. Test simd_mask reductions.
8701         * testsuite/experimental/simd/tests/math_1arg.cc: New file. Test
8702         1-arg math functions on simd.
8703         * testsuite/experimental/simd/tests/math_2arg.cc: New file. Test
8704         2-arg math functions on simd.
8705         * testsuite/experimental/simd/tests/operator_cvt.cc: New file.
8706         Test implicit conversions on simd binary operators behave as
8707         specified.
8708         * testsuite/experimental/simd/tests/operators.cc: New file. Test
8709         simd compares, subscripts, not, unary minus, plus, minus,
8710         multiplies, divides, increment, and decrement.
8711         * testsuite/experimental/simd/tests/reductions.cc: New file.
8712         Test reduce(simd).
8713         * testsuite/experimental/simd/tests/remqo.cc: New file. Test
8714         remqo(simd).
8715         * testsuite/experimental/simd/tests/simd.cc: New file. Basic
8716         sanity checks of simd types.
8717         * testsuite/experimental/simd/tests/sincos.cc: New file. Test
8718         sin(simd) and cos(simd).
8719         * testsuite/experimental/simd/tests/split_concat.cc: New file.
8720         Test split(simd) and concat(simd, simd).
8721         * testsuite/experimental/simd/tests/splits.cc: New file. Test
8722         split(simd_mask).
8723         * testsuite/experimental/simd/tests/trigonometric.cc: New file.
8724         Test remaining trigonometric functions on simd.
8725         * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: New
8726         file. Test trunc(simd), ceil(simd), and floor(simd).
8727         * testsuite/experimental/simd/tests/where.cc: New file. Test
8728         masked operations using where.
8730 2021-01-27  Matthias Kretz  <kretz@kde.org>
8732         * doc/xml/manual/status_cxx2017.xml: Add implementation status
8733         of the Parallelism TS 2. Document implementation-defined types
8734         and behavior.
8735         * include/Makefile.am: Add new headers.
8736         * include/Makefile.in: Regenerate.
8737         * include/experimental/simd: New file. New header for
8738         Parallelism TS 2.
8739         * include/experimental/bits/numeric_traits.h: New file.
8740         Implementation of P1841R1 using internal naming. Addition of
8741         missing IEC559 functionality query.
8742         * include/experimental/bits/simd.h: New file. Definition of the
8743         public simd interfaces and general implementation helpers.
8744         * include/experimental/bits/simd_builtin.h: New file.
8745         Implementation of the _VecBuiltin simd_abi.
8746         * include/experimental/bits/simd_converter.h: New file. Generic
8747         simd conversions.
8748         * include/experimental/bits/simd_detail.h: New file. Internal
8749         macros for the simd implementation.
8750         * include/experimental/bits/simd_fixed_size.h: New file. Simd
8751         fixed_size ABI specific implementations.
8752         * include/experimental/bits/simd_math.h: New file. Math
8753         overloads for simd.
8754         * include/experimental/bits/simd_neon.h: New file. Simd NEON
8755         specific implementations.
8756         * include/experimental/bits/simd_ppc.h: New file. Implement bit
8757         shifts to avoid invalid results for integral types smaller than
8758         int.
8759         * include/experimental/bits/simd_scalar.h: New file. Simd scalar
8760         ABI specific implementations.
8761         * include/experimental/bits/simd_x86.h: New file. Simd x86
8762         specific implementations.
8763         * include/experimental/bits/simd_x86_conversions.h: New file.
8764         x86 specific conversion optimizations. The conversion patterns
8765         work around missing conversion patterns in the compiler and
8766         should be removed as soon as PR85048 is resolved.
8767         * testsuite/experimental/simd/standard_abi_usable.cc: New file.
8768         Test that all (not all fixed_size<N>, though) standard simd and
8769         simd_mask types are usable.
8770         * testsuite/experimental/simd/standard_abi_usable_2.cc: New
8771         file. As above but with -ffast-math.
8772         * testsuite/libstdc++-dg/conformance.exp: Don't build simd tests
8773         from the standard test loop. Instead use
8774         check_vect_support_and_set_flags to build simd tests with the
8775         relevant machine flags.
8777 2021-01-27  Jonathan Wakely  <jwakely@redhat.com>
8779         PR libstdc++/66414
8780         * include/bits/string_view.tcc
8781         (basic_string_view::find(const CharT*, size_type, size_type)):
8782         Optimize.
8784 2021-01-27  Paul Fee  <paul.f.fee@gmail.com>
8786         * include/bits/basic_string.h (basic_string::contains): New
8787         member functions.
8788         * include/std/string_view (basic_string_view::contains):
8789         Likewise.
8790         * include/std/version (__cpp_lib_string_contains): Define.
8791         * testsuite/21_strings/basic_string/operations/starts_with/char/1.cc:
8792         Remove trailing whitespace.
8793         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc:
8794         Likewise.
8795         * testsuite/21_strings/basic_string/operations/contains/char/1.cc: New test.
8796         * testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc: New test.
8797         * testsuite/21_strings/basic_string_view/operations/contains/char/1.cc: New test.
8798         * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc: New test.
8799         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc: New test.
8801 2021-01-21  Jonathan Wakely  <jwakely@redhat.com>
8803         * src/c++17/Makefile.in: Regenerate.
8805 2021-01-20  David Edelsohn  <dje.gcc@gmail.com>
8807         * config/os/aix/ctype_inline.h (bool ctype<char>:: is): Cast
8808         _OBJ_DATA subscript to unsigned char. Add _THREAD_SAFE access to
8809         __lc_type.
8810         (const char* ctype<char>:: is): Same.
8812 2021-01-18  Jonathan Wakely  <jwakely@redhat.com>
8814         PR libstdc++/98725
8815         * testsuite/20_util/unique_ptr/io/lwg2948.cc:  Do not try to
8816         write to a wide character stream if wide character support is
8817         disabled in the library.
8819 2021-01-18  Jonathan Wakely  <jwakely@redhat.com>
8821         * testsuite/27_io/basic_stringstream/cons/char/1.cc: Use
8822         stringbuf not wstringbuf.
8824 2021-01-18  Jakub Jelinek  <jakub@redhat.com>
8826         PR debug/98708
8827         * src/c++11/Makefile.am (cxx11-ios_failure-lt.s, cxx11-ios_failure.s):
8828         Compile with -gno-as-loc-support.
8829         * src/c++11/Makefile.in: Regenerated.
8831 2021-01-16  H.J. Lu  <hjl.tools@gmail.com>
8833         * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
8834         Add -fcf-protection=none to -march=i486.
8836 2021-01-14  François Dumont  <fdumont@gcc.gnu.org>
8838         * testsuite/23_containers/deque/debug/98466.cc: Make it pre-C++11
8839         compliant.
8841 2021-01-14  Alexandre Oliva  <oliva@adacore.com>
8843         * testsuite/30_threads/future/members/poll.cc: Calibrate
8844         iteration count.
8846 2021-01-14  François Dumont  <fdumont@gcc.gnu.org>
8848         PR libstdc++/98466
8849         * include/bits/hashtable_policy.h (_Node_iterator_base()): Set _M_cur to nullptr.
8850         (_Node_iterator()): Make default.
8851         (_Node_const_iterator()): Make default.
8852         * include/debug/macros.h (__glibcxx_check_erae_range_after): Add _M_singular
8853         iterator checks.
8854         * include/debug/safe_iterator.h
8855         (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Accept if both iterator are value initialized.
8856         * include/debug/safe_local_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
8857         Likewise.
8858         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range): Add
8859         _M_singular checks on input iterators.
8860         * src/c++11/debug.cc (_Safe_iterator_base::_M_can_compare): Remove _M_singular
8861         checks.
8862         * testsuite/23_containers/deque/debug/98466.cc: New test.
8863         * testsuite/23_containers/unordered_map/debug/98466.cc: New test.
8865 2021-01-14  Jonathan Wakely  <jwakely@redhat.com>
8867         PR libstdc++/98471
8868         * include/bits/fs_path.h (__throw_conversion_error): New
8869         function to throw or abort on character conversion errors.
8870         (__wstr_from_utf8): Move definition after filesystem_error has
8871         been defined. Use __throw_conversion_error.
8872         (path::_S_convert<_EcharT>): Use __throw_conversion_error.
8873         (path::_S_str_convert<_CharT, _Traits, _Allocator>): Likewise.
8874         (path::u8string): Likewise.
8876 2021-01-14  Jonathan Wakely  <jwakely@redhat.com>
8878         * include/std/barrier: Update copyright years. Fix whitespace.
8879         * include/std/version: Fix whitespace.
8880         * testsuite/30_threads/barrier/1.cc: Update copyright years.
8881         * testsuite/30_threads/barrier/2.cc: Likewise.
8882         * testsuite/30_threads/barrier/arrive.cc: Likewise.
8883         * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise.
8884         * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise.
8885         * testsuite/30_threads/barrier/completion.cc: Likewise.
8887 2021-01-13  Jonathan Wakely  <jwakely@redhat.com>
8889         * doc/doxygen/user.cfg.in (INPUT): Remove include/debug/array.
8891 2021-01-10  David Edelsohn  <dje.gcc@gmail.com>
8893         PR libstdc++/98613
8894         * testsuite/ext/vstring/cons/moveable.cc: Suppress false positive
8895         warning.
8896         * testsuite/ext/vstring/modifiers/assign/move_assign.cc: Same.
8898 2021-01-08  Olivier Hainque  <hainque@adacore.com>
8900         * testsuite/20_util/bind/ref_neg.cc: Tweak the
8901         dg-prune-output regex for out-of-build-tree contexts.
8903 2021-01-07  Thomas Rodgers  <trodgers@redhat.com>
8905         * doc/doxygen/user.cfg.in: Add new header.
8906         * include/Makefile.am (std_headers): likewise.
8907         * include/Makefile.in: Regenerate.
8908         * include/precompiled/stdc++.h: Add new header.
8909         * include/std/barrier: New file.
8910         * include/std/version: Add __cpp_lib_barrier feature test macro.
8911         * testsuite/30_threads/barrier/1.cc: New test.
8912         * testsuite/30_threads/barrier/2.cc: Likewise.
8913         * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise.
8914         * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise.
8915         * testsuite/30_threads/barrier/arrive.cc: Likewise.
8916         * testsuite/30_threads/barrier/completion.cc: Likewise.
8918 2021-01-07  Patrick Palka  <ppalka@redhat.com>
8920         PR libstdc++/98384
8921         * testsuite/20_util/to_chars/long_double.cc: Use nexttowardl
8922         instead of the non-standard nextupl and nextdownl.
8924 2021-01-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8926         * configure: Re-generate.
8928 2021-01-05  Ed Smith-Rowland  <3dw4rd@verizon.net>
8930         * include/precompiled/stdc++.h: Add <source_location> to C++20 section.
8932 2021-01-01  Jakub Jelinek  <jakub@redhat.com>
8934         * ChangeLog-2020: Rotate ChangeLog.  New file.
8937 Copyright (C) 2021 Free Software Foundation, Inc.
8939 Copying and distribution of this file, with or without modification,
8940 are permitted in any medium without royalty provided the copyright
8941 notice and this notice are preserved.