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