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