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>
16 * include/bits/locale_facets_nonio.tcc (_M_extract_via_format):
17 Compare characters other than format specifiers and whitespace
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>
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>
35 * include/bits/regex_compiler.h (_Compiler::_BracketState): New
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):
58 (syntax_option_type, match_flag_type): Define enumerators.
59 Use to initialize globals. Add constexpr to compound assignment
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
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
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
85 * testsuite/std/ranges/access/size.cc: Likewise.
87 2021-12-13 Jonathan Wakely <jwakely@redhat.com>
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>
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>
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
108 * config/locale/gnu/time_members.cc (_M_initialize_timepunct):
110 * config/locale/generic/time_members.cc (_M_initialize_timepunct):
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
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>
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
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):
144 * testsuite/22_locale/time_get/get_time/char/2.cc (test02): Add " PM"
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
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>
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>
173 * include/bits/atomic_base.h (__atomic_base<_PTp*>::wait()):
175 * include/std/atomic (atomic<_Tp*>::wait(), atomic_wait()):
177 * testsuite/29_atomics/atomic/wait_notify/102994.cc:
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
191 2021-12-09 Jonathan Wakely <jwakely@redhat.com>
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
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>
206 * libsupc++/exception_ptr.h (exception_ptr): Fix exception
207 specifications on inline definitions.
208 (make_exception_ptr): Decay the template parameter. Use typeid
210 * testsuite/18_support/exception_ptr/103630.cc: New test.
212 2021-12-09 Jonathan Wakely <jwakely@redhat.com>
215 * config/io/basic_file_stdio.cc (fopen_mode): Add support for
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>
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
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):
235 * include/std/condition_variable (condition_variable::wait):
237 * src/c++11/condition_variable.cc (condition_variable::wait):
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>
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>
265 * include/bits/char_traits.h: Suppress stringop and array-bounds
268 2021-12-09 Jonathan Wakely <jwakely@redhat.com>
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
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
311 (_Sp_counted_base::_M_release_last_use): New member function.
313 2021-12-07 Tamar Christina <tamar.christina@arm.com>
316 2021-11-19 Tamar Christina <tamar.christina@arm.com>
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>
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>
353 * acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Remove mt, bitmap
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
371 2021-12-01 Jonathan Wakely <jwakely@redhat.com>
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:
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)
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):
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()
417 * include/debug/helper_functions.h (__check_singular): Use
418 __is_constant_evaluated instead of built-in, or remove check
420 * include/std/array (operator<=>): Use __is_constant_evaluated
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:
452 * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc:
454 * testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc:
456 * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc:
458 * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
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:
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:
474 2021-11-30 Jonathan Wakely <jwakely@redhat.com>
476 * src/c++20/sstream-inst.cc (_GLIBCXX_USE_CXX11_ABI): Define to
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>
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>
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:
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:
545 * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
547 * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
549 * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
551 * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
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:
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:
561 * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
563 * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
565 * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
567 * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
569 * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
572 2021-11-26 Jonathan Wakely <jwakely@redhat.com>
574 * testsuite/20_util/pointer_traits/lwg3545.cc: Move to_address
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>
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>
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
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>
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):
633 2021-11-23 Jonathan Wakely <jwakely@redhat.com>
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
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
674 * testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc:
676 * testsuite/27_io/basic_ostringstream/cons/char/1.cc: Likewise.
677 * testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc:
679 * testsuite/27_io/basic_stringstream/cons/char/1.cc: Likewise.
680 * testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc:
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>
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>
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:
708 * testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc:
709 Add -Wno-stringop-overread.
711 2021-11-19 Jonathan Wakely <jwakely@redhat.com>
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
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
724 * include/ext/vstring.h: Include <bits/stl_algobase.h> for
726 * include/std/string_view: Likewise.
727 * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
730 2021-11-19 Tamar Christina <tamar.christina@arm.com>
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&)):
764 (basic_string(const basic_string&, size_type, size_type)):
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
778 (_M_construct(I, I, forward_iterator_tag)): Likewise. Remove
779 __is_null_pointer check.
781 2021-11-17 Jonathan Wakely <jwakely@redhat.com>
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()):
790 2021-11-17 Jonathan Wakely <jwakely@redhat.com>
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
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
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
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
815 2021-11-16 Jonathan Wakely <jwakely@redhat.com>
817 * include/bits/basic_string.h (basic_string, operator""s): Add
819 (basic_string::basic_string(basic_string&&)): Only copy
820 initialized portion of the buffer.
821 (basic_string::basic_string(basic_string&&, const Alloc&)):
823 * include/bits/basic_string.tcc (basic_string): Add constexpr
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
834 * testsuite/21_strings/basic_string/cons/char/constexpr.cc:
836 * testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc:
838 * testsuite/21_strings/basic_string/literals/constexpr.cc:
840 * testsuite/21_strings/basic_string/modifiers/constexpr.cc: New test.
841 * testsuite/21_strings/basic_string/modifiers/swap/char/constexpr.cc:
843 * testsuite/21_strings/basic_string/modifiers/swap/wchar_t/constexpr.cc:
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:
859 * testsuite/experimental/string_view/operations/compare/wchar_t/1.cc:
862 2021-11-16 Jonathan Wakely <jwakely@redhat.com>
864 * testsuite/21_strings/basic_string/allocator/71964.cc: Fix
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&)):
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>
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>
963 * acinclude.m4 (libtool_VERSION): Bump version.
964 * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Add version and
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
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
979 * include/bits/allocator.h (__shrink_to_fit::_S_do_it):
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
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
990 (vector<bool, A>::_M_initialize_value): Use __fill_bvector_n
992 (__fill_bvector_n): New helper function to replace memset during
994 * include/bits/stl_uninitialized.h (__uninitialized_copy<false>):
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):
1004 (__uninitialized_fill_a): Add constexpr. Use __do_uninit_fill.
1005 (__uninitialized_fill_n_a): Add constexpr. Use
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:
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
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&)):
1053 * include/debug/multiset.h (multiset::operator=(const multiset&)):
1055 * include/debug/set.h (set::operator=(const set&)): Likewise.
1056 * include/debug/string (basic_string::operator=(const basic_string&)):
1058 * include/debug/vector (vector::operator=(const vector&)):
1060 (_Safe_vector::operator=(const _Safe_vector&)): Define for
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>
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>
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
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
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>
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):
1167 * configure.ac (GLIBCXX_CHECK_GETENTROPY, GLIBCXX_CHECK_ARC4RANDOM):
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:
1175 * testsuite/26_numerics/random/random_device/entropy.cc:
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)):
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:
1212 * testsuite/26_numerics/random/random_device/entropy.cc:
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
1221 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
1222 * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Tweak
1225 2021-11-04 Jonathan Wakely <jwakely@redhat.com>
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):
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
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
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
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
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>
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>
1337 * include/bits/list.tcc (list::sort): Use mutable iterators for
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>
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>
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
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
1420 2021-10-21 Patrick Palka <ppalka@redhat.com>
1423 * include/bits/stl_iterator.h (__niter_base): Make constexpr
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
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
1456 (__detail::__is_std_array): Turn it into a variable template.
1457 (span::span): Adjust uses of __is_std_span and __is_std_array
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
1485 * testsuite/std/ranges/adaptors/all.cc (test07): New test.
1487 2021-10-21 Jonathan Wakely <jwakely@redhat.com>
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
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
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.
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
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):
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>
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):
1613 (basic_string::resize_and_overwrite): Declare.
1614 * include/bits/basic_string.tcc (basic_string::resize_and_overwrite):
1616 * include/std/version (__cpp_lib_resize_and_overwrite): Define
1618 * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
1621 2021-10-15 Jonathan Wakely <jwakely@redhat.com>
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
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
1649 * testsuite/20_util/optional/version.cc: Check for exact value
1651 * testsuite/20_util/variant/87619.cc: Increase timeout for
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
1692 (path::_S_convert(T)): Add condtional noexcept.
1694 2021-10-14 Jonathan Wakely <jwakely@redhat.com>
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
1705 2021-10-14 Jonathan Wakely <jwakely@redhat.com>
1707 * testsuite/20_util/is_layout_compatible/version.cc: Check
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
1718 * testsuite/20_util/optional/requirements.cc: Check feature test
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>&)):
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
1753 2021-10-13 Jonathan Wakely <jwakely@redhat.com>
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
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>
1777 * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Define as
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>
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>
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>
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:
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:
1850 * testsuite/20_util/make_signed/requirements/typedefs-2.cc:
1852 * testsuite/20_util/make_signed/requirements/typedefs-3.cc:
1854 * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
1856 * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
1858 * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
1860 * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc:
1862 * testsuite/20_util/to_chars/3.cc: Likewise.
1863 * testsuite/20_util/type_identity/requirements/typedefs.cc:
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:
1869 * testsuite/21_strings/basic_string/literals/types.cc: Likewise.
1870 * testsuite/21_strings/basic_string/literals/values-char8_t.cc:
1872 * testsuite/21_strings/basic_string/literals/values.cc:
1874 * testsuite/21_strings/basic_string/modifiers/64422.cc:
1876 * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
1878 * testsuite/21_strings/basic_string/requirements/citerators.cc:
1880 * testsuite/21_strings/basic_string/requirements/typedefs.cc:
1882 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
1884 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
1886 * testsuite/21_strings/basic_string_view/literals/types.cc:
1888 * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
1890 * testsuite/21_strings/basic_string_view/literals/values.cc:
1892 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
1894 * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
1895 * testsuite/21_strings/char_traits/requirements/constexpr_functions.cc:
1897 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
1899 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
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:
1908 * testsuite/experimental/string_view/literals/types-char8_t.cc:
1910 * testsuite/experimental/string_view/literals/types.cc:
1912 * testsuite/experimental/string_view/literals/values-char8_t.cc:
1914 * testsuite/experimental/string_view/literals/values.cc:
1916 * testsuite/experimental/string_view/range_access/wchar_t/1.cc:
1918 * testsuite/experimental/string_view/requirements/typedefs.cc:
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:
1924 * testsuite/std/concepts/concepts.lang/concept.arithmetic/signed_integral.cc:
1926 * testsuite/std/concepts/concepts.lang/concept.arithmetic/unsigned_integral.cc:
1928 * testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc:
1930 * testsuite/tr1/4_metaprogramming/is_compound/value.cc:
1932 * testsuite/tr1/4_metaprogramming/is_floating_point/value.cc:
1934 * testsuite/tr1/4_metaprogramming/is_fundamental/value.cc:
1936 * testsuite/tr1/4_metaprogramming/is_integral/value.cc:
1938 * testsuite/tr1/4_metaprogramming/is_signed/value.cc: Likewise.
1939 * testsuite/tr1/4_metaprogramming/is_unsigned/value.cc:
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>
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>
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>
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>
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>
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>):
1991 * include/std/string_view (wstring_view, hash<wstring_view>):
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:
2009 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
2011 * testsuite/27_io/filesystem/path/native/alloc.cc: Likewise.
2012 * testsuite/27_io/filesystem/path/native/string-char8_t.cc:
2014 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
2015 * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
2017 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
2019 * testsuite/experimental/filesystem/path/native/alloc.cc:
2021 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
2023 * testsuite/experimental/filesystem/path/native/string.cc:
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:
2044 * testsuite/20_util/make_signed/requirements/typedefs-2.cc:
2046 * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
2048 * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
2050 * testsuite/20_util/type_identity/requirements/typedefs.cc:
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:
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
2068 (_Select2nd): Remove.
2069 (_NodeBuilder::_S_build): Use _NodeGenerator::__node_type
2070 typedef instead of deducing it. Remove unnecessary piecewise
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:
2078 * testsuite/23_containers/unordered_multimap/requirements/53339.cc:
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
2092 2021-10-08 Jonathan Wakely <jwakely@redhat.com>
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):
2106 * include/experimental/unordered_set (erase, erase_if):
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
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
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>
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
2158 * include/std/string (erase, erase_if): Likewise.
2159 * include/std/deque (erase, erase_if): Access non-debug
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):
2171 * include/experimental/unordered_set (erase, erase_if):
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:
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>
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
2222 (_Function_base::_Base_manager::_M_get_pointer): Likewise.
2223 (_Function_base::_Base_manager::_M_not_empty_function):
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:
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
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
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
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
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
2275 * testsuite/23_containers/forward_list/cons/deduction.cc:
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:
2287 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
2289 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
2291 * testsuite/23_containers/unordered_set/cons/deduction.cc:
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
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)):
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:
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>
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>
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>
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>
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
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):
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:
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
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>
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
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
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
2498 * include/bits/stl_algobase.h (__copy_move, __copy_move_backward):
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>&&)):
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):
2515 * include/experimental/executor (async_completion): Likewise.
2516 * include/experimental/functional (__boyer_moore_base_t):
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=):
2525 * include/std/variant (__detail::__variant::__get_t): Likewise.
2527 2021-10-01 Jonathan Wakely <jwakely@redhat.com>
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>
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>
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>
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>
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
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
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
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
2619 2021-09-29 Jonathan Wakely <jwakely@redhat.com>
2621 * include/bits/regex.h (basic_regex::multiline): Define constant
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
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
2642 * testsuite/28_regex/basic_regex/ctors/grammar.cc: New test.
2644 2021-09-29 Jonathan Wakely <jwakely@redhat.com>
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
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
2674 * include/bits/regex_compiler.h (__is_contiguous_iter): Move to
2676 (__enable_if_contiguous_iter, __disable_if_contiguous_iter)
2677 (__compile_nfa): Remove.
2678 * testsuite/28_regex/basic_regex/assign/exception_safety.cc: New
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
2704 * include/bits/regex_executor.tcc: Avoid unused parameter
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:
2729 * testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc:
2731 * testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc:
2733 * testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc:
2735 * testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc:
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
2743 * testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc:
2745 * testsuite/23_containers/list/requirements/explicit_instantiation/3.cc:
2747 * testsuite/23_containers/list/requirements/explicit_instantiation/5.cc:
2749 * testsuite/23_containers/map/requirements/explicit_instantiation/3.cc:
2751 * testsuite/23_containers/map/requirements/explicit_instantiation/5.cc:
2753 * testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc:
2755 * testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc:
2757 * testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc:
2759 * testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc:
2761 * testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
2763 * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
2765 * testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc:
2767 * testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc:
2769 * testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc:
2771 * testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc:
2773 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc:
2775 * testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc:
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
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
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>
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
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:
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&)):
2863 (system_error_category): Define class and virtual functions as
2865 (system_error_category::equivalent(int, const error_condition&)):
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>
2873 * src/c++11/system_error.cc
2874 (system_error_category::default_error_condition): Add 0 to
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>
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
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
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
2931 2021-09-16 Jonathan Wakely <jwakely@redhat.com>
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>
2942 * include/std/span (span(Range&&)): Add constraint to deduction
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>
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):
2985 * include/std/atomic (atomic<T*>::compare_exchange_weak): Use
2988 2021-09-02 Jonathan Wakely <jwakely@redhat.com>
2990 * include/std/atomic: Tweak whitespace.
2992 2021-09-02 Jonathan Wakely <jwakely@redhat.com>
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>
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>
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>
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>
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
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
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>
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>
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):
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:
3162 * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/102064.cc:
3164 * testsuite/20_util/specialized_algorithms/uninitialized_fill/102064.cc:
3166 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/102064.cc:
3169 2021-08-25 Jonathan Wakely <jwakely@redhat.com>
3172 * include/ext/rope (rope::erase(size_type)): Remove broken
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:
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:
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
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
3210 2021-08-23 Jonathan Wakely <jwakely@redhat.com>
3213 * testsuite/util/testsuite_fs.h (permissions_are_testable):
3216 2021-08-20 Jonathan Wakely <jwakely@redhat.com>
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:
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:
3230 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
3232 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3234 * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
3236 * testsuite/experimental/filesystem/operations/exists.cc:
3238 * testsuite/experimental/filesystem/operations/is_empty.cc:
3240 * testsuite/experimental/filesystem/operations/remove.cc:
3242 * testsuite/experimental/filesystem/operations/remove_all.cc:
3244 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
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>
3261 * include/std/charconv (__to_chars_i): Remove redundant check.
3263 2021-08-19 Jonathan Wakely <jwakely@redhat.com>
3266 * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Use base
3267 class' move constructor. Define as defaulted for versioned
3269 * testsuite/20_util/tuple/cons/101960.cc: New test.
3271 2021-08-19 Jonathan Wakely <jwakely@redhat.com>
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
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
3309 * include/bits/stl_algo.h (random_shuffle): Use @deprecated.
3310 * include/std/type_traits: Improve doxygen comments for C++20
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
3335 * include/debug/forward_list (forward_list(size_type, const T&, const A&)):
3337 * include/debug/list (list(size_type, const T&, const A&)):
3339 * include/debug/vector (vector(size_type, const T&, const A&)):
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,
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
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>
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
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>
3414 * src/c++11/debug.cc (PrintContext::_M_indent): Replace with a
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>
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>
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):
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
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:
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>
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>
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
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
3588 * testsuite/23_containers/array/debug/back1_neg.cc: Cast result
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:
3595 * testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc:
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
3601 * testsuite/23_containers/deque/debug/invalidation/4.cc:
3603 * testsuite/23_containers/deque/types/1.cc: Use
3605 * testsuite/23_containers/list/types/1.cc: Cast result to void.
3606 * testsuite/23_containers/priority_queue/members/7161.cc:
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:
3612 * testsuite/23_containers/vector/ext_pointer/types/2.cc:
3614 * testsuite/23_containers/vector/types/1.cc: Use
3617 2021-08-04 Jonathan Wakely <jwakely@redhat.com>
3619 * include/bits/iterator_concepts.h (iter_move): Add
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):
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:
3646 * testsuite/24_iterators/reverse_iterator/2.cc: Likewise.
3647 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc:
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:
3653 * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
3655 * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
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:
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:
3668 * testsuite/23_containers/unordered_multimap/range_access.cc:
3670 * testsuite/23_containers/unordered_multiset/range_access.cc:
3672 * testsuite/23_containers/unordered_set/range_access.cc:
3674 * testsuite/23_containers/vector/range_access.cc: Likewise.
3675 * testsuite/24_iterators/customization_points/iter_move.cc:
3677 * testsuite/24_iterators/istream_iterator/sentinel.cc:
3679 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc:
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:
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:
3691 * testsuite/experimental/string_view/range_access/wchar_t/1.cc:
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
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
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:
3717 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc:
3719 * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
3721 * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
3723 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
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
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:
3741 * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
3742 * testsuite/25_algorithms/headers/algorithm/synopsis.cc:
3744 * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
3746 * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
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
3757 * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adjust
3758 for C++11 and C++14 changes to std::random_shuffle and
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:
3766 * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
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:
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:
3788 * testsuite/ext/pb_ds/example/priority_queue_split_join.cc:
3790 * testsuite/lib/dg-options.exp (dg_add_options_using-deprecated):
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
3800 * include/std/regex: Replace standard headers with smaller
3802 * testsuite/28_regex/traits/char/lookup_classname.cc: Include
3803 <string.h> for strlen.
3804 * testsuite/28_regex/traits/char/lookup_collatename.cc:
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>
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
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>
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>
3841 * include/std/ranges (join_view::_Iterator::_Iterator): Add
3844 2021-08-02 Jonathan Wakely <jwakely@redhat.com>
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>
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
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>
3892 * testsuite/20_util/tuple/comparison_operators/overloaded.cc:
3894 * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
3897 2021-07-27 Jonathan Wakely <jwakely@redhat.com>
3899 * include/bits/cow_string.h: Consistently use tab for
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
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
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
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:
3939 * testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc:
3941 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constrained.cc:
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
3953 * include/std/type_traits (__is_tuple_like_impl<tuple<T...>>):
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
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
3972 * testsuite/20_util/optional/84601.cc: Include <utility>.
3973 * testsuite/20_util/specialized_algorithms/uninitialized_fill/constrained.cc:
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
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>
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:
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>
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>
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>
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>
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>
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>
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>
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
4072 * testsuite/experimental/filesystem/operations/create_directory.cc:
4075 2021-07-16 Jonathan Wakely <jwakely@redhat.com>
4077 * include/std/tuple (get<I>): Add deleted overload for bad
4079 * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust
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.
4092 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
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):
4108 * include/ext/numeric_traits.h (_GLIBCXX_INT_N_TRAITS):
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>
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>
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
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>
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>
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
4171 * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust
4173 * testsuite/20_util/tuple/element_access/101427.cc: New test.
4175 2021-07-15 Jonathan Wakely <jwakely@redhat.com>
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
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>
4192 * include/std/string_view (ends_with): Use traits_type::compare
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>
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>
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
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>
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
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
4264 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
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
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>
4288 * testsuite/17_intro/names.cc: Fix #if condition for names used
4291 2021-06-28 Jonathan Wakely <jwakely@redhat.com>
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
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
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
4327 * testsuite/27_io/basic_ostream/flush/char/2.cc: Check
4329 * testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
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:
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
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:
4345 * testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
4347 * testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc:
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>
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
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
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
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
4413 (frexp): Move #if to a more sensible position and reformat
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[]):
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>
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
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
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>
4513 * testsuite/23_containers/map/cons/deduction.cc: Replace ambiguous
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:
4523 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
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
4548 * testsuite/30_threads/unique_lock/cons/60497.cc: Also check
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
4563 * include/bits/random.tcc (seed_seq): Add template parameter.
4564 * testsuite/26_numerics/random/seed_seq/cons/default.cc: Check
4566 * testsuite/26_numerics/random/seed_seq/cons/initlist.cc: Check
4569 2021-06-22 Thomas Rodgers <rodgert@appliantology.com>
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):
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
4618 (split_view::_OuterIter::operator++): Set _M_trailing_empty
4620 (split_view::_OuterIter::operator==): Compare
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
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>
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):
4660 * testsuite/25_algorithms/minmax_element/constrained.cc (test02):
4663 2021-06-18 Patrick Palka <ppalka@redhat.com>
4665 * include/std/concepts (convertible_to): Just use declval as per
4668 2021-06-18 Jonathan Wakely <jwakely@redhat.com>
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
4700 * include/bits/stl_iterator.h (back_insert_iterator): Remove the
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
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
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:
4758 * testsuite/std/ranges/adaptors/detail/copyable_box.cc: ... this.
4759 (test02): Adjust now that __box is copyable-box not
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>
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):
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>
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>
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.
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:
4821 * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
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):
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
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
4889 2021-06-14 Jonathan Wakely <jwakely@redhat.com>
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>
4904 * include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
4905 (any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
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>
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>
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:
4940 * testsuite/17_intro/headers/c++2017/all_attributes.cc:
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
4953 * testsuite/experimental/filesystem/path/native/conv_c++23.cc:
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>
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):
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>
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>
4999 * include/std/ranges (elements_view::__iter_cat::_S_iter_cat):
5000 Add missing typename.
5002 2021-06-07 Jonathan Wakely <jwakely@redhat.com>
5005 * include/std/optional (operator<=>(const optional<T>& const U&)):
5006 Add missing constraint and add workaround for template
5008 * testsuite/20_util/optional/relops/three_way.cc: Check that
5009 type without equality comparison cannot be compared when wrapped
5012 2021-06-05 Jonathan Wakely <jwakely@redhat.com>
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
5027 2021-06-04 Jonathan Wakely <jwakely@redhat.com>
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>
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
5046 (__member_size, __adl_size, __member_empty, __size0_empty):
5047 (__eq_iter_empty, __adl_data): Use lvalue objects in
5049 (__sentinel_size): Likewise. Add check for conversion to
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
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
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):
5076 * include/std/version (__cpp_lib_generic_unordered_lookup):
5078 * testsuite/23_containers/unordered_map/operations/1.cc: Check
5080 * testsuite/23_containers/unordered_set/operations/1.cc:
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
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>
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>
5124 * include/bits/hashtable_policy.h (_Hashtable_ebo_helper):
5125 Value-initialize subobject.
5126 * testsuite/23_containers/unordered_map/allocator/default_init.cc:
5128 * testsuite/23_containers/unordered_set/allocator/default_init.cc:
5131 2021-06-02 Jonathan Wakely <jwakely@redhat.com>
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>
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:
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>
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>
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>
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>
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&)):
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>
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:
5274 * testsuite/25_algorithms/swap_ranges/1.cc: Qualify call to
5277 2021-05-21 Patrick Palka <ppalka@redhat.com>
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>
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
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>
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:
5312 * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
5315 * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
5317 * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
5319 * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
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>
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>
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
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>
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>
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
5366 * testsuite/std/ranges/single_view.cc (test04): New test.
5368 2021-05-18 Patrick Palka <ppalka@redhat.com>
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>
5378 * include/std/ranges (elements_view::_Iterator): Also befriend
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):
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
5400 2021-05-17 Jonathan Wakely <jwakely@redhat.com>
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:
5409 2021-05-17 Antony Polukhin <antoshkka@gmail.com>
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
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
5432 * scripts/run_doxygen (print_usage): Always print to stdout and
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
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
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
5462 * testsuite/25_algorithms/copy/debug/99402.cc: Avoid C++11
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
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
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:
5502 * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc:
5504 * testsuite/17_intro/headers/c++2017/operator_names.cc:
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:
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:
5523 * testsuite/19_diagnostics/error_code/is_error_code_v.cc:
5525 * testsuite/19_diagnostics/error_condition/hash.cc: Likewise.
5526 * testsuite/20_util/addressof/requirements/constexpr.cc:
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:
5535 * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
5537 * testsuite/20_util/duration_cast/rounding.cc: Likewise.
5538 * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
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:
5551 * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
5553 * testsuite/20_util/has_unique_object_representations/value.cc:
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:
5560 * testsuite/20_util/is_aggregate/requirements/typedefs.cc:
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:
5567 * testsuite/20_util/is_invocable/requirements/typedefs.cc:
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:
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:
5579 * testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
5581 * testsuite/20_util/is_nothrow_swappable/value.cc: Likewise.
5582 * testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc:
5584 * testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc:
5586 * testsuite/20_util/is_nothrow_swappable_with/value.cc:
5588 * testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc:
5590 * testsuite/20_util/is_swappable/requirements/typedefs.cc:
5592 * testsuite/20_util/is_swappable/value.cc: Likewise.
5593 * testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc:
5595 * testsuite/20_util/is_swappable_with/requirements/typedefs.cc:
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:
5601 * testsuite/20_util/logical_traits/requirements/typedefs.cc:
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:
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:
5614 * testsuite/20_util/time_point/arithmetic/constexpr.cc:
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:
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:
5638 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc:
5640 * testsuite/24_iterators/range_access/range_access_cpp17.cc:
5642 * testsuite/24_iterators/range_access/range_access_cpp17_neg.cc:
5644 * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
5645 * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc:
5647 * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
5648 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
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:
5655 * testsuite/27_io/manipulators/standard/char/quoted_sv.cc:
5657 * testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc:
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:
5670 * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
5672 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
5674 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc:
5676 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
5678 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
5680 * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
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:
5687 * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc:
5689 * testsuite/25_algorithms/for_each/for_each_n.cc: Likewise.
5690 * testsuite/25_algorithms/for_each/for_each_n_debug.cc:
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:
5712 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
5714 * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
5716 * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
5717 * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
5719 * testsuite/23_containers/forward_list/cons/deduction.cc:
5721 * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
5723 * testsuite/23_containers/list/cons/deduction.cc: Likewise.
5724 * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
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:
5730 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
5732 * testsuite/23_containers/map/modifiers/merge.cc: Likewise.
5733 * testsuite/23_containers/map/modifiers/try_emplace/1.cc:
5735 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
5736 * testsuite/23_containers/multimap/modifiers/extract.cc:
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:
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:
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:
5754 * testsuite/23_containers/unordered_map/cons/deduction.cc:
5756 * testsuite/23_containers/unordered_map/modifiers/extract.cc:
5758 * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
5760 * testsuite/23_containers/unordered_map/modifiers/merge.cc:
5762 * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
5764 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
5766 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
5768 * testsuite/23_containers/unordered_multimap/modifiers/merge.cc:
5770 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
5772 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
5774 * testsuite/23_containers/unordered_multiset/modifiers/merge.cc:
5776 * testsuite/23_containers/unordered_set/cons/deduction.cc:
5778 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
5780 * testsuite/23_containers/unordered_set/modifiers/merge.cc:
5782 * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
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:
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:
5796 * testsuite/21_strings/basic_string/cons/char/86138.cc:
5798 * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
5799 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
5801 * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc:
5803 * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
5804 * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc:
5806 * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc:
5808 * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
5809 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
5811 * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
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:
5818 * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
5820 * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
5822 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
5824 * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
5826 * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
5828 * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
5830 * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
5832 * testsuite/21_strings/basic_string/operations/compare/char/2.cc:
5834 * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
5836 * testsuite/21_strings/basic_string/operations/data/char/2.cc:
5838 * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
5840 * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc:
5842 * testsuite/21_strings/basic_string/operations/find/char/5.cc:
5844 * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
5846 * testsuite/21_strings/basic_string/operators/char/5.cc:
5848 * testsuite/21_strings/basic_string/operators/wchar_t/5.cc:
5850 * testsuite/21_strings/basic_string_view/capacity/1.cc:
5852 * testsuite/21_strings/basic_string_view/capacity/empty_neg.cc:
5854 * testsuite/21_strings/basic_string_view/cons/char/1.cc:
5856 * testsuite/21_strings/basic_string_view/cons/char/2.cc:
5858 * testsuite/21_strings/basic_string_view/cons/char/3.cc:
5860 * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
5862 * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc:
5864 * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc:
5866 * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc:
5868 * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
5870 * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
5872 * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
5874 * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc:
5876 * testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc:
5878 * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc:
5880 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
5882 * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
5884 * testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc:
5886 * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
5888 * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
5890 * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
5892 * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
5894 * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc:
5896 * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
5898 * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
5900 * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
5902 * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
5904 * testsuite/21_strings/basic_string_view/include.cc: Likewise.
5905 * testsuite/21_strings/basic_string_view/inserters/94051.cc:
5907 * testsuite/21_strings/basic_string_view/inserters/char/1.cc:
5909 * testsuite/21_strings/basic_string_view/inserters/char/2.cc:
5911 * testsuite/21_strings/basic_string_view/inserters/char/3.cc:
5913 * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
5915 * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
5917 * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
5919 * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
5921 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
5923 * testsuite/21_strings/basic_string_view/literals/types.cc:
5925 * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
5927 * testsuite/21_strings/basic_string_view/literals/values.cc:
5929 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
5931 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
5933 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
5935 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
5937 * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
5939 * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
5941 * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
5943 * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
5945 * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
5947 * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
5949 * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc:
5951 * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
5953 * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
5955 * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
5957 * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
5959 * testsuite/21_strings/basic_string_view/operations/copy/char/2.cc:
5961 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
5963 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc:
5965 * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
5967 * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
5969 * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
5971 * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
5973 * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
5975 * testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
5977 * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc:
5979 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
5981 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
5983 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
5985 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
5987 * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
5989 * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
5991 * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
5993 * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc:
5995 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
5997 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
5999 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
6001 * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
6003 * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
6005 * testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc:
6007 * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
6009 * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc:
6011 * testsuite/21_strings/basic_string_view/operators/char/2.cc:
6013 * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
6015 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
6017 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
6019 * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
6021 * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
6023 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
6025 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
6027 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
6029 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
6031 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
6033 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
6035 * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
6037 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
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:
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:
6053 * testsuite/20_util/monotonic_buffer_resource/allocate.cc:
6055 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc:
6057 * testsuite/20_util/monotonic_buffer_resource/release.cc:
6059 * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
6061 * testsuite/20_util/polymorphic_allocator/1.cc: Likewise.
6062 * testsuite/20_util/polymorphic_allocator/construct_pair.cc:
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:
6068 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
6070 * testsuite/20_util/synchronized_pool_resource/cons.cc:
6072 * testsuite/20_util/synchronized_pool_resource/cons_single.cc:
6074 * testsuite/20_util/synchronized_pool_resource/is_equal.cc:
6076 * testsuite/20_util/synchronized_pool_resource/multithreaded.cc:
6078 * testsuite/20_util/synchronized_pool_resource/options.cc:
6080 * testsuite/20_util/synchronized_pool_resource/release.cc:
6082 * testsuite/20_util/synchronized_pool_resource/release_single.cc:
6084 * testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc:
6086 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
6088 * testsuite/20_util/unsynchronized_pool_resource/cons.cc:
6090 * testsuite/20_util/unsynchronized_pool_resource/is_equal.cc:
6092 * testsuite/20_util/unsynchronized_pool_resource/options.cc:
6094 * testsuite/20_util/unsynchronized_pool_resource/release.cc:
6096 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
6098 * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise.
6099 * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc:
6101 * testsuite/23_containers/forward_list/pmr_typedefs.cc:
6103 * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc:
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:
6112 * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise.
6113 * testsuite/23_containers/multiset/pmr_typedefs_debug.cc:
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:
6119 * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc:
6121 * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc:
6123 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
6125 * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc:
6127 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
6129 * testsuite/23_containers/unordered_set/pmr_typedefs.cc:
6131 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
6133 * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise.
6134 * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc:
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
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:
6151 * testsuite/30_threads/scoped_lock/requirements/typedefs.cc:
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:
6157 * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
6158 * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
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:
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:
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:
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:
6289 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
6290 * testsuite/27_io/filesystem/iterators/recursion_pending.cc:
6292 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
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:
6301 * testsuite/27_io/filesystem/operations/create_directory.cc:
6303 * testsuite/27_io/filesystem/operations/create_symlink.cc:
6305 * testsuite/27_io/filesystem/operations/current_path.cc:
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:
6313 * testsuite/27_io/filesystem/operations/permissions.cc:
6315 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
6316 * testsuite/27_io/filesystem/operations/read_symlink.cc:
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:
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:
6328 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
6330 * testsuite/27_io/filesystem/operations/weakly_canonical.cc:
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:
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:
6355 * testsuite/27_io/filesystem/path/decompose/extension.cc:
6357 * testsuite/27_io/filesystem/path/decompose/filename.cc:
6359 * testsuite/27_io/filesystem/path/decompose/parent_path.cc:
6361 * testsuite/27_io/filesystem/path/decompose/relative_path.cc:
6363 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
6365 * testsuite/27_io/filesystem/path/decompose/root_name.cc:
6367 * testsuite/27_io/filesystem/path/decompose/root_path.cc:
6369 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
6370 * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc:
6372 * testsuite/27_io/filesystem/path/factory/u8path.cc: Likewise.
6373 * testsuite/27_io/filesystem/path/generation/normal.cc:
6375 * testsuite/27_io/filesystem/path/generation/normal2.cc:
6377 * testsuite/27_io/filesystem/path/generation/proximate.cc:
6379 * testsuite/27_io/filesystem/path/generation/relative.cc:
6381 * testsuite/27_io/filesystem/path/generic/94242.cc: Likewise.
6382 * testsuite/27_io/filesystem/path/generic/generic_string.cc:
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:
6392 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
6394 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
6396 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
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:
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:
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:
6411 * testsuite/27_io/filesystem/path/query/has_filename.cc:
6413 * testsuite/27_io/filesystem/path/query/has_parent_path.cc:
6415 * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
6417 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
6419 * testsuite/27_io/filesystem/path/query/has_root_name.cc:
6421 * testsuite/27_io/filesystem/path/query/has_root_path.cc:
6423 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
6424 * testsuite/27_io/filesystem/path/query/is_absolute.cc:
6426 * testsuite/27_io/filesystem/path/query/is_relative.cc:
6428 * testsuite/experimental/filesystem/path/construct/string_view.cc:
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:
6437 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc:
6439 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc:
6441 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
6442 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
6444 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
6446 * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc:
6448 * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc:
6450 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
6452 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
6454 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
6456 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
6458 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc:
6460 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc:
6462 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
6464 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
6466 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
6468 * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc:
6470 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc:
6472 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc:
6474 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
6476 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
6478 * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc:
6480 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc:
6482 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc:
6484 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc:
6486 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc:
6488 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc:
6490 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
6492 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
6494 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc:
6496 * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc:
6498 * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc:
6500 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc:
6502 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
6504 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc:
6506 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
6508 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
6510 * testsuite/25_algorithms/pstl/alg_sorting/includes.cc:
6512 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
6513 * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc:
6515 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
6517 * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
6519 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc:
6521 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
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:
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:
6536 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc:
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:
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:
6565 * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
6567 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
6569 * testsuite/27_io/basic_ostream/inserters_other/char/99692.cc:
6571 * testsuite/27_io/filesystem/path/io/dr2989.cc: Adjust pruned
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
6603 * testsuite/20_util/remove_cvref/value.cc: Check alias.
6605 2021-05-06 Jonathan Wakely <jwakely@redhat.com>
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>):
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
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
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
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>
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
6697 (__same_types): Move into namespace __detail::__variant.
6698 (__check_visitor_results): Likewise. Use __invoke_result_t and
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
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>.
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
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
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>
6782 * include/bits/basic_ios.tcc (basic_ios::copyfmt): use
6784 * include/bits/basic_string.tcc (basic_string::swap)
6785 (basic_string::assign): Likewise.
6786 * include/bits/deque.tcc (deque::operator=(const deque&)):
6788 * include/bits/stl_tree.h (_Rb_tree::operator=(const * _Rb_tree&)):
6790 * include/bits/vector.tcc (vector::operator=(const vector&)):
6793 2021-04-30 Jonathan Wakely <jwakely@redhat.com>
6795 * include/std/istream (operator>>(Istream&&, x&)): Simplify, as
6797 * include/std/ostream (operator<<(Ostream&&, const x&)):
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:
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:
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:
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>
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>
6836 * testsuite/experimental/net/internet/address/v4/comparisons.cc:
6837 Use new effective-target keyword.
6838 * testsuite/experimental/net/internet/address/v4/cons.cc:
6840 * testsuite/experimental/net/internet/address/v4/creation.cc:
6842 * testsuite/experimental/net/internet/address/v4/members.cc:
6844 * testsuite/experimental/net/internet/address/v6/members.cc:
6846 * testsuite/experimental/net/internet/resolver/base.cc:
6848 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
6850 * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
6852 * testsuite/experimental/net/internet/socket/opt.cc:
6854 * testsuite/experimental/net/internet/tcp.cc:
6856 * testsuite/experimental/net/internet/udp.cc:
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>
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
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>
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
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:
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
6906 * doc/Makefile.in: Regenerate.
6908 2021-04-28 Jonathan Wakely <jwakely@redhat.com>
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>
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
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>
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>
6944 2021-04-22 Jakub Jelinek <jakub@redhat.com>
6947 * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for
6949 * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for
6952 2021-04-27 Jonathan Wakely <jwakely@redhat.com>
6954 * include/experimental/internet (address_v6::bytes_type): Adjust
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>
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
6980 * testsuite/experimental/net/internet/socket/opt.cc: Check for
6981 <netinet/in.h> and <netinet/tcp.h> before using types from
6984 2021-04-27 Jonathan Wakely <jwakely@redhat.com>
6987 * include/experimental/internet (resolver_base::flags):
6988 Define overloaded operators as hidden friends.
6989 * include/experimental/socket (socket_base::message_flags):
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>
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>
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>
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
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
7081 (socket_base::message_flags): Make all operators constexpr and
7083 * testsuite/util/testsuite_common_types.h (test_bitmask_values):
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:
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>
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>
7124 * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for
7126 * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for
7129 2021-04-22 Jonathan Wakely <jwakely@redhat.com>
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:
7143 2021-04-21 Philippe Blain <levraiphilippeblain@gmail.com>
7144 Jonathan Wakely <jwakely@redhat.com>
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>
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
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>
7205 * include/bits/stl_iterator.h (__detail::__move_iter_cat):
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
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
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>
7300 * include/std/charconv (__cpp_lib_to_chars): Define
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:
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>
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>
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>
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:
7380 2021-04-12 Jonathan Wakely <jwakely@redhat.com>
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>
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,
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>&,
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>&,
7405 (_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&,
7406 std::pair<difference_type, _Distance_precision>&, bool)): Adapt for
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>
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
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
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
7460 (elements_view::operator++): Remove unnecessary constraint
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
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:
7490 * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
7492 * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
7495 2021-04-08 Patrick Palka <ppalka@redhat.com>
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>
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
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
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.
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):
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):
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>
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
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:
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
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
7749 (random_device::_M_init_pretr1) [USE_MT19937]: Accept "prng"
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:
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:
7790 * testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc:
7792 * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc:
7794 * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc:
7796 * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc:
7798 * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc:
7800 * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc:
7802 * testsuite/21_strings/basic_string/requirements/typedefs.cc: Likewise.
7804 2021-03-25 Jakub Jelinek <jakub@redhat.com>
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
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:
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>
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:
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>
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):
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>
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'
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
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>
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>
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):
7996 * src/filesystem/dir-common.h (is_permission_denied_error): New
7999 2021-03-11 Jonathan Wakely <jwakely@redhat.com>
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>
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>
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>
8069 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
8070 Make storage larger than required. Verify no write to the last
8072 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
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:
8080 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
8081 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
8084 2021-03-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8086 * include/experimental/bits/simd.h: Replace reserved _X, _B by
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>
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>
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>
8124 * include/std/chrono (year_month_day::_S_from_days): Cast long
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>
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
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):
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
8166 * testsuite/std/time/year_month_day/3.cc: New test.
8168 2021-02-24 Patrick Palka <ppalka@redhat.com>
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>
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):
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>
8208 * libsupc++/dyncast.cc (__dynamic_cast): Return null when
8209 first argument is null.
8211 2021-02-23 Jakub Jelinek <jakub@redhat.com>
8214 * testsuite/21_strings/char_traits/requirements/char/99181.cc: New
8217 2021-02-23 Jakub Jelinek <jakub@redhat.com>
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
8225 2021-02-23 Jakub Jelinek <jakub@redhat.com>
8228 * include/pstl/parallel_backend_serial.h: Remove __pstl::__par_backend.
8230 2021-02-23 Patrick Palka <ppalka@redhat.com>
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>
8258 * testsuite/util/testsuite_fs.h: Always include <unistd.h>.
8260 2021-02-12 Jonathan Wakely <jwakely@redhat.com>
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
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
8299 * testsuite/experimental/net/internet/address/v4/members.cc:
8300 Remove unused variables.
8301 * testsuite/experimental/net/internet/address/v6/members.cc:
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):
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:
8329 * testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc:
8331 * testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc:
8333 * testsuite/27_io/basic_stringstream/str/char/2.cc:
8335 * testsuite/27_io/basic_stringstream/str/wchar_t/2.cc:
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>
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
8351 2021-02-11 Jonathan Wakely <jwakely@redhat.com>
8353 * libsupc++/eh_ptr.cc (_GLIBCXX_EH_PTR_RELOPS_COMPAT): Define
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>
8362 * doc/xml/manual/status_cxx2011.xml: Document when support
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>
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
8378 * src/filesystem/ops.cc (fs::create_hard_link, fs::remove):
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:
8388 * testsuite/27_io/filesystem/path/generation/relative.cc:
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:
8437 2021-02-09 Jonathan Wakely <jwakely@redhat.com>
8440 * include/std/coroutine (coroutine_handle<P>::from_address): Add
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>
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
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:
8464 * testsuite/19_diagnostics/error_condition/operators/less.cc:
8466 * testsuite/19_diagnostics/error_condition/operators/three_way.cc:
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
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
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
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
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'
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
8593 (__intrin_bitcast): Allow casting to & from vector & intrinsic
8595 (__intrinsic_type): Explicitly specialize for NEON intrinsic
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:
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>
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
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
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
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
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
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
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
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
8741 * testsuite/experimental/simd/tests/casts.cc: New file. Test
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
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
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
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
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.
8786 * testsuite/experimental/simd/tests/remqo.cc: New file. Test
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
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
8808 * include/Makefile.am: Add new headers.
8809 * include/Makefile.in: Regenerate.
8810 * include/experimental/simd: New file. New header for
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
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
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
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>
8853 * include/bits/string_view.tcc
8854 (basic_string_view::find(const CharT*, size_type, size_type)):
8857 2021-01-27 Paul Fee <paul.f.fee@gmail.com>
8859 * include/bits/basic_string.h (basic_string::contains): New
8861 * include/std/string_view (basic_string_view::contains):
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:
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
8883 (const char* ctype<char>:: is): Same.
8885 2021-01-18 Jonathan Wakely <jwakely@redhat.com>
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>
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
8914 2021-01-14 Alexandre Oliva <oliva@adacore.com>
8916 * testsuite/30_threads/future/members/poll.cc: Calibrate
8919 2021-01-14 François Dumont <fdumont@gcc.gnu.org>
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
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):
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
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>
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>
8967 * testsuite/ext/vstring/cons/moveable.cc: Suppress false positive
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>
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.