12020-12-27 Gerald Pfeifer <gerald@pfeifer.com> 2 3 * doc/xml/manual/abi.xml: Update link to Arm ABI. 4 * doc/html/manual/abi.html: Regenerate. 5 62020-12-27 Gerald Pfeifer <gerald@pfeifer.com> 7 8 * doc/xml/manual/debug.xml: Move Valgrind references to https. 9 * doc/html/manual/debug.html: Regenerate. 10 112020-12-26 Gerald Pfeifer <gerald@pfeifer.com> 12 13 * doc/xml/manual/abi.xml: Update link to Intel's compatibility 14 with GNU compilers document. 15 * doc/html/manual/abi.html: Regenerate. 16 172020-12-25 Gerald Pfeifer <gerald@pfeifer.com> 18 19 * doc/xml/manual/messages.xml: Update link to Java docs. 20 * doc/html/manual/facets.html: Ditto. 21 222020-12-25 Gerald Pfeifer <gerald@pfeifer.com> 23 24 * doc/xml/manual/documentation_hacking.xml: Convert three links 25 to doxygen.nl to https. 26 * doc/html/manual/documentation_hacking.html: Regenerate. 27 282020-12-23 Olivier Hainque <hainque@adacore.com> 29 30 * testsuite/17_intro/names.cc: Account for VxWorks headers. 31 322020-12-21 Patrick Palka <ppalka@redhat.com> 33 34 * include/bits/c++config (_GLIBCXX_FLOAT_IS_IEEE_BINARY_32): 35 Define this macro. 36 (_GLIBCXX_DOUBLE_IS_IEEE_BINARY_64): Likewise. 37 * include/std/charconv (to_chars): Use these macros to 38 conditionally hide the overloads for floating-point types. 39 * src/c++17/floating_to_chars.cc: Use the macros to 40 conditionally disable this file. 41 (floating_type_traits<float>): Remove redundant static assert. 42 (floating_type_traits<double>): Likewise. 43 * testsuite/20_util/to_chars/double.cc: Run this test only on 44 ieee-floats effective targets. 45 * testsuite/20_util/to_chars/float.cc: Likewise. 46 * testsuite/20_util/to_chars/long_double.cc: Likewise. 47 * testsuite/lib/libstdc++.exp 48 (check_effective_target_ieee-floats): Define new proc for 49 detecting whether float and double have the IEEE binary32 and 50 binary64 formats. 51 522020-12-20 Jonathan Wakely <jwakely@redhat.com> 53 54 * include/std/semaphore: Fix indentation. 55 562020-12-18 Patrick Palka <ppalka@redhat.com> 57 58 PR libstdc++/98377 59 * src/c++17/floating_to_chars.cc (__floating_to_chars_precision): 60 Fix mistake. 61 622020-12-18 Patrick Palka <ppalka@redhat.com> 63 64 PR libstdc++/98370 65 * src/c++17/floating_to_chars.cc (__floating_to_chars_shortest): 66 Provide explicit template arguments to the call to std::max. 67 682020-12-18 Patrick Palka <ppalka@redhat.com> 69 70 PR libstdc++/98374 71 * src/c++17/floating_to_chars.cc: Guard include of <langinfo.h> 72 with __has_include. 73 (__floating_to_chars_precision) [!defined(RADIXCHAR)]: Don't 74 attempt to obtain the radix character of the current locale, 75 just assume it's '.'. 76 772020-12-18 Patrick Palka <ppalka@redhat.com> 78 79 * src/c++17/floating_from_chars.cc (from_chars_impl) 80 [!defined(FE_TONEAREST)]: Don't adjust the rounding mode. 81 * src/c++17/floating_to_chars.cc (__floating_to_chars_precision): 82 Likewise. 83 842020-12-18 Patrick Palka <ppalka@redhat.com> 85 86 * testsuite/20_util/to_chars/double.cc: New test, consisting of 87 testcases imported from the MSVC STL testsuite. 88 * testsuite/20_util/to_chars/float.cc: Likewise. 89 902020-12-18 Patrick Palka <ppalka@redhat.com> 91 92 * config/abi/pre/gnu.ver: Add new exports. 93 * include/std/charconv (to_chars): Declare the floating-point 94 overloads for float, double and long double. 95 * src/c++17/Makefile.am (sources): Add floating_to_chars.cc. 96 * src/c++17/Makefile.in: Regenerate. 97 * src/c++17/floating_to_chars.cc: New file. 98 (to_chars): Define for float, double and long double. 99 * testsuite/20_util/to_chars/long_double.cc: New test. 100 1012020-12-18 Patrick Palka <ppalka@redhat.com> 102 103 * src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c, 104 src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c, 105 src/c++17/ryu/d2s_intrinsics.h, src/c++17/ryu/f2s.c, 106 src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c: 107 Apply local modifications. 108 1092020-12-18 Patrick Palka <ppalka@redhat.com> 110 111 * src/c++17/ryu/MERGE: New file. 112 * src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c, 113 src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c, 114 src/c++17/ryu/d2s_full_table.h, src/c++17/ryu/d2s_intrinsics.h, 115 src/c++17/ryu/digit_table.h, src/c++17/ryu/f2s.c, 116 src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c, 117 src/c++17/ryu/generic_128.h, src/c++17/ryu/ryu_generic_128.h: 118 Import these files from the Ryu library. 119 1202020-12-17 Jonathan Wakely <jwakely@redhat.com> 121 122 * config/os/djgpp/error_constants.h: Test POSIX errno macros 123 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. 124 * config/os/mingw32-w64/error_constants.h: Likewise. 125 * config/os/mingw32/error_constants.h: Likewise. 126 1272020-12-17 Jonathan Wakely <jwakely@redhat.com> 128 129 * testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed): 130 Fix condition for _GTHREAD_USE_MUTEX_TIMEDLOCK test. 131 1322020-12-17 Jonathan Wakely <jwakely@redhat.com> 133 134 * src/c++11/mutex.cc (std::once_flag::_M_finish): Add 135 maybe_unused attribute to variable used in assertion. 136 1372020-12-17 Jonathan Wakely <jwakely@redhat.com> 138 139 PR libstdc++/98344 140 * include/bits/semaphore_base.h: Fix preprocessor condition. 141 1422020-12-17 Jonathan Wakely <jwakely@redhat.com> 143 144 * include/bits/std_thread.h (hash<thread::id>): Move here, 145 from ... 146 * include/std/thread (hash<thread::id>): ... here. 147 1482020-12-17 Jonathan Wakely <jwakely@redhat.com> 149 150 * config.h.in: Regenerate. 151 * configure: Regenerate. 152 1532020-12-16 Jonathan Wakely <jwakely@redhat.com> 154 155 * Makefile.in: Regenerate. 156 * config.h.in: Regenerate. 157 * config/abi/pre/gnu.ver: Make patterns less greedy. 158 * config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns 159 for IEEE128 long double symbols. 160 * configure: Regenerate. 161 * configure.ac: Enable alternative 128-bit long double format on 162 powerpc64*-*-linux*. 163 * doc/Makefile.in: Regenerate. 164 * fragment.am: Regenerate. 165 * include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT. 166 * include/Makefile.in: Regenerate. 167 * include/bits/c++config: Define inline namespace for new long 168 double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the 169 same type as long double. 170 * include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] 171 (locale::_Impl::_M_init_extra_ldbl128): Declare new member function. 172 * include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by 173 only counting narrow character facets. 174 (_GLIBCXX_NUM_CXX11_FACETS): Likewise. 175 (_GLIBCXX_NUM_LBDL_ALT128_FACETS): New. 176 [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define 177 vtable placeholder for __ibm128 long double type. 178 [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] 179 (num_get::__do_get): Declare vtable placeholder for __ibm128 long 180 double type. 181 [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] 182 (num_put::__do_put): Likewise. 183 * include/bits/locale_facets.tcc 184 [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] 185 (num_get::__do_get, num_put::__do_put): Define. 186 * include/bits/locale_facets_nonio.h 187 [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] 188 (money_get::__do_get): Declare vtable placeholder for __ibm128 long 189 double type. 190 [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] 191 (money_put::__do_put): Likewise. 192 * include/bits/locale_facets_nonio.tcc 193 [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] 194 (money_get::__do_get, money_put::__do_put): Define. 195 * include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] 196 (__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define. 197 * libsupc++/Makefile.in: Regenerate. 198 * po/Makefile.in: Regenerate. 199 * python/Makefile.in: Regenerate. 200 * src/Makefile.am: Add compatibility-ldbl-alt128.cc and 201 compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects. 202 * src/Makefile.in: Regenerate. 203 * src/c++11/Makefile.in: Regenerate. 204 * src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining 205 symbols using the old 128-bit long double format, for the cxx11 ABI. 206 * src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the 207 gcc4-compatible ABI. 208 * src/c++11/compatibility-ldbl-facets-aliases.h: New header for long 209 double compat aliases. 210 * src/c++11/cow-locale_init.cc: Add comment. 211 * src/c++11/cxx11-locale-inst.cc: Define C and C_is_char 212 unconditionally. 213 * src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include 214 locale-inst.cc directly, not via cxx11-locale-inst.cc. 215 * src/c++11/locale-inst-monetary.h: New header for monetary 216 category instantiations. 217 * src/c++11/locale-inst-numeric.h: New header for numeric category 218 instantiations. 219 * src/c++11/locale-inst.cc: Include new headers for monetary, 220 numeric, and long double definitions. 221 * src/c++11/wlocale-inst.cc: Remove long double compat aliases that 222 are defined in new header now. 223 * src/c++17/Makefile.am: Use -mabi=ibmlongdouble for 224 floating_from_chars.cc. 225 * src/c++17/Makefile.in: Regenerate. 226 * src/c++17/floating_from_chars.cc (from_chars_impl): Add 227 if-constexpr branch for __ieee128. 228 (from_chars): Overload for __ieee128. 229 * src/c++20/Makefile.in: Regenerate. 230 * src/c++98/Makefile.in: Regenerate. 231 * src/c++98/locale_init.cc (num_facets): Adjust calculation. 232 (locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128. 233 * src/c++98/localename.cc (num_facets): Adjust calculation. 234 (locale::_Impl::_Impl(const char*, size_t)): Call 235 _M_init_extra_ldbl128. 236 * src/filesystem/Makefile.in: Regenerate. 237 * testsuite/Makefile.in: Regenerate. 238 * testsuite/util/testsuite_abi.cc: Add new symbol versions. 239 Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and 240 CXXABI_IEEE128_1.3.13 too. 241 * testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to 242 regex matching expected symbols. 243 2442020-12-16 Jonathan Wakely <jwakely@redhat.com> 245 246 * include/std/utility: Use __has_builtin without checking if 247 it's defined. 248 2492020-12-16 Jonathan Wakely <jwakely@redhat.com> 250 251 * include/bits/c++config: Warn if __STRICT_ANSI__ state is 252 inconsistent with __GLIBCXX_TYPE_INT_N_0. 253 2542020-12-16 Jonathan Wakely <jwakely@redhat.com> 255 256 PR libstdc++/96083 257 * include/ext/throw_allocator.h: Use __has_builtin to check for 258 __builtin_sprintf support, and use std::sprintf if necessary. 259 2602020-12-16 Jonathan Wakely <jwakely@redhat.com> 261 262 PR libstdc++/98319 263 * include/experimental/random: Only define contents for C++14 264 and later. 265 * include/experimental/source_location: Likewise. 266 * include/experimental/utility: Likewise. 267 * testsuite/experimental/feat-lib-fund.cc: Include all LFTS 268 headers that are present. Allow test to run for all modes. 269 2702020-12-16 Jonathan Wakely <jwakely@redhat.com> 271 272 PR libstdc++/46447 273 * testsuite/performance/29_atomics/atomic_flag.cc: New test. 274 2752020-12-16 Jonathan Wakely <jwakely@redhat.com> 276 277 PR libstdc++/93151 278 * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove. 279 * configure.ac: Regenerate. 280 * config/os/generic/error_constants.h: Test POSIX errno macros 281 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. 282 * testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc: 283 Likewise. 284 * testsuite/19_diagnostics/headers/system_error/93151.cc: New 285 test. 286 2872020-12-15 Jonathan Wakely <jwakely@redhat.com> 288 289 Revert: 290 2020-12-15 Jonathan Wakely <jwakely@redhat.com> 291 292 PR libstdc++/98108 293 * include/std/iostream (__ioinit): Add init_priority attribute. 294 2952020-12-15 Keith Packard <keithp@keithp.com> 296 297 * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Allow "stdio_pure" 298 option and define _GLIBCXX_USE_PURE_STDIO when it is used. Also 299 add "stdio_posix" option as an alias for "stdio". 300 * config/io/basic_file_stdio.cc [_GLIBCXX_USE_PURE_STDIO]: Only 301 use defined stdio entry points for all I/O operations, without 302 direct calls to underlying POSIX functions. 303 * config.h.in: Regenerate. 304 * configure: Regenerate. 305 3062020-12-15 Ville Voutilainen <ville.voutilainen@gmail.com> 307 308 * testsuite/27_io/rvalue_streams.cc: Run the extraction to a char* 309 for C++17 and lower only. 310 3112020-12-15 Jonathan Wakely <jwakely@redhat.com> 312 313 * testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc: 314 Add dg-timeout-factor directive. 315 * testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc: 316 Increase timeout factor from 2.0 to 3.0. 317 * testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc: 318 Likewise. 319 * testsuite/lib/libstdc++.exp (check_effective_target_debug-mode): 320 Define "debug-mode" as an effective-target keyword. 321 3222020-12-15 Jonathan Wakely <jwakely@redhat.com> 323 324 * include/bits/c++config (__glibcxx_assert_1): Define as empty 325 for C++11. 326 3272020-12-15 Marius Hillenbrand <mhillen@linux.ibm.com> 328 329 * testsuite/22_locale/locale/cons/5.cc: Add missing directives 330 for required locales. 331 3322020-12-15 Jonathan Wakely <jwakely@redhat.com> 333 334 * include/bits/iterator_concepts.h (incrementable_traits<Tp>): 335 Remove workaround for PR c++/78173. 336 3372020-12-15 Vladimir Vishnevsky <vv.os.swe@gmail.com> 338 339 * configure.ac: Skip AC_LIBTOOL_DLOPEN check if avr-libc is used. 340 * configure: Regenerate. 341 3422020-12-15 Jonathan Wakely <jwakely@redhat.com> 343 344 PR libstdc++/98108 345 * include/std/iostream (__ioinit): Add init_priority attribute. 346 3472020-12-15 Gerald Pfeifer <gerald@pfeifer.com> 348 349 * doc/xml/manual/codecvt.xml: Update link to Unicode-HOWTO. 350 * doc/html/manual/facets.html: Regenerate. 351 3522020-12-14 Fran��ois Dumont <fdumont@gcc.gnu.org> 353 354 * testsuite/23_containers/array/debug/back1_neg.cc: Target c++14 because assertion 355 is disabled in C++11. 356 * testsuite/23_containers/array/debug/front1_neg.cc: Likewise. 357 * testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc: Likewise. 358 3592020-12-14 Martin Sebor <msebor@redhat.com> 360 361 * testsuite/ext/vstring/requirements/exception/basic.cc: Suppress 362 a false positive warning. 363 * testsuite/ext/vstring/requirements/exception/propagation_consistent.cc: 364 Same. 365 3662020-12-14 Fran��ois Dumont <fdumont@gcc.gnu.org> 367 368 * testsuite/23_containers/array/debug/back2_neg.cc: target c++14 because assertion 369 for constexpr is disabled in C++11. 370 * testsuite/23_containers/array/debug/front2_neg.cc: Likewise. 371 * testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc: Likewise. 372 * testsuite/23_containers/vector/debug/multithreaded_swap.cc: Include <memory> 373 for shared_ptr. 374 3752020-12-12 Fran��ois Dumont <fdumont@gcc.gnu.org> 376 377 * include/debug/macros.h (__glibcxx_check_can_increment_range): Replace 378 _GLIBCXX_DEBUG_VERIFY_COND_AT usage with _GLIBCXX_DEBUG_VERIFY_AT_F. 379 (__glibcxx_check_can_decrement_range): Likewise. 380 * testsuite/25_algorithms/copy_backward/constexpr.cc (test03): New. 381 * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: New test. 382 * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc: New test. 383 * testsuite/25_algorithms/equal/constexpr_neg.cc: New test. 384 * testsuite/25_algorithms/equal/debug/constexpr_neg.cc: New test. 385 3862020-12-10 Jonathan Wakely <jwakely@redhat.com> 387 388 PR libstdc++/98226 389 * include/std/bit (__countl_one, __countr_one): Remove redundant 390 branches. 391 3922020-12-09 Jonathan Wakely <jwakely@redhat.com> 393 394 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Define NO_SLEEP 395 if none of nanosleep, sleep and Sleep is available. 396 * config.h.in: Regenerate. 397 * configure: Regenerate. 398 * include/std/thread [_GLIBCXX_NO_SLEEP] (__sleep_for): Do 399 not declare. 400 [_GLIBCXX_NO_SLEEP] (sleep_for, sleep_until): Do not 401 define. 402 * src/c++11/thread.cc [_GLIBCXX_NO_SLEEP] (__sleep_for): Do 403 not define. 404 4052020-12-08 Jason Merrill <jason@redhat.com> 406 407 PR c++/96299 408 * testsuite/18_support/comparisons/algorithms/partial_order.cc: 409 One more line needs to use VERIFY instead of static_assert. 410 4112020-12-08 Jonathan Wakely <jwakely@redhat.com> 412 413 * doc/xml/manual/appendix_contributing.xml: Use consistent 414 indentation. 415 * doc/html/manual/source_code_style.html: Regenerate. 416 4172020-12-05 Iain Sandoe <iain@sandoe.co.uk> 418 419 PR target/97865 420 * configure: Regenerate. 421 4222020-12-04 Jakub Jelinek <jakub@redhat.com> 423 424 PR c++/80780 425 * testsuite/18_support/source_location/1.cc (main): Adjust for 426 __builtin_source_location using __PRETTY_FUNCTION__-like names instead 427 __FUNCTION__-like. 428 * testsuite/18_support/source_location/consteval.cc (main): Likewise. 429 4302020-12-03 Martin Sebor <msebor@redhat.com> 431 432 * testsuite/ext/vstring/modifiers/clear/56166.cc: Suppress a false 433 positive warning. 434 4352020-12-03 Jonathan Wakely <jwakely@redhat.com> 436 437 * testsuite/26_numerics/bit/bit.cast/bit_cast.cc: Remove stray 438 word from copy&paste. 439 * testsuite/26_numerics/bit/bit.cast/version.cc: Likewise. 440 4412020-12-03 Jonathan Wakely <jwakely@redhat.com> 442 443 * doc/xml/manual/status_cxx2020.xml: Update C++20 status. 444 * doc/html/*: Regenerate. 445 4462020-12-03 JeanHeyd Meneide <phdofthehouse@gmail.com> 447 448 * doc/doxygen/user.cfg.in (INPUT): Add <source_location>. 449 * include/Makefile.am: Add <source_location>. 450 * include/Makefile.in: Regenerate. 451 * include/std/version (__cpp_lib_source_location): Define. 452 * include/std/source_location: New file. 453 * testsuite/18_support/source_location/1.cc: New test. 454 * testsuite/18_support/source_location/consteval.cc: New test. 455 * testsuite/18_support/source_location/srcloc.h: New test. 456 * testsuite/18_support/source_location/version.cc: New test. 457 4582020-12-03 Jonathan Wakely <jwakely@redhat.com> 459 460 PR libstdc++/93121 461 * include/std/bit (__cpp_lib_bit_cast, bit_cast): Define. 462 * include/std/version (__cpp_lib_bit_cast): Define. 463 * testsuite/26_numerics/bit/bit.cast/bit_cast.cc: New test. 464 * testsuite/26_numerics/bit/bit.cast/version.cc: New test. 465 4662020-12-03 Jonathan Wakely <jwakely@redhat.com> 467 468 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: 469 Update. 470 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: 471 Update. 472 4732020-12-03 Jonathan Wakely <jwakely@redhat.com> 474 475 * include/std/array (array::operator[](size_t) const, array::front() const) 476 (array::back() const) [__cplusplus == 201103]: Disable 477 assertions. 478 * testsuite/23_containers/array/element_access/constexpr_element_access.cc: 479 Check for correct values. 480 * testsuite/23_containers/array/tuple_interface/get_neg.cc: 481 Adjust dg-error line numbers. 482 * testsuite/23_containers/array/debug/constexpr_c++11.cc: New test. 483 4842020-12-02 Jonathan Wakely <jwakely@redhat.com> 485 486 PR libstdc++/65480 487 PR libstdc++/68735 488 * python/libstdcxx/v6/printers.py (function_pointer_to_name): 489 New helper function to get the name of a function from its 490 address. 491 (StdExpAnyPrinter.__init__): Use it. 492 4932020-12-02 Jonathan Wakely <jwakely@redhat.com> 494 495 * testsuite/lib/dg-options.exp (add_options_for_libatomic): 496 Replace powerpc-ibm-aix* and powerpc*-*-darwin* with check for 497 powerpc && ilp32. 498 4992020-12-02 Jonathan Wakely <jwakely@redhat.com> 500 501 * testsuite/27_io/basic_istream/ignore/char/94749.cc: Add 502 dg-timeout-factor for ilp32 targets. 503 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: 504 Likewise. 505 5062020-12-02 Jonathan Wakely <jwakely@redhat.com> 507 508 * include/ext/rope (rope::_S_concat_char_iter) 509 (rope::_S_destr_concat_char_iter): Add allocator parameter. 510 (rope::push_back, rope::append, rope::insert, operator+): 511 Pass allocator. 512 * include/ext/ropeimpl.h (rope::_S_concat_char_iter) 513 (rope::_S_destr_concat_char_iter): Add allocator parameter 514 and use it. 515 (_Rope_char_ref_proxy::operator=(_CharT)): Pass allocator. 516 5172020-12-02 Jonathan Wakely <jwakely@redhat.com> 518 519 * include/ext/rope: Fix indentation of access specifiers. 520 5212020-12-02 Jonathan Wakely <jwakely@redhat.com> 522 523 * include/bits/atomic_timed_wait.h: Use #if instead of #ifdef. 524 * include/bits/semaphore_base.h: Likewise. 525 * include/std/version: Remove trailing whitespace. 526 5272020-12-02 Jonathan Wakely <jwakely@redhat.com> 528 529 * python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the 530 name of the type and pass it to the iterator. 531 (StdPathPrinter): Likewise. 532 * testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test. 533 5342020-12-01 Thomas Rodgers <trodgers@redhat.com> 535 536 * include/bits/atomic_base.h: Replace usage of 537 _GLIBCXX_HAVE_ATOMIC_WAIT with __cpp_lib_atomic_wait. 538 * include/bits/atomic_timed_wait.h: Likewise. 539 * include/bits/atomic_wait.h: Define __cpp_lib_atomic_wait 540 feature test macro. 541 * include/bits/semaphore_base.h: Replace usage of 542 _GLIBCXX_HAVE_ATOMIC_WAIT with __cpp_lib_atomic_wait. 543 * include/std/atomic: Likewise. 544 * include/std/latch: Likewise. 545 * include/std/semaphore: Likewise. 546 * include/std/version: Define __cpp_lib_atomic wait 547 feature test macro and replace usage of 548 _GLIBCXX_HAVE_ATOMIC_WAIT. 549 * testsuite/29_atomics/atomic/wait_notify/1.cc: New test. 550 * testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise. 551 5522020-12-01 Michael Weghorn <m.weghorn@posteo.de> 553 554 * python/libstdcxx/v6/printers.py (StdBitIteratorPrinter) 555 (StdBitReferencePrinter): Add pretty-printers for 556 _Bit_reference, _Bit_iterator and _Bit_const_iterator. 557 * testsuite/libstdc++-prettyprinters/simple.cc: Test 558 std::_Bit_reference, std::_Bit_iterator and 559 std::_Bit_const_iterator. 560 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise. 561 5622020-12-01 Jonathan Wakely <jwakely@redhat.com> 563 564 * include/bits/c++config (_GLIBCXX_HAS_BUILTIN): Define macro to 565 work around different implementations of __has_builtin. 566 (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP) 567 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE) 568 (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED) 569 (_GLIBCXX_HAVE_BUILTIN_IS_SAME, _GLIBCXX_HAVE_BUILTIN_LAUNDER): 570 Define using _GLIBCXX_HAS_BUILTIN. 571 5722020-12-01 Jonathan Wakely <jwakely@redhat.com> 573 574 * testsuite/27_io/basic_istream/get/char/lwg3464.cc: Add 575 dg-timeout-factor directive. 576 * testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: 577 Likewise. 578 5792020-12-01 Jonathan Wakely <jwakely@redhat.com> 580 581 PR libstdc++/98003 582 * testsuite/27_io/basic_syncbuf/sync_ops/1.cc: Add options for 583 libatomic. 584 5852020-11-30 Jonathan Wakely <jwakely@redhat.com> 586 587 * doc/doxygen/user.cfg.in (INPUT): Add <latch> and <semaphore>. 588 5892020-11-30 Jonathan Wakely <jwakely@redhat.com> 590 591 * testsuite/lib/libstdc++.exp (libstdc++_init): Reduce 592 default tool_timeout to 360. 593 5942020-11-30 Jonathan Wakely <jwakely@redhat.com> 595 596 * testsuite/20_util/specialized_algorithms/pstl/*: Add 597 dg-timeout-factor. 598 * testsuite/25_algorithms/pstl/*: Likewise. 599 * testsuite/26_numerics/pstl/*: Likewise. 600 * testsuite/28_regex/*: Likewise. 601 6022020-11-29 John David Anglin <danglin@gcc.gnu.org> 603 604 * configure: Regenerate. 605 6062020-11-27 Jonathan Wakely <jwakely@redhat.com> 607 608 * testsuite/lib/libstdc++.exp (v3_try_preprocess): Define 609 new proc to preprocess a chunk of code. 610 (v3_check_preprocessor_condition): Define new proc to test 611 a preprocessor condition depending on GCC or libstdc++ macros. 612 (check_v3_target_debug_mode, check_v3_target_normal_mode): 613 Use v3_try_preprocess. 614 (check_v3_target_normal_namespace) 615 (check_v3_target_parallel_mode, check_v3_target_cstdint) 616 (check_v3_target_cmath, check_v3_target_atomic_builtins) 617 (check_v3_target_gthreads, check_v3_target_gthreads_timed) 618 (check_v3_target_sleep, check_v3_target_sched_yield) 619 (check_v3_target_string_conversions, check_v3_target_swprintf) 620 (check_v3_target_binary_io, check_v3_target_nprocs): Use 621 v3_check_preprocessor_condition. 622 (check_effective_target_cxx11): Likewise. 623 (check_effective_target_random_device): Likewise. 624 (check_effective_target_tbb-backend): Likewise. 625 (check_effective_target_futex): Likewise. 626 (check_v3_target_little_endian) Call check_effective_target_le. 627 (check_effective_target_atomic-builtins): New proc to define 628 new effective-target keyword. 629 (check_effective_target_gthreads-timed): Likewise. 630 6312020-11-27 Jonathan Wakely <jwakely@redhat.com> 632 633 * testsuite/27_io/filesystem/operations/absolute.cc: Avoid 634 -Wrange-loop-construct warning. 635 * testsuite/27_io/filesystem/path/append/source.cc: Likewise. 636 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise. 637 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise. 638 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise. 639 * testsuite/27_io/filesystem/path/decompose/extension.cc: 640 Likewise. 641 * testsuite/27_io/filesystem/path/decompose/filename.cc: 642 Likewise. 643 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: 644 Likewise. 645 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: 646 Likewise. 647 * testsuite/27_io/filesystem/path/decompose/root_directory.cc: 648 Likewise. 649 * testsuite/27_io/filesystem/path/decompose/root_path.cc: 650 Likewise. 651 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise. 652 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: 653 Likewise. 654 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: 655 Likewise. 656 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: 657 Likewise. 658 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise. 659 * testsuite/27_io/filesystem/path/nonmember/cmp.cc: Likewise. 660 * testsuite/27_io/filesystem/path/nonmember/cmp_c++20.cc: 661 Likewise. 662 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: 663 Likewise. 664 * testsuite/27_io/filesystem/path/query/has_extension.cc: 665 Likewise. 666 * testsuite/27_io/filesystem/path/query/has_filename.cc: 667 Likewise. 668 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: 669 Likewise. 670 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: 671 Likewise. 672 * testsuite/27_io/filesystem/path/query/has_root_directory.cc: 673 Likewise. 674 * testsuite/27_io/filesystem/path/query/has_root_name.cc: 675 Likewise. 676 * testsuite/27_io/filesystem/path/query/has_root_path.cc: 677 Likewise. 678 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise. 679 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise. 680 * testsuite/experimental/filesystem/operations/absolute.cc: 681 Likewise. 682 * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise. 683 * testsuite/experimental/filesystem/path/compare/path.cc: 684 Likewise. 685 * testsuite/experimental/filesystem/path/construct/copy.cc: 686 Likewise. 687 * testsuite/experimental/filesystem/path/decompose/extension.cc: 688 Likewise. 689 * testsuite/experimental/filesystem/path/decompose/filename.cc: 690 Likewise. 691 * testsuite/experimental/filesystem/path/decompose/parent_path.cc: 692 Likewise. 693 * testsuite/experimental/filesystem/path/decompose/relative_path.cc: 694 Likewise. 695 * testsuite/experimental/filesystem/path/decompose/root_directory.cc: 696 Likewise. 697 * testsuite/experimental/filesystem/path/decompose/root_path.cc: 698 Likewise. 699 * testsuite/experimental/filesystem/path/itr/traversal.cc: 700 Likewise. 701 * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc: 702 Likewise. 703 * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc: 704 Likewise. 705 * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc: 706 Likewise. 707 * testsuite/experimental/filesystem/path/nonmember/hash_value.cc: 708 Likewise. 709 * testsuite/experimental/filesystem/path/query/has_extension.cc: 710 Likewise. 711 * testsuite/experimental/filesystem/path/query/has_filename.cc: 712 Likewise. 713 * testsuite/experimental/filesystem/path/query/has_parent_path.cc: 714 Likewise. 715 * testsuite/experimental/filesystem/path/query/has_relative_path.cc: 716 Likewise. 717 * testsuite/experimental/filesystem/path/query/has_root_directory.cc: 718 Likewise. 719 * testsuite/experimental/filesystem/path/query/has_root_name.cc: 720 Likewise. 721 * testsuite/experimental/filesystem/path/query/has_root_path.cc: 722 Likewise. 723 * testsuite/experimental/filesystem/path/query/has_stem.cc: 724 Likewise. 725 * testsuite/experimental/filesystem/path/query/is_relative.cc: 726 Likewise. 727 7282020-11-27 Jonathan Wakely <jwakely@redhat.com> 729 730 * src/c++98/locale.cc (locale::facet::_S_get_c_locale()): 731 Revert change to use __is_single_threaded. 732 * src/c++98/locale_init.cc (locale::_S_initialize()): 733 Likewise. 734 7352020-11-26 Jonathan Wakely <jwakely@redhat.com> 736 737 * include/bits/atomic_wait.h (_GLIBCXX_HAVE_ATOMIC_WAIT): 738 Define. 739 * include/bits/atomic_base.h: Check _GLIBCXX_HAVE_ATOMIC_WAIT. 740 * include/bits/atomic_timed_wait.h: Likewise. 741 * include/bits/semaphore_base.h: Likewise. 742 * include/std/atomic: Likewise. 743 * include/std/latch: Likewise. 744 * include/std/semaphore: Likewise. 745 7462020-11-26 Jonathan Wakely <jwakely@redhat.com> 747 748 * include/std/latch: Depend on _GLIBCXX_HAS_GTHREADS and 749 _GLIBCXX_HAVE_LINUX_FUTEX. 750 * include/std/version (__cpp_lib_latch): Define conditionally. 751 7522020-11-26 Jonathan Wakely <jwakely@redhat.com> 753 754 * testsuite/lib/libstdc++.exp (check_effective_target_gthreads): 755 Call check_v3_target_gthreads not check_v3_target_gthreads_timed. 756 7572020-11-26 Jonathan Wakely <jwakely@redhat.com> 758 759 * testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc: 760 Add dg-timeout-factor directive. 761 * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: 762 Likewise. 763 * testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc: 764 Likewise. 765 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc: 766 Likewise. 767 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc: 768 Likewise. 769 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc: 770 Likewise. 771 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc: 772 Likewise. 773 * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc: 774 Likewise. 775 * testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise. 776 * testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc: 777 Likewise. 778 * testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc: 779 Likewise. 780 * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise. 781 7822020-11-26 Jonathan Wakely <jwakely@redhat.com> 783 784 * testsuite/lib/libstdc++.exp (libstdc++_init): Only set 785 tool_timeout if it hasn't been set by the user already. 786 7872020-11-26 Jonathan Wakely <jwakely@redhat.com> 788 789 PR libstdc++/97936 790 * testsuite/29_atomics/atomic/wait_notify/bool.cc: Fix missed 791 notifications by making the new thread wait until the parent 792 thread is waiting on the condition variable. 793 * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise. 794 * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise. 795 * testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise. 796 7972020-11-26 Jonathan Wakely <jwakely@redhat.com> 798 799 * testsuite/18_support/96817.cc: Use new effective-target 800 keywords to select supported targets more effectively. 801 * testsuite/30_threads/call_once/66146.cc: Likewise. 802 * testsuite/lib/libstdc++.exp (check_effective_target_futex): 803 Define new proc. 804 (check_effective_target_gthreads): Define new proc to replace 805 dg-require-gthreads. 806 8072020-11-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 808 809 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Remove libposix4 810 references. 811 <solaris*>: Don't use -lrt any longer. 812 * configure: Regenerate. 813 * doc/xml/manual/configure.xml (--enable-libstdcxx-time=OPTION): 814 Remove libposix4 reference. 815 8162020-11-26 Jonathan Wakely <jwakely@redhat.com> 817 818 PR libstdc++/98001 819 * testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid 820 FILE* to constructor. 821 8222020-11-26 Jonathan Wakely <jwakely@redhat.com> 823 824 * include/precompiled/stdc++.h: Add new headers. 825 * include/std/stop_token: Include <semaphore> unconditionally. 826 8272020-11-25 Jonathan Wakely <jwakely@redhat.com> 828 829 * include/bits/atomic_timed_wait.h (__cond_wait_until): Do not 830 perform redundant conversions to the same clock. 831 8322020-11-25 Jonathan Wakely <jwakely@redhat.com> 833 834 * include/bits/atomic_timed_wait.h (__cond_wait_until_impl): 835 Do not define when _GLIBCXX_HAVE_LINUX_FUTEX is defined. Use 836 __condvar and mutex instead of __gthread_cond_t and 837 unique_lock<mutex>. 838 (__cond_wait_until): Likewise. Fix test for return value of 839 __cond_wait_until_impl. 840 (__timed_waiters::_M_do_wait_until): Use __condvar instead 841 of __gthread_cond_t. 842 * include/bits/atomic_wait.h: Remove <bits/unique_lock.h> 843 include. Only include <bits/std_mutex.h> if not using futexes. 844 (__platform_wait_max_value): Remove unused variable. 845 (__waiters::lock_t): Use lock_guard instead of unique_lock. 846 (__waiters::_M_cv): Use __condvar instead of __gthread_cond_t. 847 (__waiters::_M_do_wait(__platform_wait_t)): Likewise. 848 (__waiters::_M_notify()): Likewise. Use notify_one() if not 849 asked to notify all. 850 * include/bits/std_mutex.h (__condvar): New type. 851 * include/std/condition_variable (condition_variable::_M_cond) 852 (condition_variable::wait_until): Use __condvar instead of 853 __gthread_cond_t. 854 * src/c++11/condition_variable.cc (condition_variable): Define 855 default constructor and destructor as defaulted. 856 (condition_variable::wait, condition_variable::notify_one) 857 (condition_variable::notify_all): Forward to corresponding 858 member function of __condvar. 859 8602020-11-25 Jonathan Wakely <jwakely@redhat.com> 861 862 PR libstdc++/97936 863 * testsuite/29_atomics/atomic/wait_notify/bool.cc: Re-eneable 864 test. 865 * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise. 866 * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise. 867 * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise. 868 * testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise. 869 * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise. 870 * testsuite/util/atomic/wait_notify_util.h: Fix missed 871 notifications by making the new thread wait until the parent 872 thread is waiting on the condition variable. 873 8742020-11-25 Jonathan Wakely <jwakely@redhat.com> 875 876 PR libstdc++/97935 877 * include/bits/iterator_concepts.h (__detail::__iter_without_category): 878 New helper concept. 879 (__iterator_traits::__cat): Use __detail::__iter_without_category. 880 * testsuite/24_iterators/associated_types/iterator.traits.cc: New test. 881 8822020-11-25 Jonathan Wakely <jwakely@redhat.com> 883 884 * testsuite/17_intro/names.cc: Do not test 'v' on AIX. 885 8862020-11-25 Jonathan Wakely <jwakely@redhat.com> 887 888 PR libstdc++/97936 889 * include/bits/atomic_wait.h (__platform_wait): Check errno, 890 not just the value of EAGAIN. 891 (__waiters::__waiters()): Fix name of data member. 892 8932020-11-25 Jonathan Wakely <jwakely@redhat.com> 894 895 PR libstdc++/97936 896 * include/bits/atomic_wait.h (__platform_wait): Return if futex 897 sets EAGAIN. 898 * testsuite/30_threads/latch/3.cc: Re-enable test. 899 * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise. 900 9012020-11-24 Jonathan Wakely <jwakely@redhat.com> 902 903 PR libstdc++/97936 904 PR libstdc++/97944 905 * testsuite/29_atomics/atomic_integral/wait_notify.cc: Disable. 906 Do not require pthreads, but add -pthread when appropriate. 907 * testsuite/30_threads/jthread/95989.cc: Likewise. 908 * testsuite/30_threads/latch/3.cc: Likewise. 909 * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise. 910 9112020-11-24 Jonathan Wakely <jwakely@redhat.com> 912 913 * testsuite/30_threads/jthread/95989.cc: Run all three test 914 functions, not just the first one twice. 915 9162020-11-24 Jonathan Wakely <jwakely@redhat.com> 917 918 PR libstdc++/67791 919 * src/c++11/thread.cc (thread::_M_start_thread(_State_ptr, void (*)())): 920 Check that gthreads is available before calling __gthread_create. 921 9222020-11-24 Jonathan Wakely <jwakely@redhat.com> 923 924 * src/c++98/locale.cc (locale::facet::_S_get_c_locale()) 925 (locale::id::_M_id() const): Use __is_single_threaded. 926 * src/c++98/locale_init.cc (locale::_S_initialize()): 927 Likewise. 928 9292020-11-23 Jonathan Wakely <jwakely@redhat.com> 930 931 * include/bits/semaphore_base.h 932 (__platform_semaphore::_M_try_acquire_until): Fix type of 933 variable. 934 9352020-11-23 Stephan Bergmann <sbergman@redhat.com> 936 937 * include/bits/atomic_wait.h (__thread_relax, __thread_yield): 938 Add 'inline'. 939 9402020-11-23 Jonathan Wakely <jwakely@redhat.com> 941 942 * acinclude.m4 (GLIBCXX_CHECK_GTHREADS): Check for 943 * config.h.in: Regenerate. 944 * configure: Regenerate. 945 * include/bits/semaphore_base.h (_GLIBCXX_HAVE_POSIX_SEMAPHORE): 946 Check autoconf macro instead of defining it here. 947 9482020-11-23 Jonathan Wakely <jwakely@redhat.com> 949 950 * include/bits/atomic_wait.h: Do not define anything unless 951 gthreads or futexes are available. 952 * include/bits/atomic_timed_wait.h: Likewise. 953 * include/bits/semaphore_base.h: Likewise. 954 * include/std/semaphore: Likewise. 955 * include/bits/atomic_base.h (atomic_flag::wait) 956 (atomic_flag::notify_one, atomic_flag::notify_all) 957 (__atomic_base<I>::wait, __atomic_base<I>::notify_one) 958 (__atomic_base<I>::notify_all, __atomic_base<P*>::wait) 959 (__atomic_base<P*>::notify_one, __atomic_base<P*>::notify_all) 960 (__atomic_impl::wait, __atomic_impl::notify_one) 961 (__atomic_impl::notify_all, __atomic_float::wait) 962 (__atomic_float::notify_one, __atomic_float::notify_all) 963 (__atomic_ref::wait, __atomic_ref::notify_one) 964 (__atomic_ref::notify_all): Only define if gthreads or futexes 965 are available. 966 * include/std/atomic (atomic::wait, atomic::notify_one) 967 (atomic::notify_all): Likewise. 968 * include/std/version (__cpp_lib_semaphore): Define 969 conditionally. 970 9712020-11-23 Jonathan Wakely <jwakely@redhat.com> 972 973 PR libstdc++/97948 974 * testsuite/29_atomics/atomic_float/wait_notify.cc: Add options 975 for libatomic. 976 * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise. 977 * testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise. 978 9792020-11-21 Jonathan Wakely <jwakely@redhat.com> 980 981 * include/bits/atomic_base.h (atomic_flag::wait): Use correct 982 type for __atomic_wait call. 983 * include/bits/atomic_timed_wait.h (__atomic_wait_until): Check 984 _GLIBCXX_HAVE_LINUX_FUTEX. 985 * include/bits/atomic_wait.h (__atomic_notify): Likewise. 986 * include/bits/semaphore_base.h (_GLIBCXX_HAVE_POSIX_SEMAPHORE): 987 Only define if SEM_VALUE_MAX or _POSIX_SEM_VALUE_MAX is defined. 988 * testsuite/29_atomics/atomic/wait_notify/bool.cc: Disable on 989 non-linux targes. 990 * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise. 991 * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise. 992 * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise. 993 * testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise. 994 9952020-11-20 Thomas Rodgers <trodgers@redhat.com> 996 997 * include/Makefile.am (bits_headers): Add new header. 998 * include/Makefile.in: Regenerate. 999 * include/bits/atomic_base.h (__atomic_flag::wait): Define. 1000 (__atomic_flag::notify_one): Likewise. 1001 (__atomic_flag::notify_all): Likewise. 1002 (__atomic_base<_Itp>::wait): Likewise. 1003 (__atomic_base<_Itp>::notify_one): Likewise. 1004 (__atomic_base<_Itp>::notify_all): Likewise. 1005 (__atomic_base<_Ptp*>::wait): Likewise. 1006 (__atomic_base<_Ptp*>::notify_one): Likewise. 1007 (__atomic_base<_Ptp*>::notify_all): Likewise. 1008 (__atomic_impl::wait): Likewise. 1009 (__atomic_impl::notify_one): Likewise. 1010 (__atomic_impl::notify_all): Likewise. 1011 (__atomic_float<_Fp>::wait): Likewise. 1012 (__atomic_float<_Fp>::notify_one): Likewise. 1013 (__atomic_float<_Fp>::notify_all): Likewise. 1014 (__atomic_ref<_Tp>::wait): Likewise. 1015 (__atomic_ref<_Tp>::notify_one): Likewise. 1016 (__atomic_ref<_Tp>::notify_all): Likewise. 1017 (atomic_wait<_Tp>): Likewise. 1018 (atomic_wait_explicit<_Tp>): Likewise. 1019 (atomic_notify_one<_Tp>): Likewise. 1020 (atomic_notify_all<_Tp>): Likewise. 1021 * include/bits/atomic_wait.h: New file. 1022 * include/bits/atomic_timed_wait.h: New file. 1023 * include/bits/semaphore_base.h: New file. 1024 * include/std/atomic (atomic<bool>::wait): Define. 1025 (atomic<bool>::wait_one): Likewise. 1026 (atomic<bool>::wait_all): Likewise. 1027 (atomic<_Tp>::wait): Likewise. 1028 (atomic<_Tp>::wait_one): Likewise. 1029 (atomic<_Tp>::wait_all): Likewise. 1030 (atomic<_Tp*>::wait): Likewise. 1031 (atomic<_Tp*>::wait_one): Likewise. 1032 (atomic<_Tp*>::wait_all): Likewise. 1033 * include/std/latch: New file. 1034 * include/std/semaphore: New file. 1035 * include/std/version: Add __cpp_lib_semaphore and 1036 __cpp_lib_latch defines. 1037 * testsuite/29_atomics/atomic/wait_notify/bool.cc: New test. 1038 * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise. 1039 * testsuite/29_atomics/atomic/wait_notify/generic.cc: Liekwise. 1040 * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise. 1041 * testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise. 1042 * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise. 1043 * testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise. 1044 * testsuite/30_threads/semaphore/1.cc: New test. 1045 * testsuite/30_threads/semaphore/2.cc: Likewise. 1046 * testsuite/30_threads/semaphore/least_max_value_neg.cc: Likewise. 1047 * testsuite/30_threads/semaphore/try_acquire.cc: Likewise. 1048 * testsuite/30_threads/semaphore/try_acquire_for.cc: Likewise. 1049 * testsuite/30_threads/semaphore/try_acquire_posix.cc: Likewise. 1050 * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise. 1051 * testsuite/30_threads/latch/1.cc: New test. 1052 * testsuite/30_threads/latch/2.cc: New test. 1053 * testsuite/30_threads/latch/3.cc: New test. 1054 * testsuite/util/atomic/wait_notify_util.h: New File. 1055 10562020-11-20 Fran��ois Dumont <fdumont@gcc.gnu.org> 1057 1058 PR libstdc++/83938 1059 * include/bits/stl_tempbuf.h (get_temporary_buffer): Change __len 1060 computation in the loop to avoid truncation. 1061 * include/bits/stl_algo.h: 1062 (__inplace_merge): Take temporary buffer length from smallest range. 1063 (__stable_sort): Limit temporary buffer length. 1064 * testsuite/25_algorithms/inplace_merge/1.cc (test4): New. 1065 * testsuite/performance/25_algorithms/stable_sort.cc: Test stable_sort 1066 under different heap memory conditions. 1067 * testsuite/performance/25_algorithms/inplace_merge.cc: New test. 1068 10692020-11-20 Fran��ois Dumont <fdumont@gcc.gnu.org> 1070 1071 * include/bits/move.h (_GLIBCXX_FWDREF): New. 1072 * include/bits/stl_tree.h: Adapt to use latter. 1073 (_Rb_tree<>::_M_clone_node): Add _MoveValue template parameter. 1074 (_Rb_tree<>::_M_mbegin): New. 1075 (_Rb_tree<>::_M_begin): Use latter. 1076 (_Rb_tree<>::_M_copy): Add _MoveValues template parameter. 1077 * testsuite/23_containers/map/allocator/move_cons.cc: New test. 1078 * testsuite/23_containers/multimap/allocator/move_cons.cc: New test. 1079 * testsuite/23_containers/multiset/allocator/move_cons.cc: New test. 1080 * testsuite/23_containers/set/allocator/move_cons.cc: New test. 1081 10822020-11-20 Jonathan Wakely <jwakely@redhat.com> 1083 1084 PR libstdc++/92546 1085 * include/std/regex (pmr::smatch, pmr::wsmatch): Declare using 1086 underlying __normal_iterator type, not nested typedef 1087 basic_string::const_iterator. 1088 10892020-11-19 Jonathan Wakely <jwakely@redhat.com> 1090 1091 PR libstdc++/95989 1092 * config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID): 1093 Define new macro to get reliable thread ID. 1094 * include/bits/std_thread.h: (this_thread::get_id): Use new 1095 macro if it's defined. 1096 * testsuite/30_threads/jthread/95989.cc: New test. 1097 * testsuite/30_threads/this_thread/95989.cc: New test. 1098 10992020-11-19 Jonathan Wakely <jwakely@redhat.com> 1100 1101 * testsuite/30_threads/async/async.cc: Include <thread>. 1102 * testsuite/30_threads/future/members/93456.cc: Likewise. 1103 11042020-11-19 Jonathan Wakely <jwakely@redhat.com> 1105 1106 PR libstdc++/92546 1107 * include/Makefile.am: Add new <bits/std_thread.h> header. 1108 * include/Makefile.in: Regenerate. 1109 * include/std/future: Include new header instead of <thread>. 1110 * include/std/stop_token: Include new header instead of 1111 <bits/gthr.h>. 1112 (stop_token::_S_yield()): Use this_thread::yield(). 1113 (_Stop_state_t::_M_requester): Change type to std::thread::id. 1114 (_Stop_state_t::_M_request_stop()): Use this_thread::get_id(). 1115 (_Stop_state_t::_M_remove_callback(_Stop_cb*)): Likewise. 1116 Use __is_single_threaded() to decide whether to synchronize. 1117 * include/std/thread (thread, operator==, this_thread::get_id) 1118 (this_thread::yield): Move to new header. 1119 (operator<=>, operator!=, operator<, operator<=, operator>) 1120 (operator>=, hash<thread::id>, operator<<): Define even when 1121 gthreads not available. 1122 * src/c++11/thread.cc: Include <memory>. 1123 * include/bits/std_thread.h: New file. 1124 (thread, operator==, this_thread::get_id, this_thread::yield): 1125 Define even when gthreads not available. 1126 [!_GLIBCXX_HAS_GTHREADS] (thread::join, thread::detach) 1127 (thread::hardware_concurrency): Define inline. 1128 11292020-11-19 Jonathan Wakely <jwakely@redhat.com> 1130 1131 PR libstdc++/93421 1132 PR libstdc++/93456 1133 * src/c++11/futex.cc (syscall_time_t): New typedef for 1134 the type of the syscall_timespec::tv_sec member. 1135 (relative_timespec, _M_futex_wait_until) 1136 (_M_futex_wait_until_steady): Use syscall_time_t in overflow 1137 checks, not time_t. 1138 11392020-11-18 Patrick Palka <ppalka@redhat.com> 1140 1141 * include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify 1142 local variable inner. 1143 (join_view::_Iterator::operator->): Use _Inner_iter instead of 1144 _Outer_iter in the function signature as per LWG 3500. 1145 * testsuite/std/ranges/adaptors/join.cc (test08): Test it. 1146 11472020-11-17 Jonathan Wakely <jwakely@redhat.com> 1148 1149 PR libstdc++/93421 1150 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Fail if struct 1151 timespec isn't compatible with SYS_clock_gettime. 1152 * configure: Regenerate. 1153 * src/c++11/chrono.cc: Revert changes for time64 compatibility. 1154 Add static_assert instead. 1155 * src/c++11/futex.cc (_M_futex_wait_until_steady): Assume 1156 SYS_clock_gettime can use struct timespec. 1157 11582020-11-17 Jonathan Wakely <jwakely@redhat.com> 1159 1160 PR libstdc++/97869 1161 * include/precompiled/stdc++.h: Include <coroutine>. 1162 * include/std/version (__cpp_lib_span): Check __cpp_lib_concepts 1163 before defining. 1164 11652020-11-17 Patrick Palka <ppalka@redhat.com> 1166 1167 PR libstdc++/97828 1168 * include/bits/ranges_algo.h (__search_n_fn::operator()): Check 1169 random_access_iterator before using the backtracking 1170 implementation. When the backwards scan fails prematurely, 1171 reset __remainder appropriately. 1172 * testsuite/25_algorithms/search_n/97828.cc: New test. 1173 11742020-11-16 Jonathan Wakely <jwakely@redhat.com> 1175 1176 * src/Makefile.am (libstdc++-symbols.ver-sun): Remove -lrt from 1177 arguments passed to make_sunver.pl script. 1178 * src/Makefile.in: Regenerate. 1179 11802020-11-15 Jason Merrill <jason@redhat.com> 1181 1182 * testsuite/20_util/result_of/sfinae_friendly_1.cc: Adjust. 1183 11842020-11-13 Jonathan Wakely <jwakely@redhat.com> 1185 1186 PR libstdc++/93421 1187 * src/c++11/chrono.cc [_GLIBCXX_USE_CLOCK_GETTIME_SYSCALL] 1188 (syscall_timespec): Define a type suitable for SYS_clock_gettime 1189 calls. 1190 (system_clock::now(), steady_clock::now()): Use syscall_timespec 1191 instead of timespec. 1192 * src/c++11/futex.cc (syscall_timespec): Define a type suitable 1193 for SYS_futex and SYS_clock_gettime calls. 1194 (relative_timespec): Use syscall_timespec instead of timespec. 1195 (__atomic_futex_unsigned_base::_M_futex_wait_until): Likewise. 1196 (__atomic_futex_unsigned_base::_M_futex_wait_until_steady): 1197 Likewise. 1198 11992020-11-13 Jonathan Wakely <jwakely@redhat.com> 1200 1201 PR libstdc++/93456 1202 * src/c++11/futex.cc (relative_timespec): Remove redundant check 1203 negative values. 1204 * testsuite/30_threads/future/members/wait_until_overflow.cc: Moved to... 1205 * testsuite/30_threads/future/members/93456.cc: ...here. 1206 12072020-11-13 Jonathan Wakely <jwakely@redhat.com> 1208 1209 * src/c++11/futex.cc (relative_timespec): Add [[unlikely]] 1210 attributes. 1211 (__atomic_futex_unsigned_base::_M_futex_wait_until) 1212 (__atomic_futex_unsigned_base::_M_futex_wait_until_steady): 1213 Check for overflow. 1214 * testsuite/30_threads/future/members/wait_until_overflow.cc: 1215 New test. 1216 12172020-11-13 Jonathan Wakely <jwakely@redhat.com> 1218 1219 * src/c++11/futex.cc (relative_timespec): New function to 1220 create relative time from two absolute times. 1221 (__atomic_futex_unsigned_base::_M_futex_wait_until) 1222 (__atomic_futex_unsigned_base::_M_futex_wait_until_steady): 1223 Use relative_timespec. 1224 12252020-11-13 Jonathan Wakely <jwakely@redhat.com> 1226 1227 * testsuite/30_threads/future/members/poll.cc: Require gthreads 1228 and add -pthread for targets that require it. Relax required 1229 ratio of wait_for calls before/after the future is ready. 1230 12312020-11-12 Jonathan Wakely <jwakely@redhat.com> 1232 1233 * include/std/future (future::wait_for): Do not wait for 1234 durations less than or equal to zero. 1235 * src/c++11/futex.cc (_M_futex_wait_until) 1236 (_M_futex_wait_until_steady): Do not wait for timeouts before 1237 the epoch. 1238 * testsuite/30_threads/future/members/poll.cc: New test. 1239 12402020-11-12 Jonathan Wakely <jwakely@redhat.com> 1241 1242 * include/ext/numeric_traits.h (__numeric_traits): Change 1243 primary template to always derive from __numeric_traits_integer. 1244 (__numeric_traits<float>, __numeric_traits<double>) 1245 (__numeric_traits<long double>): Add explicit specializations. 1246 12472020-11-12 Jonathan Wakely <jwakely@redhat.com> 1248 1249 PR libstdc++/97798 1250 * include/ext/numeric_traits.h (__glibcxx_signed) 1251 (__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove 1252 macros. 1253 (__is_integer_nonstrict::__width): Define new constant. 1254 (__numeric_traits_integer): Define constants in terms of each 1255 other and __is_integer_nonstrict::__width, rather than the 1256 removed macros. 1257 (_GLIBCXX_INT_N_TRAITS): Macro to define explicit 1258 specializations for non-standard integer types. 1259 12602020-11-11 Jonathan Yong <10walls@gmail.com> 1261 1262 * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Exclude 1263 cygwin and mingw from relro linker test. 1264 * configure: Regenerate. 1265 12662020-11-11 Paul Scharnofske <asynts@gmail.com> 1267 1268 * include/std/thread (jthread::operator=(jthread&&)): Transfer 1269 any existing state to a temporary that will request a stop and 1270 then join. 1271 * testsuite/30_threads/jthread/jthread.cc: Test move assignment. 1272 12732020-11-11 Jonathan Wakely <jwakely@redhat.com> 1274 1275 * include/std/stop_token (_Stop_state_t::_M_requester): Define 1276 new struct with members to store and check the thread ID. 1277 (_Stop_state_t::_M_request_stop()): Use _M_requester._M_set(). 1278 (_Stop_state_t::_M_remove_callback(_Stop_cb*)): Use 1279 _M_requester._M_is_current_thread(). 1280 12812020-11-11 Jonathan Wakely <jwakely@redhat.com> 1282 1283 * include/std/ostream (__syncbuf_base): New class template. 1284 (emit_on_flush, noemit_on_flush, flush_emit): New manipulators. 1285 * include/std/syncstream (basic_syncbuf): Derive from 1286 __syncbuf_base instead of basic_streambuf. 1287 (basic_syncbuf::operator=): Remove self-assignment check. 1288 (basic_syncbuf::swap): Remove self-swap check. 1289 (basic_syncbuf::emit): Do not skip pubsync() call if sequence 1290 is empty. 1291 (basic_syncbuf::sync): Remove no-op pubsync on stringbuf. 1292 (basic_syncbuf::overflow): Define override. 1293 * testsuite/27_io/basic_syncstream/basic_ops/1.cc: Test 1294 basic_osyncstream::put(char_type). 1295 * testsuite/27_io/basic_ostream/emit/1.cc: New test. 1296 12972020-11-10 Jonathan Wakely <jwakely@redhat.com> 1298 1299 * config/locale/generic/c_locale.cc (__set_C_locale()): New function 1300 to set the "C" locale and return the name of the previous locale. 1301 (__convert_to_v<float>, __convert_to_v<double>) 1302 (__convert_to_v<long double>): Use __set_C_locale and set failbit on 1303 error. 1304 13052020-11-10 Jonathan Wakely <jwakely@redhat.com> 1306 1307 * include/std/sstream (basic_stringbug, basic_istringstream) 1308 (basic_ostringstream, basic_stringstream): Reorder C++20 1309 constructors to be declared next to other constructors. 1310 13112020-11-10 Jonathan Wakely <jwakely@redhat.com> 1312 1313 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Tighten patterns. 1314 (GLIBCXX_3.4.29): Export new symbols. 1315 * include/bits/alloc_traits.h (__allocator_like): New concept. 1316 * include/std/sstream (basic_stringbuf::swap): Add exception 1317 specification. 1318 (basic_stringbuf::str() const): Add ref-qualifier. Use new 1319 _M_high_mark function. 1320 (basic_stringbuf::str(const SAlloc&) const): Define new function. 1321 (basic_stringbuf::str() &&): Likewise. 1322 (basic_stringbuf::str(const basic_string<C,T,SAlloc>&)): 1323 Likewise. 1324 (basic_stringbuf::str(basic_string<C,T,Alloc>&&)): Likewise. 1325 (basic_stringbuf::view() const): Use _M_high_mark. 1326 (basic_istringstream::str, basic_ostringstream::str) 1327 (basic_stringstream::str): Define new overloads. 1328 * src/c++20/sstream-inst.cc (basic_stringbuf::str) 1329 (basic_istringstream::str, basic_ostringstream::str) 1330 (basic_stringstream::str): Explicit instantiation definitions 1331 for new overloads. 1332 * testsuite/27_io/basic_istringstream/view/char/1.cc: Add more 1333 checks. 1334 * testsuite/27_io/basic_istringstream/view/wchar_t/1.cc: 1335 Likewise. 1336 * testsuite/27_io/basic_ostringstream/view/char/1.cc: 1337 Likewise. 1338 * testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc: 1339 Likewise. 1340 * testsuite/27_io/basic_stringstream/view/char/1.cc: 1341 Likewise. 1342 * testsuite/27_io/basic_stringstream/view/wchar_t/1.cc: 1343 Likewise. 1344 * testsuite/27_io/basic_istringstream/str/char/2.cc: New test. 1345 * testsuite/27_io/basic_istringstream/str/wchar_t/2.cc: New test. 1346 * testsuite/27_io/basic_ostringstream/str/char/3.cc: New test. 1347 * testsuite/27_io/basic_ostringstream/str/wchar_t/3.cc: New test. 1348 * testsuite/27_io/basic_stringbuf/str/char/4.cc: New test. 1349 * testsuite/27_io/basic_stringbuf/str/wchar_t/4.cc: New test. 1350 * testsuite/27_io/basic_stringstream/str/char/5.cc: New test. 1351 * testsuite/27_io/basic_stringstream/str/wchar_t/5.cc.cc: New test. 1352 13532020-11-10 Jonathan Wakely <jwakely@redhat.com> 1354 1355 PR libstdc++/97415 1356 * include/std/sstream (basic_stringbuf::_M_update_egptr) 1357 (basic_stringbuf::__xfer_bufptrs::__xfer_bufptrs): Check for 1358 null before comparing pointers. 1359 13602020-11-09 Fran��ois Dumont <fdumont@gcc.gnu.org> 1361 1362 * include/debug/array: Remove. 1363 * include/Makefile.am: Remove <debug/array>. 1364 * include/Makefile.in: Regenerate. 1365 * include/experimental/functional: Adapt. 1366 * include/std/array: Move to _GLIBCXX_INLINE_VERSION namespace. 1367 * include/std/functional: Adapt. 1368 * include/std/span: Adapt. 1369 * testsuite/23_containers/array/debug/back1_neg.cc: 1370 Remove dg-require-debug-mode. Add -D_GLIBCXX_ASSERTIONS option. 1371 * testsuite/23_containers/array/debug/back2_neg.cc: Likewise. 1372 * testsuite/23_containers/array/debug/front1_neg.cc: Likewise. 1373 * testsuite/23_containers/array/debug/front2_neg.cc: Likewise. 1374 * testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc: 1375 Likewise. 1376 * testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc: 1377 Likewise. 1378 * testsuite/23_containers/array/element_access/60497.cc 1379 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: 1380 Remove. 1381 * testsuite/23_containers/array/tuple_interface/get_neg.cc 1382 * testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc 1383 * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc 1384 13852020-11-09 Fran��ois Dumont <fdumont@gcc.gnu.org> 1386 1387 * include/debug/assertions.h (__glibcxx_requires_non_empty_range): 1388 Remove __builtin_expect. 1389 (__glibcxx_requires_subscript): Likewise. 1390 (__glibcxx_requires_nonempty): Likewise. 1391 * include/debug/formatter.h (__check_singular): Add C++11 constexpr 1392 qualification. 1393 * include/debug/helper_functions.h (__check_singular): Likewise. Skip 1394 check if constant evaluated. 1395 (__valid_range): Do not skip check if constant evaluated. 1396 * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_COND_AT): Add 1397 __builtin_expect. 1398 (_GLIBCXX_DEBUG_VERIFY_AT_F): Use __glibcxx_assert_1. 1399 * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc: 1400 New test. 1401 * testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc: New test. 1402 * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc: New test. 1403 * testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc: 1404 New test. 1405 * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc: 1406 New test. 1407 * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc: 1408 New test. 1409 * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc: New test. 1410 * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc: New test. 1411 * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc: 1412 New test. 1413 * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc: New test. 1414 * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc: New test. 1415 * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc: New test. 1416 * testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc: New test. 1417 * testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc: New test. 1418 * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc: New test. 1419 * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc: New test. 1420 * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc: New test. 1421 * testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc: New test. 1422 * testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc: New test. 1423 14242020-11-09 Jonathan Wakely <jwakely@redhat.com> 1425 1426 * include/bits/uniform_int_dist.h (__detail::_Power_of_2): 1427 Document that true result for zero is intentional. 1428 14292020-11-09 Jonathan Wakely <jwakely@redhat.com> 1430 1431 * include/std/bit (__popcount): Remove redundant check for zero. 1432 14332020-11-09 Jonathan Wakely <jwakely@redhat.com> 1434 1435 PR libstdc++/97729 1436 * libsupc++/exception_ptr.h (exception_ptr::exception_ptr()) 1437 (exception_ptr::exception_ptr(const exception_ptr&)) 1438 (exception_ptr::~exception_ptr()): Remove 'always_inline' 1439 attributes. Use 'inline' unconditionally. 1440 14412020-11-09 Jonathan Wakely <jwakely@redhat.com> 1442 1443 PR libstdc++/97758 1444 * include/bits/std_function.h [!__cpp_rtti]: Include <typeinfo>. 1445 14462020-11-07 Liu Hao <lh_mouse@126.com> 1447 1448 * libsupc++/cxxabi.h: (__cxa_atexit): mark with _GLIBCXX_CDTOR_CALLABI 1449 (__cxa_thread_atexit): ditto 1450 * libsupc++/atexit_thread.cc: (__cxa_atexit): mark with 1451 _GLIBCXX_CDTOR_CALLABI 1452 (__cxa_thread_atexit): ditto 1453 (elt): ditto 1454 14552020-11-06 Jonathan Wakely <jwakely@redhat.com> 1456 1457 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Tighten up patterns 1458 for basic_stringbuf that refer to __xfer_bufptrs. 1459 14602020-11-05 Marek Polacek <polacek@redhat.com> 1461 1462 PR c++/25814 1463 * testsuite/20_util/reference_wrapper/lwg2993.cc: Add a dg-warning. 1464 * testsuite/25_algorithms/generate_n/87982_neg.cc: Likewise. 1465 14662020-11-05 Jonathan Wakely <jwakely@redhat.com> 1467 1468 PR libstdc++/96269 1469 * include/std/optional (operator==, operator!=, operator<) 1470 (operator>, operator<=, operator>=): Fix types used in 1471 SFINAE constraints. 1472 * testsuite/20_util/optional/relops/96269.cc: New test. 1473 14742020-11-05 Jonathan Wakely <jwakely@redhat.com> 1475 1476 PR libstdc++/97731 1477 * src/filesystem/dir.cc (recursive_directory_iterator): Call the 1478 right overload of _Dir::advance. 1479 * testsuite/experimental/filesystem/iterators/97731.cc: New test. 1480 14812020-11-05 Jonathan Wakely <jwakely@redhat.com> 1482 1483 PR libstdc++/97729 1484 * include/std/future (__basic_future::_M_get_result): Use 1485 nullptr for null pointer constant. 1486 * libsupc++/eh_ptr.cc (operator==, operator!=): Remove 1487 definitions. 1488 * libsupc++/exception_ptr.h (_GLIBCXX_EH_PTR_USED): Define 1489 macro to conditionally add __attribute__((__used__)). 1490 (operator==, operator!=, exception_ptr::exception_ptr()) 1491 (exception_ptr::exception_ptr(const exception_ptr&)) 1492 (exception_ptr::~exception_ptr()) 1493 (exception_ptr::operator=(const exception_ptr&)) 1494 (exception_ptr::swap(exception_ptr&)): Always define as 1495 inline. Add macro to be conditionally "used". 1496 14972020-11-05 Jonathan Wakely <jwakely@redhat.com> 1498 1499 PR libstdc++/97729 1500 * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Add exports. 1501 * src/c++20/sstream-inst.cc (basic_stringbuf): Instantiate 1502 private constructor taking __xfer_bufptrs. 1503 15042020-11-05 Jonathan Wakely <jwakely@redhat.com> 1505 1506 * include/std/sstream (basic_stringbuf(const allocator_type&): 1507 Add explicit. 1508 (basic_stringbuf(const basic_string<C,T,SA>&, openmode, const A&)): 1509 Call _M_stringbuf_init. Construct _M_string from pointer and length 1510 to avoid constraint checks for string view. 1511 (basic_stringbuf::view()): Make __sv_type alias local to the 1512 function. 1513 (basic_istringstream(const basic_string<C,T,SA>&, openmode, const A&)): 1514 Pass string to _M_streambuf instead of constructing a temporary 1515 with the wrong allocator. 1516 (basic_ostringstream(const basic_string<C,T,SA>&, openmode, const A&)): 1517 Likewise. 1518 (basic_stringstream(const basic_string<C,T,SA>&, openmode, const A&)): 1519 Likewise. 1520 * src/c++20/sstream-inst.cc: Use string_view and wstring_view 1521 typedefs in explicit instantiations. 1522 * testsuite/27_io/basic_istringstream/cons/char/1.cc: Add more 1523 tests for constructors. 1524 * testsuite/27_io/basic_ostringstream/cons/char/1.cc: Likewise. 1525 * testsuite/27_io/basic_stringbuf/cons/char/1.cc: Likewise. 1526 * testsuite/27_io/basic_stringbuf/cons/char/2.cc: Likewise. 1527 * testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc: Likewise. 1528 * testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc: Likewise. 1529 * testsuite/27_io/basic_stringstream/cons/char/1.cc: Likewise. 1530 15312020-11-05 Jonathan Wakely <jwakely@redhat.com> 1532 1533 * include/std/sstream: Adjust whitespace. 1534 15352020-11-04 Jonathan Wakely <jwakely@redhat.com> 1536 1537 PR libstdc++/97719 1538 * include/std/sstream (basic_stringstream(string_type&&, openmode)): 1539 Fix default argument. 1540 * testsuite/27_io/basic_stringstream/cons/char/97719.cc: New test. 1541 15422020-11-04 Jonathan Wakely <jwakely@redhat.com> 1543 1544 * testsuite/18_support/96817.cc: Fail fast if the library is 1545 configured to not use futexes. 1546 15472020-11-04 Jonathan Wakely <jwakely@redhat.com> 1548 1549 PR libstdc++/94971 1550 * include/bits/stl_algo.h (search(FIter, FIter, const Searcher): 1551 Adjust #if condition. 1552 * include/parallel/algo.h (search(FIter, FIter, const Searcher&): 1553 Define new overload for C++17. 1554 15552020-11-04 Jonathan Wakely <jwakely@redhat.com> 1556 1557 PR libstdc++/92285 1558 * doc/xml/manual/evolution.xml: Document change to base class. 1559 * doc/html/manual/api.html: Regenerate. 1560 15612020-11-04 Jonathan Wakely <jwakely@redhat.com> 1562 1563 * include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd): 1564 Use qualified-id to refer to static member functions. 1565 15662020-11-03 Jonathan Wakely <jwakely@redhat.com> 1567 1568 * include/std/syncstream: Include <bits/std_mutex.h> 1569 unconditionally. 1570 15712020-11-03 Fran��ois Dumont <fdumont@gcc.gnu.org> 1572 1573 * config/abi/pre/gnu-versioned-namespace.ver: 1574 Add __istream_extract and _Safe_local_iterator_base::_M_attach_single 1575 symbols. 1576 15772020-11-03 Jonathan Wakely <jwakely@redhat.com> 1578 1579 * src/c++11/mutex.cc [_GLIBCXX_HAVE_TLS] (__once_proxy): Define 1580 separately for TLS targets. 1581 [!_GLIBCXX_HAVE_TLS] (__get_once_functor_lock_ptr): Replace with ... 1582 (set_lock_ptr): ... this. Set new value and return previous 1583 value. 1584 [!_GLIBCXX_HAVE_TLS] (__set_once_functor_lock_ptr): Adjust to 1585 use set_lock_ptr. 1586 [!_GLIBCXX_HAVE_TLS] (__once_proxy): Likewise. 1587 15882020-11-03 Jonathan Wakely <jwakely@redhat.com> 1589 1590 PR libstdc++/55394 1591 PR libstdc++/66146 1592 PR libstdc++/84323 1593 * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Add new symbols. 1594 * include/std/mutex [!_GLIBCXX_HAS_GTHREADS] (once_flag): Define 1595 even when gthreads is not supported. 1596 (once_flag::_M_once) [_GLIBCXX_HAVE_LINUX_FUTEX]: Change type 1597 from __gthread_once_t to int. 1598 (once_flag::_M_passive(), once_flag::_M_activate()) 1599 (once_flag::_M_finish(bool), once_flag::_Active_execution): 1600 Define new members for futex and non-threaded implementation. 1601 [_GLIBCXX_HAS_GTHREADS] (once_flag::_Prepare_execution): New 1602 RAII helper type. 1603 (call_once): Use new members of once_flag. 1604 * src/c++11/mutex.cc (std::once_flag::_M_activate): Define. 1605 (std::once_flag::_M_finish): Define. 1606 * testsuite/30_threads/call_once/39909.cc: Do not require 1607 gthreads. 1608 * testsuite/30_threads/call_once/49668.cc: Likewise. 1609 * testsuite/30_threads/call_once/60497.cc: Likewise. 1610 * testsuite/30_threads/call_once/call_once1.cc: Likewise. 1611 * testsuite/30_threads/call_once/dr2442.cc: Likewise. 1612 * testsuite/30_threads/call_once/once_flag.cc: Add test for 1613 constexpr constructor. 1614 * testsuite/30_threads/call_once/66146.cc: New test. 1615 * testsuite/30_threads/call_once/constexpr.cc: Removed. 1616 * testsuite/30_threads/once_flag/cons/constexpr.cc: Removed. 1617 16182020-11-03 Jonathan Yong <10walls@gmail.com> 1619 1620 * src/Makefile.am (libstdc___la_LINK): Add lt_host_flags. 1621 * src/Makefile.in: Regenerate. 1622 16232020-11-02 Thomas Rodgers <trodgers@redhat.com> 1624 1625 * doc/doxygen/user.cfg.in (INPUT): Add new header. 1626 * include/Makefile.am (std_headers): Add new header. 1627 * include/Makefile.in: Regenerate. 1628 * include/precompiled/stdc++.h: Include new header. 1629 * include/std/syncstream: New header. 1630 * include/std/version: Add __cpp_lib_syncbuf. 1631 * testsuite/27_io/basic_syncbuf/1.cc: New test. 1632 * testsuite/27_io/basic_syncbuf/2.cc: Likewise. 1633 * testsuite/27_io/basic_syncbuf/basic_ops/1.cc: 1634 Likewise. 1635 * testsuite/27_io/basic_syncbuf/requirements/types.cc: 1636 Likewise. 1637 * testsuite/27_io/basic_syncbuf/sync_ops/1.cc: 1638 Likewise. 1639 * testsuite/27_io/basic_syncstream/1.cc: Likewise. 1640 * testsuite/27_io/basic_syncstream/2.cc: Likewise. 1641 * testsuite/27_io/basic_syncstream/basic_ops/1.cc: 1642 Likewise. 1643 * testsuite/27_io/basic_syncstream/requirements/types.cc: 1644 Likewise. 1645 16462020-11-01 Jonathan Wakely <jwakely@redhat.com> 1647 1648 * include/std/type_traits (is_integral<wchar_t>) 1649 (make_unsigned<wchar_t>, make_signed<wchar_t>): Define based 1650 on #ifdef __WCHAR_TYPE__ instead of _GLIBCXX_USE_WCHAR_T. 1651 * include/bits/cpp_type_traits.h (__is_integer<wchar_t>) 1652 (__is_char<wchar_t>): Likewise. 1653 16542020-10-31 Fran��ois Dumont <fdumont@gcc.gnu.org> 1655 1656 * src/c++17/floating_from_chars.cc (_GLIBCXX_USE_CX11_ABI): Add define. 1657 (buffering_string): New. 1658 [!_GLIBCXX_USE_CXX11_ABI](reserve_string): New. 1659 (from_chars): Adapt. 1660 * src/c++20/sstream-inst.cc: Limit instantiations to 1661 _GLIBCXX_USE_CXX11_ABI. 1662 16632020-10-31 Jonathan Wakely <jwakely@redhat.com> 1664 1665 * include/bits/random.h (independent_bit_engine): Fix typo 1666 in comment. 1667 (shuffle_order_engine): Fix incorrect description in comment. 1668 * include/bits/random.tcc (__representable_as_double 1669 (__p1_representable_as_double): New helper functions. 1670 (shuffle_order_engine::operator()): Use double for calculation 1671 if (max() - min() + 1) is representable as double. 1672 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error 1673 line number. 1674 16752020-10-31 Jonathan Wakely <jwakely@redhat.com> 1676 1677 PR libstdc++/96958 1678 * include/bits/hashtable_policy.h (_Prime_rehash_policy) 1679 (_Power2_rehash_policy): Use ceil and floor instead of ceill and 1680 floorl. 1681 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy): Likewise. 1682 Use double instead of long double. 1683 16842020-10-31 Patrick Palka <ppalka@redhat.com> 1685 1686 PR libstdc++/97600 1687 * include/std/ranges (basic_istream_view::begin): Initialize 1688 _Iterator from 'this' instead of '*this'. 1689 (basic_istream_view::_Iterator::_Iterator): Adjust constructor 1690 accordingly. 1691 (filter_view::_Iterator::_Iterator): Take a filter_view* 1692 argument instead of a filter_view& argument. 1693 (filter_view::_Sentinel::_Sentinel): Likewise. 1694 (filter_view::begin): Initialize _Iterator from 'this' instead 1695 of '*this'. 1696 (filter_view::end): Likewise. 1697 (transform_view::_Iterator::_Iterator): Take a _Parent* instead 1698 of a _Parent&. 1699 (filter_view::_Iterator::operator+): Adjust accordingly. 1700 (filter_view::_Iterator::operator-): Likewise. 1701 (filter_view::begin): Initialize _Iterator from 'this' instead 1702 of '*this'. 1703 (filter_view::end): Likewise. 1704 (join_view::_Iterator): Take a _Parent* instead of a _Parent&. 1705 (join_view::_Sentinel): Likewise. 1706 (join_view::begin): Initialize _Iterator from 'this' instead of 1707 '*this'. 1708 (join_view::end): Initialize _Sentinel from 'this' instead of 1709 '*this'. 1710 (split_view::_OuterIter): Take a _Parent& instead of a _Parent*. 1711 (split_view::begin): Initialize _OuterIter from 'this' instead 1712 of '*this'. 1713 (split_view::end): Likewise. 1714 * testsuite/std/ranges/97600.cc: New test. 1715 17162020-10-30 Jonathan Wakely <jwakely@redhat.com> 1717 1718 * include/std/ranges (enable_borrowed_view<take_view<T>>) 1719 (enable_borrowed_view<drop_view<T>>) 1720 (enable_borrowed_view<drop_while_view<T>>) 1721 (enable_borrowed_view<reverse_view<T>>) 1722 (enable_borrowed_view<common_view<T>>) 1723 (enable_borrowed_view<elements_view<T>>): Add partial 1724 specializations as per P2017R1. 1725 * testsuite/std/ranges/adaptors/conditionally_borrowed.cc: 1726 New test. 1727 17282020-10-30 Jonathan Wakely <jwakely@redhat.com> 1729 1730 PR libstdc++/96958 1731 * include/bits/hashtable_policy.h (_Prime_rehash_policy) 1732 (_Power2_rehash_policy): Use double instead of long double. 1733 17342020-10-30 Jonathan Wakely <jwakely@redhat.com> 1735 1736 * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: 1737 Avoid -Wcatch-value warnings. 1738 17392020-10-30 Patrick Palka <ppalka@redhat.com> 1740 1741 * include/std/ranges (__detail::__box): For the partial 1742 specialization used by types that are already semiregular, 1743 make the default constructor value-initialize the underlying 1744 object instead of default-initializing it. Make its in place 1745 constructor explicit. 1746 * testsuite/std/ranges/adaptors/detail/semiregular_box.cc: 1747 Augment test. 1748 17492020-10-30 David Edelsohn <dje.gcc@gmail.com> 1750 1751 * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: XFAIL on AIX. 1752 17532020-10-29 Jonathan Wakely <jwakely@redhat.com> 1754 1755 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Tighten patterns 1756 for old <sstream> symbols some more. 1757 17582020-10-29 Jonathan Wakely <jwakely@redhat.com> 1759 1760 * include/bits/ranges_util.h (subrange::subrange(R&&)): Use 1761 direct-initialization instead of list-initialization, so a 1762 potential narrowing conversion from ranges::size(r) to the 1763 stored size isn't ill-formed. 1764 17652020-10-29 Jonathan Wakely <jwakely@redhat.com> 1766 1767 * include/bits/parse_numbers.h (_Select_int_base): Avoid 1768 narrowing conversion in constant expression. 1769 * include/experimental/buffer (buffer_copy): Avoid narrowing 1770 conversion. 1771 * include/experimental/internet (hash<>::operator()): Do not 1772 use deprecated 'argument_type' member. 1773 * include/std/variant (variant::emplace): Use cast instead 1774 of implicit conversion from size_t to narrower unsigned type. 1775 17762020-10-29 Jonathan Wakely <jwakely@redhat.com> 1777 1778 * include/tr1/shared_ptr.h (__shared_count, __shared_ptr) 1779 (shared_ptr): Add diagnostic pragmas around uses of auto_ptr. 1780 * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: 1781 Adust dg-error line numbers. 1782 17832020-10-29 Jonathan Wakely <jwakely@redhat.com> 1784 1785 * testsuite/18_support/96817.cc: Avoid -Wunused warnings. 1786 * testsuite/20_util/any/assign/2.cc: Likewise. 1787 * testsuite/20_util/any/cons/2.cc: Likewise. 1788 * testsuite/20_util/align/1.cc: Avoid -Wsign-compare warning. 1789 * testsuite/20_util/function/65760.cc: Avoid -Wunused warning. 1790 * testsuite/20_util/function/1.cc: Avoid -Wcatch-value warning. 1791 * testsuite/20_util/function/cons/move_target.cc: Avoid -Wunused 1792 warning. 1793 * testsuite/20_util/headers/memory/synopsis.cc: Add exception 1794 specification. 1795 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Avoid 1796 -Wsign-compare warning. 1797 * testsuite/20_util/tuple/cons/deduction.cc: Avoid -Wunused 1798 warning. 1799 * testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc: 1800 Avoid -Wdeprecated-copy warning. 1801 * testsuite/21_strings/basic_string/56166.cc: Avoid 1802 -Wcatch-value warning. 1803 * testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc: 1804 Avoid -Wcatch-value warnings. 1805 * testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc: 1806 Likewise. 1807 * testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc: 1808 Likewise. 1809 * testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc: 1810 Likewise. 1811 * testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc: 1812 Likewise. 1813 * testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc: 1814 Likewise. 1815 * testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc: 1816 Likewise. 1817 * testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc: 1818 Likewise. 1819 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc: 1820 Likewise. 1821 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc: 1822 Likewise. 1823 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc: 1824 Likewise. 1825 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc: 1826 Likewise. 1827 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc: 1828 Likewise. 1829 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc: 1830 Likewise. 1831 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc: 1832 Likewise. 1833 * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc: 1834 Likewise. 1835 * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: 1836 Prune additional diagnostics. 1837 * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: 1838 Likewise. 1839 * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: 1840 Likewise. 1841 * testsuite/21_strings/headers/string/synopsis.cc: Add exception 1842 specifications. 1843 * testsuite/22_locale/locale/cons/12352.cc: Define sized 1844 delete operators to avoid warnings. 1845 * testsuite/23_containers/deque/modifiers/swap/1.cc: Add 1846 exception specification. 1847 * testsuite/23_containers/forward_list/cons/11.cc: Avoid 1848 -Wdeprecated-copy warning. 1849 * testsuite/23_containers/headers/bitset/synopsis.cc: Add 1850 exception specification. 1851 * testsuite/23_containers/headers/deque/synopsis.cc: Likewise. 1852 * testsuite/23_containers/headers/forward_list/synopsis.cc: 1853 Likewise. 1854 * testsuite/23_containers/headers/list/synopsis.cc: Likewise. 1855 * testsuite/23_containers/headers/map/synopsis.cc: Likewise. 1856 * testsuite/23_containers/headers/queue/synopsis.cc: Likewise. 1857 * testsuite/23_containers/headers/set/synopsis.cc: Likewise. 1858 * testsuite/23_containers/headers/vector/synopsis.cc: Likewise. 1859 * testsuite/23_containers/list/modifiers/swap/1.cc: Likewise. 1860 * testsuite/23_containers/map/modifiers/swap/1.cc: Likewise. 1861 * testsuite/23_containers/multimap/modifiers/swap/1.cc: 1862 Likewise. 1863 * testsuite/23_containers/multiset/modifiers/swap/1.cc: 1864 Likewise. 1865 * testsuite/23_containers/set/modifiers/swap/1.cc: Likewise. 1866 * testsuite/23_containers/unordered_set/56267-2.cc: Avoid 1867 -Wdeprecated-copy warning. 1868 * testsuite/23_containers/vector/bool/23632.cc: Avoid 1869 -Wempty-body warning. 1870 * testsuite/23_containers/vector/modifiers/swap/1.cc: Add 1871 exception specification. 1872 * testsuite/25_algorithms/heap/moveable2.cc: Fix misplaced 1873 parentheses around arguments. 1874 * testsuite/25_algorithms/sample/1.cc: Use return value. 1875 * testsuite/25_algorithms/search/searcher.cc: Avoid -Wunused 1876 warnings. 1877 * testsuite/27_io/basic_ostream/exceptions/char/9561.cc: 1878 Likewise. 1879 * testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc: 1880 Likewise. 1881 * testsuite/27_io/filesystem/operations/remove_all.cc: Avoid 1882 -Wsign-compare warning. 1883 * testsuite/experimental/any/assign/2.cc: Avoid -Wunused warnings. 1884 * testsuite/experimental/any/cons/2.cc: Likewise. 1885 * testsuite/experimental/filesystem/operations/remove_all.cc: 1886 Avoid -Wign-compare warning. 1887 * testsuite/experimental/memory/observer_ptr/cons/cons.cc: 1888 Likewise. 1889 * testsuite/experimental/memory_resource/null_memory_resource.cc: 1890 Likewise. 1891 * testsuite/experimental/source_location/1.cc: Avoid -Waddress 1892 warning. 1893 * testsuite/ext/pod_char_traits.cc: Avoid -Wunused warning. 1894 * testsuite/ext/vstring/modifiers/clear/56166.cc: Avoid 1895 -Wcatch-value. 1896 * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc: 1897 Avoid -Wunused warning. 1898 * testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc: 1899 Likewise. 1900 * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: 1901 Prune additional warnings. 1902 * testsuite/tr1/3_function_objects/function/1.cc: Avoid 1903 -Wcatch-value warning. 1904 * testsuite/util/replacement_memory_operators.h: Define sized 1905 delete to avoid warnings. 1906 * testsuite/util/testsuite_api.h (_NonDefaultConstructible): Add 1907 user-declared assignment operator to stop -Wdeprecated-copy 1908 warnings. 1909 * testsuite/util/testsuite_containers.h: Avoid -Wunused warning. 1910 * testsuite/util/testsuite_iterators.h: Avoid -Wsign-compare 1911 warnings. 1912 * testsuite/util/testsuite_new_operators.h: Define sized deleted. 1913 19142020-10-29 Jonathan Wakely <jwakely@redhat.com> 1915 1916 * testsuite/25_algorithms/all_of/constexpr.cc: Check result of 1917 the algorithm. 1918 * testsuite/25_algorithms/any_of/constexpr.cc: Likewise. 1919 * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise. 1920 * testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise. 1921 * testsuite/25_algorithms/count/constexpr.cc: Likewise. 1922 * testsuite/25_algorithms/equal/constexpr.cc: Likewise. 1923 * testsuite/25_algorithms/equal_range/constexpr.cc: Likewise. 1924 * testsuite/25_algorithms/fill/constexpr.cc: Likewise. 1925 * testsuite/25_algorithms/find_end/constexpr.cc: Likewise. 1926 * testsuite/25_algorithms/find_if/constexpr.cc: Likewise. 1927 * testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise. 1928 * testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise. 1929 * testsuite/25_algorithms/is_sorted_until/constexpr.cc: 1930 Likewise. 1931 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: 1932 Likewise. 1933 * testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise. 1934 * testsuite/25_algorithms/merge/constexpr.cc: Likewise. 1935 * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise. 1936 * testsuite/25_algorithms/none_of/constexpr.cc: Likewise. 1937 * testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise. 1938 * testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise. 1939 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise. 1940 * testsuite/25_algorithms/remove_if/constexpr.cc: Likewise. 1941 * testsuite/25_algorithms/replace_if/constexpr.cc: Likewise. 1942 * testsuite/25_algorithms/reverse/constexpr.cc: Likewise. 1943 * testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise. 1944 * testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise. 1945 * testsuite/25_algorithms/search/constexpr.cc: Likewise. 1946 * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise. 1947 * testsuite/25_algorithms/set_intersection/constexpr.cc: 1948 Likewise. 1949 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: 1950 Likewise. 1951 * testsuite/25_algorithms/set_union/constexpr.cc: Likewise. 1952 * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise. 1953 * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise. 1954 19552020-10-29 Jonathan Wakely <jwakely@redhat.com> 1956 1957 * include/bits/uniform_int_dist.h (_Power_of_two): Add 1958 constexpr. 1959 (uniform_int_distribution::_S_nd): Add static_assert to ensure 1960 the wider type is twice as wide as the result type. 1961 (uniform_int_distribution::__generate_impl): Add static_assert 1962 and declare variables as constexpr where appropriate. 1963 (uniform_int_distribution:operator()): Likewise. Only consider 1964 the uniform random bit generator's range of possible results 1965 when deciding whether _S_nd can be used, not the __uctype type. 1966 19672020-10-29 Jonathan Wakely <jwakely@redhat.com> 1968 1969 * include/ext/rope (_Refcount_Base::_M_ref_count): Remove 1970 volatile qualifier. 1971 (_Refcount_Base::_M_decr()): Likewise. 1972 19732020-10-29 Jonathan Wakely <jwakely@redhat.com> 1974 1975 * include/bits/std_function.h (_Function_handler<void, void>): 1976 Define explicit specialization used for invalid target types. 1977 (_Base_manager::_M_manager) [!__cpp_rtti]: Return null. 1978 (function::target_type()): Check for null pointer. 1979 (function::target()): Define unconditionall. Fix bug with 1980 const_cast of function pointer type. 1981 (function::target() const): Define unconditionally, but 1982 only use RTTI if enabled. 1983 * testsuite/20_util/function/target_no_rtti.cc: New test. 1984 19852020-10-29 Patrick Palka <ppalka@redhat.com> 1986 1987 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: 1988 (test03): Fix initializing the vector vy with the array y of size 4. 1989 19902020-10-29 Jonathan Wakely <jwakely@redhat.com> 1991 1992 * include/bits/hashtable_policy.h (_Local_iterator_base): Cast 1993 value to avoid -Wsign-compare warnings. 1994 * include/bits/regex.h (sub_match::_M_str): Avoid narrowing 1995 conversion. 1996 * include/bits/regex_compiler.tcc (_Compiler::_M_quantifier): 1997 Initialize variable to avoid -Wmaybe-uninitialized warning. 1998 * include/bits/shared_ptr_base.h (_Sp_counted_deleter::_Impl): 1999 Reorder mem-initializer-list to avoid -Wreorder warning. 2000 * include/bits/stl_tree.h (_Rb_tree_impl): Explicitly 2001 initialize base class in copy constructor. 2002 * include/debug/safe_iterator.h (_Safe_iterator): Likewise. 2003 * include/ext/debug_allocator.h: Reorder mem-initializer-list 2004 to avoid -Wreorder warning. 2005 * include/ext/throw_allocator.h (throw_allocator_limit) 2006 (throw_allocator_random): Add user-declared assignment operators 2007 to avoid -Wdeprecated-copy warnings. 2008 20092020-10-29 Jonathan Wakely <jwakely@redhat.com> 2010 2011 * include/bits/uniform_int_dist.h (uniform_int_distribution): 2012 Rename _UniformRandomNumberGenerator template parameters to 2013 _UniformRandomBitGenerator, as per P0346R1. 2014 20152020-10-29 Jonathan Wakely <jwakely@redhat.com> 2016 2017 * include/std/sstream (basic_stringbuf(__string_type&&, openmode)): 2018 Call _M_init_syncbuf to set up get/put areas. Also qualify 2019 std::move. 2020 20212020-10-28 Jonathan Wakely <jwakely@redhat.com> 2022 2023 * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Remove duplicate 2024 patterns. 2025 (CXXABI_1.3.13): Restore missing piece. 2026 20272020-10-28 Thomas Rodgers <trodgers@redhat.com> 2028 2029 * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++20. 2030 * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): New symbols. 2031 * configure: Regenerate. 2032 * include/std/sstream: 2033 (basic_stringbuf::basic_stringbuf(allocator const&)): New constructor. 2034 (basic_stringbuf::basic_stringbuf(openmode, allocator const&)): Likewise. 2035 (basic_stringbuf::basic_stringbuf(basic_string&&, openmode)): Likewise. 2036 (basic_stringbuf::basic_stringbuf(basic_stringbuf&&, allocator const&)): 2037 Likewise. 2038 (basic_stringbuf::get_allocator()): New method. 2039 (basic_stringbuf::view()): Likewise. 2040 (basic_istringstream::basic_istringstream(basic_string&&, openmode)): 2041 New constructor. 2042 (basic_istringstream::basic_istringstream(openmode, allocator const&)): 2043 Likewise 2044 (basic_istringstream::view()): New method. 2045 (basic_ostringstream::basic_ostringstream(basic_string&&, openmode)): 2046 New constructor. 2047 (basic_ostringstream::basic_ostringstream(openmode, allocator const&)): 2048 Likewise 2049 (basic_ostringstream::view()): New method. 2050 (basic_stringstream::basic_stringstream(basic_string&&, openmode)): 2051 New constructor. 2052 (basic_stringstream::basic_stringstream(openmode, allocator const&)): 2053 Likewise 2054 (basic_stringstream::view()): New method. 2055 * src/Makefile.in: Add c++20 directory. 2056 * src/Makefile.am: Regenerate. 2057 * src/c++20/Makefile.am: Add makefile for new sub-directory. 2058 * src/c++20/Makefile.in: Generate. 2059 * src/c++20/sstream-inst.cc: New file defining explicit 2060 instantiations for basic_stringbuf, basic_istringstream, 2061 basic_ostringstream, and basic_stringstream member functions 2062 added in C++20. 2063 * testsuite/27_io/basic_stringbuf/cons/char/2.cc: New test. 2064 * testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc: Likewise. 2065 * testsuite/27_io/basic_stringbuf/view/char/1.cc: Likewise. 2066 * testsuite/27_io/basic_stringbuf/view/wchar_t/1.cc: Likewise. 2067 * testsuite/27_io/basic_istringstream/cons/char/1.cc: Likewise. 2068 * testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc: Likewise. 2069 * testsuite/27_io/basic_istringstream/view/char/1.cc: Likewise. 2070 * testsuite/27_io/basic_istringstream/view/wchar_t/1.cc: Likewise. 2071 * testsuite/27_io/basic_ostringstream/cons/char/1.cc: Likewise. 2072 * testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc: Likewise. 2073 * testsuite/27_io/basic_ostringstream/view/char/1.cc: Likewise. 2074 * testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc: Likewise. 2075 * testsuite/27_io/basic_stringstream/cons/char/1.cc: Likewise. 2076 * testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc: Likewise. 2077 * testsuite/27_io/basic_stringstream/view/char/1.cc: Likewise. 2078 * testsuite/27_io/basic_stringstream/view/wchar_t/1.cc: Likewise. 2079 20802020-10-28 Patrick Palka <ppalka@redhat.com> 2081 2082 PR libstdc++/97613 2083 * include/std/chrono (year_month_weekday::operator sys_days): 2084 Cast the result of index() to int so that the initializer for 2085 days{} is sign-extended when it's converted to the underlying 2086 type. 2087 * testsuite/std/time/year_month_weekday/3.cc: New test. 2088 20892020-10-28 Jonathan Wakely <jwakely@redhat.com> 2090 2091 * libsupc++/new_opnt.cc (new): Add comment about forced unwind 2092 exceptions. 2093 20942020-10-28 Jonathan Wakely <jwakely@redhat.com> 2095 2096 PR libstdc++/94268 2097 * config/os/mingw32-w64/os_defines.h (_GLIBCXX_BUFSIZ): 2098 Define. 2099 * config/os/mingw32/os_defines.h (_GLIBCXX_BUFSIZ): 2100 Define. 2101 * include/bits/fstream.tcc: Use _GLIBCXX_BUFSIZ instead 2102 of BUFSIZ. 2103 * include/ext/stdio_filebuf.h: Likewise. 2104 * include/std/fstream (_GLIBCXX_BUFSIZ): Define. 2105 21062020-10-28 Jonathan Wakely <jwakely@redhat.com> 2107 2108 PR libstdc++/95592 2109 * include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR) 2110 (_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION): 2111 Use elaborated-type-specifier and qualified-id to avoid 2112 ambiguities with QNX system headers. 2113 * testsuite/26_numerics/valarray/95592.cc: New test. 2114 21152020-10-28 Jonathan Wakely <jwakely@redhat.com> 2116 2117 PR libstdc++/95609 2118 * include/std/span (span): Reorder data members to match common 2119 implementations of struct iovec. 2120 * testsuite/23_containers/span/layout_compat.cc: New test. 2121 21222020-10-27 Jonathan Wakely <jwakely@redhat.com> 2123 2124 * include/std/functional (std::_Placeholder): Define for C++98 2125 as well as later standards. 2126 * include/tr1/functional (std::placeholders::_1 etc): Declare 2127 for C++98. 2128 (tr1::_Placeholder): Replace with using-declaration for 2129 std::_Placeholder. 2130 (tr1::placeholders::_1 etc.): Replace with using-directive for 2131 std::placeholders. 2132 21332020-10-27 Jonathan Wakely <jwakely@redhat.com> 2134 2135 * include/tr1/ell_integral.tcc (__ellint_rf, __ellint_rd) 2136 (__ellint_rc, __ellint_rj): Remove unused variables. 2137 * include/tr1/modified_bessel_func.tcc (__airy): Likewise. 2138 21392020-10-27 Jonathan Wakely <jwakely@redhat.com> 2140 2141 * include/bits/locale_conv.h (__str_codecvt_out_all): 2142 Add cast to compare operands of the same signedness. 2143 * include/bits/locale_facets_nonio.tcc 2144 (time_get::_M_extract_wday_or_month): Likewise. 2145 * include/bits/sstream.tcc (basic_stringbuf::overflow): 2146 Likewise. 2147 * include/tr1/legendre_function.tcc (__sph_legendre): Use 2148 unsigned for loop variable. 2149 21502020-10-27 Jonathan Wakely <jwakely@redhat.com> 2151 2152 * include/std/charconv (from_chars): Add noexcept to match 2153 definitions in src/c++17/floating_from_chars.cc 2154 21552020-10-27 Jonathan Wakely <jwakely@redhat.com> 2156 2157 * src/c++17/fs_dir.cc (fs::directory_iterator::operator*): 2158 Add noexcept. Do not throw on precondition violation. 2159 21602020-10-27 Jonathan Wakely <jwakely@redhat.com> 2161 2162 * include/bits/fs_path.h (path::_List::begin, path::_List::end): 2163 Add noexcept to match definitions in src/c++17/fs_path.cc. 2164 21652020-10-27 Jonathan Wakely <jwakely@redhat.com> 2166 2167 * testsuite/experimental/memory_resource/new_delete_resource.cc: 2168 Add missing <cstdint> header. 2169 * testsuite/experimental/memory_resource/resource_adaptor.cc: 2170 Likewise. 2171 21722020-10-26 Jonathan Wakely <jwakely@redhat.com> 2173 2174 * include/experimental/executor (strand::_State): Fix thinko. 2175 21762020-10-26 Ville Voutilainen <ville.voutilainen@gmail.com> 2177 2178 * include/std/type_traits (__is_nt_constructible_impl): Remove. 2179 (__is_nothrow_constructible_impl): Adjust. 2180 (is_nothrow_default_constructible): Likewise. 2181 (__is_nt_assignable_impl): Remove. 2182 (__is_nothrow_assignable_impl): Adjust. 2183 21842020-10-26 Jonathan Wakely <jwakely@redhat.com> 2185 2186 PR libstdc++/97570 2187 * libsupc++/new_opa.cc: Declare size_t in global namespace. 2188 Remove unused header. 2189 21902020-10-26 Stephan Bergmann <sbergman@redhat.com> 2191 2192 * include/bits/shared_ptr_base.h 2193 (_Sp_counted_base::_M_add_ref_lock_nothrow(): Add noexcept to 2194 definitions to match declaration. 2195 (__shared_count(const __weak_count&, nothrow_t)): Add noexcept 2196 to declaration to match definition. 2197 21982020-10-23 Patrick Palka <ppalka@redhat.com> 2199 2200 * include/std/ranges (single_view::single_view): Mark the 2201 in place constructor explicit as per LWG 3428. 2202 (take_view): Remove the constraint on the deduction guide's 2203 template parameter as per LWG 3447. 2204 22052020-10-23 Jonathan Wakely <jwakely@redhat.com> 2206 2207 * include/experimental/memory_resource: Include <tuple>. 2208 (polymorphic_allocator::construct): Qualify forward_as_tuple. 2209 * include/std/memory_resource: Likewise. 2210 22112020-10-22 Jonathan Wakely <jwakely@redhat.com> 2212 2213 * testsuite/30_threads/condition_variable/members/68519.cc: 2214 Define recent_epoch_float_clock::duration to meet the Cpp17Clock 2215 requirements. 2216 22172020-10-22 Jonathan Wakely <jwakely@redhat.com> 2218 2219 * include/std/shared_mutex: Only include <condition_variable> 2220 when pthread_rwlock_t and POSIX timers are not available. 2221 (__cpp_lib_shared_mutex, __cpp_lib_shared_timed_mutex): Change 2222 value to be type 'long'. 2223 * include/std/version (__cpp_lib_shared_mutex) 2224 (__cpp_lib_shared_timed_mutex): Likewise. 2225 22262020-10-22 Jonathan Wakely <jwakely@redhat.com> 2227 2228 * include/Makefile.am: Add new header. 2229 * include/Makefile.in: Regenerate. 2230 * include/bits/shared_ptr.h: Include <iosfwd>. 2231 * include/bits/shared_ptr_base.h: Include required headers here 2232 directly, instead of in <memory>. 2233 * include/bits/uses_allocator_args.h: New file. Move utility 2234 functions for uses-allocator construction from <memory> to here. 2235 Only define the utility functions when concepts are available. 2236 (__cpp_lib_make_obj_using_allocator): Define non-standard 2237 feature test macro. 2238 * include/std/condition_variable: Remove unused headers. 2239 * include/std/future: Likewise. 2240 * include/std/memory: Remove headers that are not needed 2241 directly, and are now inclkuded where they're needed. Include 2242 new <bits/uses_allocator_args.h> header. 2243 * include/std/memory_resource: Include only the necessary 2244 headers. Use new feature test macro to detect support for the 2245 utility functions. 2246 * include/std/scoped_allocator: Likewise. 2247 * include/std/version (__cpp_lib_make_obj_using_allocator): 2248 Define. 2249 22502020-10-22 Olivier Hainque <hainque@adacore.com> 2251 2252 * crossconfig.m4: Turn vxworks matcher into vxworks*. 2253 * configure.host: Likewise. 2254 * configure: Regenerate. 2255 22562020-10-21 Jonathan Wakely <jwakely@redhat.com> 2257 2258 * include/bits/shared_ptr.h (shared_ptr(const weak_ptr&, nothrow_t)): 2259 Add noexcept. 2260 * include/bits/shared_ptr_base.h (_Sp_counted_base::_M_add_ref_lock): 2261 Remove specializations and just call _M_add_ref_lock_nothrow. 2262 (__shared_count, __shared_ptr): Use nullptr for null pointer 2263 constants. 2264 (__shared_count(const __weak_count&)): Use _M_add_ref_lock_nothrow 2265 instead of _M_add_ref_lock. 2266 (__shared_count(const __weak_count&, nothrow_t)): Add noexcept. 2267 (__shared_ptr::operator bool()): Add noexcept. 2268 (__shared_ptr(const __weak_ptr&, nothrow_t)): Add noexcept. 2269 22702020-10-21 Jonathan Wakely <jwakely@redhat.com> 2271 2272 PR libstdc++/97512 2273 * include/bits/ranges_util.h (tuple_size<subrange>) 2274 (tuple_element<I, cv subrange>): Move here from ... 2275 * include/std/ranges: ... here. 2276 * testsuite/std/ranges/subrange/97512.cc: New test. 2277 22782020-10-21 Thomas Rodgers <trodgers@redhat.com> 2279 2280 * include/pstl/algorithm_impl.h: Update file. 2281 * include/pstl/execution_impl.h: Likewise. 2282 * include/pstl/glue_algorithm_impl.h: Likewise. 2283 * include/pstl/glue_memory_impl.h: Likewise. 2284 * include/pstl/glue_numeric_impl.h: Likewise. 2285 * include/pstl/memory_impl.h: Likewise. 2286 * include/pstl/numeric_impl.h: Likewise. 2287 * include/pstl/parallel_backend.h: Likewise. 2288 * include/pstl/parallel_backend_serial.h: Likewise. 2289 * include/pstl/parallel_backend_tbb.h: Likewise. 2290 * include/pstl/parallel_backend_utils.h: Likewise. 2291 * include/pstl/pstl_config.h: Likewise. 2292 * include/pstl/unseq_backend_simd.h: Likewise. 2293 22942020-10-20 Fran��ois Dumont <fdumont@gcc.gnu.org> 2295 2296 * include/bits/hashtable_policy.h 2297 (_Hash_node_value_base<>): Remove _Hash_node_base inheritance. 2298 (_Hash_node_code_cache<bool _Cache_hash_code>): New. 2299 (_Hash_node_value<typename _Value, bool _Cache_hash_code>): New. 2300 (_Hash_node<>): Inherits _Hash_node_base<> and _Hash_node_value<>. 2301 (_Map_base<>::__node_type): Remove. 2302 (_Map_base<>::iterator): Remove. 2303 (_Insert_base<>::__hash_cached): New. 2304 (_Insert_base<>::__constant_iterators): New. 2305 (_Insert_base<>::__hashtable_alloc): New. 2306 (_Insert_base<>::__node_type): Remove. 2307 (_Insert_base<>::__node_ptr): New. 2308 (_Hash_code_base<>): Remove specializations. 2309 (_Hash_code_base<>::__node_type): Remove. 2310 (_Hash_code_base<>::_M_bucket_index(const __node_type*, size_t)): 2311 Replace by... 2312 (_Hash_code_base<>::_M_bucket_index(const _Hash_node_value<>&, size_t)): 2313 ...this. 2314 (_Hash_code_base<>::_M_store_code(__node_type*, __hash_code)): 2315 Replace by... 2316 (_Hash_code_base<>::_M_store_code(_Hash_node_code_cache<>&, __hash_code)): 2317 ...this. 2318 (_Hash_code_base<>::_M_copy_code(__node_type*, const __node_type*)): 2319 Replace by... 2320 (_Hash_code_base<>::_M_copy_code(_Hash_node_code_cache<>&, 2321 const _Hash_node_code_base<>&)): ...this. 2322 (_Hashtable_base<>::__constant_iterators): Remove. 2323 (_Hashtable_base<>::__unique_keys): Remove. 2324 (_Hashtable_base<>::__node_type): Remove. 2325 (_Hashtable_base<>::iterator): Remove. 2326 (_Hashtable_base<>::const_iterator): Remove. 2327 (_Hashtable_base<>::local_iterator): Remove. 2328 (_Hashtable_base<>::const_local_iterator): Remove. 2329 (_Hashtable_base<>::__ireturn_type): Remove. 2330 (_Hashtable_base<>::_Equal_hash_code<>::_S_equals): Replace by... 2331 (_Hashtable_base<>::_S_equals(__hash_code, const _Hash_node_code_hash<>&)): 2332 ...this. 2333 (_Hashtable_base<>::_Equal_hash_code<>::_S_node_equals): Replace by... 2334 (_Hashtable_base<>::_S_node_equals(__hash_code, 2335 const _Hash_node_code_hash<>&)): ...this. 2336 (_Hashtable_base<>::_Equal_hash_code<>): Remove. 2337 (_Hashtable_base<>::_M_equals): Adapt. 2338 (_Hashtable_baxe<>::_M_node_equals): Adapt. 2339 (_Equality<>::_M_equal): Adapt. 2340 (_Hashtable_alloc<>::__node_ptr): New. 2341 (_Hashtable_alloc<>::__bucket_type): Rename into... 2342 (_Hashtable_alloc<>::__node_base_ptr): ...this. 2343 (_Hashtable_alloc<>::__bucket_alloc_type): Rename into... 2344 (_Hashtable_alloc<>::__buckets_alloc_type): ...this. 2345 (_Hashtable_alloc<>::__bucket_alloc_traits): Rename into... 2346 (_Hashtable_alloc<>::__buckets_alloc_traits): ...this. 2347 (_Hashtable_alloc<>::__buckets_ptr): New. 2348 (_Hashtable_alloc<>::_M_allocate_node): Adapt. 2349 (_Hashtable_alloc<>::_M_deallocate_node): Adapt. 2350 (_Hashtable_alloc<>::_M_deallocate_node_ptr): Adapt. 2351 (_Hashtable_alloc<>::_M_deallocate_nodes): Adapt. 2352 (_Hashtable_alloc<>::_M_allocate_buckets): Adapt. 2353 (_Hashtable_alloc<>::_M_deallocate_buckets): Adapt. 2354 * include/bits/hashtable.h (_Hashtable<>): Adapt. 2355 23562020-10-20 Aldy Hernandez <aldyh@redhat.com> 2357 2358 * testsuite/21_strings/basic_string/capacity/1.cc: Pass 2359 -Wno-stringop-overflow to test. 2360 23612020-10-20 Jonathan Wakely <jwakely@redhat.com> 2362 2363 PR libstdc++/95917 2364 * include/std/coroutine (__noop_coro_frame): Replace with 2365 noop_coroutine_handle::__frame. 2366 (__dummy_resume_destroy): Define inline in __frame. 2367 (__noop_coro_fr): Replace with noop_coroutine_handle::_S_fr 2368 and define as inline. 2369 * testsuite/18_support/coroutines/95917.cc: New test. 2370 23712020-10-20 Jonathan Wakely <jwakely@redhat.com> 2372 2373 * include/std/coroutine (coroutine_handle<_Promise>): Remove 2374 base class. Add constructors, conversions, accessors etc. as 2375 proposed for LWG 3460. 2376 (coroutine_handle<noop_coroutine_promise>): Likewise. 2377 * testsuite/18_support/coroutines/lwg3460.cc: New test. 2378 23792020-10-19 Jonathan Wakely <jwakely@redhat.com> 2380 2381 * include/bits/unique_ptr.h (make_unique_for_overwrite): Define 2382 for C++20. 2383 * testsuite/20_util/unique_ptr/creation/array_neg.cc: Remove 2384 unused header. Adjust standard reference. 2385 * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: New test. 2386 * testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc: New test. 2387 23882020-10-19 Jonathan Wakely <jwakely@redhat.com> 2389 2390 * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved 2391 form of __no_unique_address__ attribute because 2392 no_unique_address is not reserved prior to C++20. 2393 23942020-10-19 Jonathan Wakely <jwakely@redhat.com> 2395 2396 * include/bits/node_handle.h (_Node_handle_common): Replace 2397 std::optional with custom type. 2398 * testsuite/20_util/variant/exception_safety.cc: Add missing 2399 header include. 2400 24012020-10-19 Jonathan Wakely <jwakely@redhat.com> 2402 2403 * include/precompiled/expc++.h: Removed. 2404 24052020-10-17 Ville Voutilainen <ville.voutilainen@gmail.com> 2406 2407 PR libstdc++/97449 2408 * include/std/variant 2409 (__gen_vtable_impl<>::_S_apply_single_alt): 2410 Diagnose visitor return type mismatches here.. 2411 (__gen_vtable_impl</*base case*/>::_S_apply): 2412 ..not here. 2413 24142020-10-15 Jonathan Wakely <jwakely@redhat.com> 2415 2416 * include/std/concepts: Fix typos in copyright notice. 2417 * include/std/ranges: Likewise. 2418 24192020-10-14 Jonathan Wakely <jwakely@redhat.com> 2420 2421 PR libstdc++/97415 2422 * include/std/sstream (basic_stringbuf::str()): Check for 2423 null egptr() before comparing to non-null pptr(). 2424 24252020-10-14 Jonathan Wakely <jwakely@redhat.com> 2426 2427 * testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc: 2428 Do not generate debug info. 2429 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc: 2430 Likewise. 2431 24322020-10-14 Jonathan Wakely <jwakely@redhat.com> 2433 2434 * include/bits/basic_string.h (basic_string(const Alloc&)) 2435 (basic_string(const basic_string&) 2436 (basic_string(const CharT*, size_type, const Alloc&)) 2437 (basic_string(const CharT*, const Alloc&)) 2438 (basic_string(size_type, CharT, const Alloc&)) 2439 (basic_string(initializer_list<CharT>, const Alloc&)) 2440 (basic_string(InputIterator, InputIterator, const Alloc&)): 2441 Define inline in class body. 2442 * include/bits/basic_string.tcc (basic_string(const Alloc&)) 2443 (basic_string(const basic_string&) 2444 (basic_string(const CharT*, size_type, const Alloc&)) 2445 (basic_string(const CharT*, const Alloc&)) 2446 (basic_string(size_type, CharT, const Alloc&)) 2447 (basic_string(initializer_list<CharT>, const Alloc&)) 2448 (basic_string(InputIterator, InputIterator, const Alloc&)): 2449 Move definitions into class body. 2450 24512020-10-14 Jonathan Wakely <jwakely@redhat.com> 2452 2453 * testsuite/lib/libstdc++.exp (check_effective_target_cxx11-abi): 2454 Add comments about which test flags get used by the check. 2455 24562020-10-14 Jonathan Wakely <jwakely@redhat.com> 2457 2458 * testsuite/21_strings/basic_string/allocator/char/copy.cc: Make 2459 comment more precise about what isn't supported by COW strings. 2460 * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc: 2461 Likewise. 2462 * testsuite/21_strings/basic_string/allocator/char/move.cc: 2463 Likewise. 2464 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc: 2465 Likewise. 2466 * testsuite/21_strings/basic_string/allocator/char/noexcept.cc: 2467 Likewise. 2468 * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc: 2469 Likewise. 2470 * testsuite/21_strings/basic_string/allocator/char/swap.cc: 2471 Likewise. 2472 * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc: 2473 Likewise. 2474 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc: 2475 Likewise. 2476 * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc: 2477 Likewise. 2478 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc: 2479 Likewise. 2480 * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc: 2481 Likewise. 2482 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc: 2483 Likewise. 2484 * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc: 2485 Likewise. 2486 24872020-10-14 Jonathan Wakely <jwakely@redhat.com> 2488 2489 * testsuite/21_strings/basic_string/allocator/char/minimal.cc: 2490 Do not require cxx11-abi effective target. 2491 * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc: 2492 Likewise. 2493 * testsuite/27_io/basic_fstream/cons/base.cc: Likewise. 2494 24952020-10-14 Jonathan Wakely <jwakely@redhat.com> 2496 2497 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] 2498 (basic_string(const _CharT*, const _Alloc&)): Constrain to 2499 require an allocator-like type to fix CTAD ambiguity (LWG 3706). 2500 * testsuite/21_strings/basic_string/cons/char/deduction.cc: 2501 Remove dg-skip-if. 2502 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: 2503 Likewise. 2504 25052020-10-13 Nuno Lopes <nuno.lopes@ist.utl.pt> 2506 2507 * include/bits/stl_algo.h (any_of): Fix incorrect description 2508 in comment. 2509 25102020-10-13 Jonathan Wakely <jwakely@redhat.com> 2511 2512 * doc/xml/manual/evolution.xml: Document some API changes 2513 and deprecations. 2514 * doc/xml/manual/intro.xml: Document LWG 2499. 2515 * doc/xml/manual/status_cxx2020.xml: Update status. 2516 * doc/html/*: Regenerate. 2517 25182020-10-13 Jonathan Wakely <jwakely@redhat.com> 2519 2520 * doc/xml/book.txml: Remove trailing whitespace. 2521 * doc/xml/chapter.txml: Likewise. 2522 * doc/xml/class.txml: Likewise. 2523 * doc/xml/gnu/fdl-1.3.xml: Likewise. 2524 * doc/xml/gnu/gpl-3.0.xml: Likewise. 2525 * doc/xml/manual/abi.xml: Likewise. 2526 * doc/xml/manual/algorithms.xml: Likewise. 2527 * doc/xml/manual/allocator.xml: Likewise. 2528 * doc/xml/manual/appendix_contributing.xml: Likewise. 2529 * doc/xml/manual/appendix_free.xml: Likewise. 2530 * doc/xml/manual/appendix_porting.xml: Likewise. 2531 * doc/xml/manual/atomics.xml: Likewise. 2532 * doc/xml/manual/auto_ptr.xml: Likewise. 2533 * doc/xml/manual/backwards_compatibility.xml: Likewise. 2534 * doc/xml/manual/bitmap_allocator.xml: Likewise. 2535 * doc/xml/manual/build_hacking.xml: Likewise. 2536 * doc/xml/manual/codecvt.xml: Likewise. 2537 * doc/xml/manual/concurrency.xml: Likewise. 2538 * doc/xml/manual/concurrency_extensions.xml: Likewise. 2539 * doc/xml/manual/configure.xml: Likewise. 2540 * doc/xml/manual/containers.xml: Likewise. 2541 * doc/xml/manual/ctype.xml: Likewise. 2542 * doc/xml/manual/debug.xml: Likewise. 2543 * doc/xml/manual/debug_mode.xml: Likewise. 2544 * doc/xml/manual/diagnostics.xml: Likewise. 2545 * doc/xml/manual/documentation_hacking.xml: Likewise. 2546 * doc/xml/manual/evolution.xml: Likewise. 2547 * doc/xml/manual/internals.xml: Likewise. 2548 * doc/xml/manual/intro.xml: Likewise. 2549 * doc/xml/manual/io.xml: Likewise. 2550 * doc/xml/manual/iterators.xml: Likewise. 2551 * doc/xml/manual/locale.xml: Likewise. 2552 * doc/xml/manual/localization.xml: Likewise. 2553 * doc/xml/manual/messages.xml: Likewise. 2554 * doc/xml/manual/mt_allocator.xml: Likewise. 2555 * doc/xml/manual/numerics.xml: Likewise. 2556 * doc/xml/manual/parallel_mode.xml: Likewise. 2557 * doc/xml/manual/policy_data_structures.xml: Likewise. 2558 * doc/xml/manual/prerequisites.xml: Likewise. 2559 * doc/xml/manual/shared_ptr.xml: Likewise. 2560 * doc/xml/manual/spine.xml: Likewise. 2561 * doc/xml/manual/status_cxxtr1.xml: Likewise. 2562 * doc/xml/manual/status_cxxtr24733.xml: Likewise. 2563 * doc/xml/manual/strings.xml: Likewise. 2564 * doc/xml/manual/support.xml: Likewise. 2565 * doc/xml/manual/test.xml: Likewise. 2566 * doc/xml/manual/test_policy_data_structures.xml: Likewise. 2567 * doc/xml/manual/using.xml: Likewise. 2568 * doc/xml/manual/using_exceptions.xml: Likewise. 2569 * doc/xml/manual/utilities.xml: Likewise. 2570 * doc/html/*: Regenerate. 2571 25722020-10-12 Patrick Palka <ppalka@redhat.com> 2573 2574 * include/std/ranges (take_while_view::begin): Constrain the 2575 const overload further as per LWG 3450. 2576 (take_while_view::end): Likewise. 2577 * testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG 2578 3450. 2579 25802020-10-12 Patrick Palka <ppalka@redhat.com> 2581 2582 PR libstdc++/95322 2583 * include/std/ranges (take_view::_CI): Define this alias 2584 template as per LWG 3449 and remove ... 2585 (take_view::_Sentinel::_CI): ... this type alias. 2586 (take_view::_Sentinel::operator==): Adjust use of _CI 2587 accordingly. Define a second overload that accepts an iterator 2588 of the opposite constness as per LWG 3449. 2589 (take_while_view::_Sentinel::operator==): Likewise. 2590 * testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449. 2591 25922020-10-12 Jonathan Wakely <jwakely@redhat.com> 2593 2594 * doc/doxygen/user.cfg.in: Update to Doxygen 1.8.20 format. 2595 25962020-10-12 Jonathan Wakely <jwakely@redhat.com> 2597 2598 * doc/doxygen/user.cfg.in (PREDEFINED): Use __cplusplus=201703L 2599 so that C++17 features are documented. 2600 26012020-10-12 Jonathan Wakely <jwakely@redhat.com> 2602 2603 * include/bits/stl_algobase.h (copy, move, copy_backward) 2604 (move_backward): Fix documentation for returned iterator. 2605 26062020-10-12 Martin Sebor <msebor@redhat.com> 2607 2608 PR c++/97201 2609 * libsupc++/new (operator new): Add attribute alloc_size and malloc. 2610 26112020-10-11 Clement Chigot <clement.chigot@atos.net> 2612 2613 * config/os/aix/t-aix: Add complementary mode object file to 2614 libstdc++fs.a 2615 26162020-10-10 Jonathan Wakely <jwakely@redhat.com> 2617 2618 PR libstdc++/97362 2619 * doc/html/manual/source_code_style.html: Regenerate. 2620 * doc/xml/manual/appendix_contributing.xml: Add __deref to 2621 BADNAMES. 2622 * include/debug/functions.h (_Irreflexive_checker::__deref): 2623 Rename to __ref. 2624 * testsuite/17_intro/badnames.cc: Check __deref. 2625 26262020-10-10 Ville Voutilainen <ville.voutilainen@gmail.com> 2627 2628 * include/std/variant (__check_visitor_result): 2629 Use size_t for indexes. 2630 (__check_visitor_results): Likewise. 2631 26322020-10-09 Ville Voutilainen <ville.voutilainen@gmail.com> 2633 2634 PR libstdc++/95904 2635 * include/std/variant (__deduce_visit_result): Add a nested ::type. 2636 (__gen_vtable_impl</*base case*/>::_S_apply): 2637 Check the visitor return type. 2638 (__same_types): New. 2639 (__check_visitor_result): Likewise. 2640 (__check_visitor_results): Likewise. 2641 (visit(_Visitor&&, _Variants&&...)): Use __check_visitor_results 2642 in case we're visiting just one variant. 2643 * testsuite/20_util/variant/visit_neg.cc: Adjust. 2644 26452020-10-09 Jonathan Wakely <jwakely@redhat.com> 2646 2647 PR libstdc++/97311 2648 * include/bits/random.tcc (seed_seq::generate): Use uint32_t for 2649 calculations. Also split the first loop into three loops to 2650 avoid branching on k on every iteration, resolving PR 94823. 2651 * testsuite/26_numerics/random/seed_seq/97311.cc: New test. 2652 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-erro 2653 line number. 2654 26552020-10-09 Daniel Lemire <lemire@gmail.com> 2656 2657 * include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd): 2658 New member function implementing Lemire's "nearly divisionless" 2659 algorithm. 2660 (uniform_int_distribution::operator()): Use _S_nd when the range 2661 of the URBG is the full width of the result type. 2662 26632020-10-09 Jonathan Wakely <jwakely@redhat.com> 2664 2665 * testsuite/Makefile.am: Set and export variable separately. 2666 * testsuite/Makefile.in: Regenerate. 2667 26682020-10-09 Jonathan Wakely <jwakely@redhat.com> 2669 2670 * scripts/check_performance: Use gnu++11 instead of gnu++0x. 2671 * testsuite/Makefile.am (check-performance): Export CXXFLAGS to 2672 child process. 2673 * testsuite/Makefile.in: Regenerate. 2674 26752020-10-09 Jonathan Wakely <jwakely@redhat.com> 2676 2677 * testsuite/performance/26_numerics/random_dist.cc: New test. 2678 26792020-10-09 Jonathan Wakely <jwakely@redhat.com> 2680 2681 * testsuite/util/testsuite_performance.h (report_header): Remove 2682 unused variable. 2683 26842020-10-08 Patrick Palka <ppalka@redhat.com> 2685 2686 PR libstdc++/95788 2687 * include/bits/ranges_uninitialized.h: 2688 (__construct_at_fn::operator()): Rewrite in terms of 2689 std::construct_at. Declare it conditionally noexcept. Qualify 2690 calls to declval in its requires-clause. 2691 * testsuite/20_util/specialized_algorithms/construct_at/95788.cc: 2692 New test. 2693 26942020-10-08 Jonathan Wakely <jwakely@redhat.com> 2695 2696 PR libstdc++/82584 2697 * include/bits/random.tcc 2698 (discrete_distribution::param_type::_M_initialize) 2699 (piecewise_constant_distribution::param_type::_M_initialize) 2700 (piecewise_linear_distribution::param_type::_M_initialize): 2701 Add assertions for positive sums.. 2702 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error 2703 line. 2704 27052020-10-08 Jonathan Wakely <jwakely@redhat.com> 2706 2707 * include/bits/ios_base.h (ios_base::failure): Add constructors 2708 takeing error_code argument. Add code() member function. 2709 * testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to 2710 run for the old ABI but do not check for derivation from 2711 std::system_error. 2712 * testsuite/27_io/ios_base/failure/error_code.cc: New test. 2713 27142020-10-08 Jonathan Wakely <jwakely@redhat.com> 2715 2716 * include/bits/random.h (__detail::_Mod): Revert last change. 2717 (__detail::__mod): Do not use _Mod for a==0 case. 2718 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: 2719 Check other cases with a==0. Also check runtime results. 2720 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error 2721 line. 2722 27232020-10-07 Jonathan Wakely <jwakely@redhat.com> 2724 2725 * include/bits/random.h (__detail::_Mod): Avoid divide by zero. 2726 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: 2727 New test. 2728 27292020-10-07 Jonathan Wakely <jwakely@redhat.com> 2730 2731 * include/bits/random.h (seed_seq(initializer_list<T>)): Rename 2732 parameter to use reserved name. 2733 * include/bits/ranges_algo.h (shift_left, shift_right): Rename 2734 template parameters to use reserved name. 2735 * libsupc++/exception_ptr.h (exception_ptr): Likewise for 2736 parameters and local variables. 2737 * testsuite/17_intro/names.cc: Check "il". Do not check "d" and 2738 "y" in C++20 mode. 2739 27402020-10-06 Jonathan Wakely <jwakely@redhat.com> 2741 2742 PR libstdc++/90295 2743 * config/abi/pre/gnu.ver (CXXABI_1.3.13): New symbol version. 2744 (exception_ptr::_M_addref(), exception_ptr::_M_release()): 2745 Export symbols. 2746 * libsupc++/eh_ptr.cc (exception_ptr::exception_ptr()): 2747 Remove out-of-line definition. 2748 (exception_ptr::exception_ptr(const exception_ptr&)): 2749 Likewise. 2750 (exception_ptr::~exception_ptr()): Likewise. 2751 (exception_ptr::operator=(const exception_ptr&)): 2752 Likewise. 2753 (exception_ptr::swap(exception_ptr&)): Likewise. 2754 (exception_ptr::_M_addref()): Add branch prediction. 2755 * libsupc++/exception_ptr.h (exception_ptr::operator bool): 2756 Add noexcept. 2757 [!_GLIBCXX_EH_PTR_COMPAT] (operator==, operator!=): Define 2758 inline as hidden friends. Remove declarations at namespace 2759 scope. 2760 (exception_ptr::exception_ptr()): Define inline. 2761 (exception_ptr::exception_ptr(const exception_ptr&)): 2762 Likewise. 2763 (exception_ptr::~exception_ptr()): Likewise. 2764 (exception_ptr::operator=(const exception_ptr&)): 2765 Likewise. 2766 (exception_ptr::swap(exception_ptr&)): Likewise. 2767 * testsuite/util/testsuite_abi.cc: Add CXXABI_1.3.13. 2768 * testsuite/18_support/exception_ptr/90295.cc: New test. 2769 27702020-10-06 Jonathan Wakely <jwakely@redhat.com> 2771 2772 * include/std/ranges (join_view): Remove deduction guide. 2773 (views::join): Add explicit template argument list to prevent 2774 deducing the wrong type. 2775 * testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474 2776 here, from ... 2777 * testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed. 2778 27792020-10-05 Jonathan Wakely <jwakely@redhat.com> 2780 2781 * include/bits/regex.h: Use __int_traits<int> instead of 2782 std::numeric_limits<int>. 2783 * include/bits/uniform_int_dist.h: Use __int_traits<T>::__max 2784 instead of std::numeric_limits<T>::max(). 2785 * include/bits/hashtable_policy.h: Use size_t(-1) instead of 2786 std::numeric_limits<size_t>::max(). 2787 * include/std/regex: Include <ext/numeric_traits.h>. 2788 * include/std/string_view: Use typedef for __int_traits<int>. 2789 * src/c++11/hashtable_c++0x.cc: Use size_t(-1) instead of 2790 std::numeric_limits<size_t>::max(). 2791 * testsuite/std/ranges/iota/96042.cc: Include <limits>. 2792 * testsuite/std/ranges/iota/difference_type.cc: Likewise. 2793 * testsuite/std/ranges/subrange/96042.cc: Likewise. 2794 27952020-10-05 Jonathan Wakely <jwakely@redhat.com> 2796 2797 * include/std/numeric: Move all #include directives to the top 2798 of the header. 2799 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line 2800 numbers. 2801 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. 2802 28032020-10-05 Jonathan Wakely <jwakely@redhat.com> 2804 2805 * config/abi/pre/gnu.ver: Add new symbol. 2806 * include/bits/functexcept.h (__throw_bad_array_new_length): 2807 Declare new function. 2808 * include/ext/malloc_allocator.h (malloc_allocator::allocate): 2809 Throw bad_array_new_length for impossible sizes (LWG 3190). 2810 * include/ext/new_allocator.h (new_allocator::allocate): 2811 Likewise. 2812 * include/std/memory_resource (polymorphic_allocator::allocate) 2813 (polymorphic_allocator::allocate_object): Use new function, 2814 __throw_bad_array_new_length. 2815 * src/c++11/functexcept.cc (__throw_bad_array_new_length): 2816 Define. 2817 * testsuite/20_util/allocator/lwg3190.cc: New test. 2818 28192020-10-05 Mike Crowe <mac@mcrowe.com> 2820 2821 PR libstdc++/91486 2822 * include/bits/atomic_futex.h: 2823 (__atomic_futex_unsigned::_M_load_when_equal_until): Use target 2824 clock duration type when rounding. 2825 * testsuite/30_threads/async/async.cc (test_pr91486_wait_for): 2826 Rename from test_pr91486. 2827 (float_steady_clock): New class for test. 2828 (test_pr91486_wait_until): New test. 2829 28302020-10-05 Mike Crowe <mac@mcrowe.com> 2831 2832 * testsuite/20_util/duration_cast/rounding_c++11.cc: Copy 2833 rounding.cc and alter to support compilation for C++11 and to 2834 test std::chrono::__detail::ceil. 2835 28362020-10-02 Jonathan Wakely <jwakely@redhat.com> 2837 2838 * testsuite/29_atomics/atomic_float/value_init.cc: Use float 2839 instead of double so that __atomic_load_8 isn't needed. 2840 28412020-10-02 Jonathan Wakely <jwakely@redhat.com> 2842 2843 * testsuite/18_support/96817.cc: Use terminate handler that 2844 calls _Exit(0). 2845 28462020-10-02 Patrick Palka <ppalka@redhat.com> 2847 2848 * include/bits/stl_iterator.h (reverse_iterator::iter_move): 2849 Define for C++20 as per P0896. 2850 (reverse_iterator::iter_swap): Likewise. 2851 (move_iterator::operator*): Apply P0896 changes for C++20. 2852 (move_iterator::operator[]): Likewise. 2853 * testsuite/24_iterators/reverse_iterator/cust.cc: New test. 2854 28552020-10-01 Jonathan Wakely <jwakely@redhat.com> 2856 2857 * config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE): 2858 Do not try to dereference return value of __atomic_load_n. 2859 28602020-09-30 Jonathan Wakely <jwakely@redhat.com> 2861 2862 * config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE): 2863 (_GLIBCXX_GUARD_SET_AND_RELEASE): Define for EABI. 2864 28652020-09-30 Jonathan Wakely <jwakely@redhat.com> 2866 2867 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME): 2868 Define for GCC 11 or when !__is_identifier(__is_same). 2869 (_GLIBCXX_BUILTIN_IS_SAME_AS): Remove. 2870 * include/std/type_traits (is_same, is_same_v): Replace uses 2871 of _GLIBCXX_BUILTIN_IS_SAME_AS. 2872 28732020-09-28 Patrick Palka <ppalka@redhat.com> 2874 2875 * include/std/ranges (filter_view): Declare the data member 2876 _M_base last instead of first, and adjust constructors' member 2877 initializer lists accordingly. 2878 (transform_view): Likewise. 2879 (take_view): Likewise. 2880 (take_while_view): Likewise. 2881 (drop_view): Likewise. 2882 (drop_while_view): Likewise. 2883 (join_view): Likewise. 2884 (split_view): Likewise (and tweak nearby formatting). 2885 (reverse_view): Likewise. 2886 * testsuite/std/ranges/adaptors/sizeof.cc: Update expected 2887 sizes. 2888 28892020-09-28 Patrick Palka <ppalka@redhat.com> 2890 2891 * testsuite/std/ranges/adaptors/sizeof.cc: New test. 2892 28932020-09-28 Patrick Palka <ppalka@redhat.com> 2894 2895 * include/bits/ranges_util.h (subrange::_M_end): Give it 2896 [[no_unique_address]]. 2897 * testsuite/std/ranges/subrange/sizeof.cc: New test. 2898 28992020-09-28 Patrick Palka <ppalka@redhat.com> 2900 2901 * include/std/ranges (iota_view::_M_bound): Give it 2902 [[no_unique_address]]. 2903 * testsuite/std/ranges/iota/iota_view.cc: Check that an 2904 unbounded iota_view has minimal size. 2905 29062020-09-27 Clement Chigot <clement.chigot@atos.net> 2907 2908 * config/os/aix/t-aix: Use $(AR) without -X32_64. 2909 29102020-09-26 Jonathan Wakely <jwakely@redhat.com> 2911 2912 PR libstdc++/96817 2913 * include/ext/atomicity.h (__gnu_cxx::__is_single_threaded()): 2914 New function wrapping __libc_single_threaded if available. 2915 (__exchange_and_add_dispatch, __atomic_add_dispatch): Use it. 2916 * libsupc++/guard.cc (__cxa_guard_acquire, __cxa_guard_abort) 2917 (__cxa_guard_release): Likewise. 2918 * testsuite/18_support/96817.cc: New test. 2919 29202020-09-25 Jonathan Wakely <jwakely@redhat.com> 2921 2922 * libsupc++/Makefile.am: Remove redundant -std=gnu++1z flags. 2923 * libsupc++/Makefile.in: Regenerate. 2924 29252020-09-24 Antony Polukhin <antoshkka@gmail.com> 2926 2927 PR libstdc++/71579 2928 * include/std/type_traits (invoke_result, is_invocable) 2929 (is_invocable_r, is_nothrow_invocable, is_nothrow_invocable_r): 2930 Add static_asserts to make sure that the arguments of the type 2931 traits are not misused with incomplete types. 2932 * testsuite/20_util/invoke_result/incomplete_args_neg.cc: New test. 2933 * testsuite/20_util/is_invocable/incomplete_args_neg.cc: New test. 2934 * testsuite/20_util/is_invocable/incomplete_neg.cc: New test. 2935 * testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc: 2936 New test. 2937 * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: Check 2938 for error on incomplete type usage in trait. 2939 29402020-09-24 Patrick Palka <ppalka@redhat.com> 2941 2942 * include/std/ranges (__detail::__boxable): Split out the 2943 associated constraints of __box into here. 2944 (__detail::__box): Use the __boxable concept. Define a leaner 2945 partial specialization for semiregular types. 2946 (single_view::_M_value): Give it [[no_unique_address]]. 2947 (filter_view::_M_pred): Likewise. 2948 (transform_view::_M_fun): Likewise. 2949 (take_while_view::_M_pred): Likewise. 2950 (drop_while_view::_M_pred):: Likewise. 2951 * testsuite/std/ranges/adaptors/detail/semiregular_box.cc: New 2952 test. 2953 29542020-09-24 Jonathan Wakely <jwakely@redhat.com> 2955 2956 * doc/xml/manual/configure.xml: Correct name of option. 2957 * doc/html/*: Regenerate. 2958 29592020-09-22 Jonathan Wakely <jwakely@redhat.com> 2960 2961 PR libstdc++/97167 2962 * src/c++17/fs_path.cc (path::_Parser::root_path()): Check 2963 for empty string before inspecting the first character. 2964 * testsuite/27_io/filesystem/path/append/source.cc: Append 2965 empty string_view to path. 2966 29672020-09-22 Glen Joseph Fernandes <glenjofe@gmail.com> 2968 2969 * include/bits/align.h (align): Fix overflow handling. 2970 * testsuite/20_util/align/3.cc: New test. 2971 29722020-09-22 Jonathan Wakely <jwakely@redhat.com> 2973 2974 * include/Makefile.am: Add new headers and adjust for renamed 2975 header. 2976 * include/Makefile.in: Regenerate. 2977 * include/bits/iterator_concepts.h: Adjust for renamed header. 2978 * include/bits/range_access.h (ranges::*): Move to new 2979 <bits/ranges_base.h> header. 2980 * include/bits/ranges_algobase.h: Include new <bits/ranges_base.h> 2981 header instead of <ranges>. 2982 * include/bits/ranges_algo.h: Include new <bits/ranges_util.h> 2983 header. 2984 * include/bits/range_cmp.h: Moved to... 2985 * include/bits/ranges_cmp.h: ...here. 2986 * include/bits/ranges_base.h: New header. 2987 * include/bits/ranges_util.h: New header. 2988 * include/experimental/string_view: Include new 2989 <bits/ranges_base.h> header. 2990 * include/std/functional: Adjust for renamed header. 2991 * include/std/ranges (ranges::view_base, ranges::enable_view) 2992 (ranges::dangling, ranges::borrowed_iterator_t): Move to new 2993 <bits/ranges_base.h> header. 2994 (ranges::view_interface, ranges::subrange) 2995 (ranges::borrowed_subrange_t): Move to new <bits/ranges_util.h> 2996 header. 2997 * include/std/span: Include new <bits/ranges_base.h> header. 2998 * include/std/string_view: Likewise. 2999 * testsuite/24_iterators/back_insert_iterator/pr93884.cc: Add 3000 missing <ranges> header. 3001 * testsuite/24_iterators/front_insert_iterator/pr93884.cc: 3002 Likewise. 3003 30042020-09-22 Jonathan Wakely <jwakely@redhat.com> 3005 3006 PR libstdc++/96803 3007 * include/std/tuple 3008 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)): 3009 Use correct value category in __use_alloc call. 3010 * testsuite/20_util/tuple/cons/96803.cc: Check with constructors 3011 that require correct value category to be used. 3012 30132020-09-22 Patrick Palka <ppalka@redhat.com> 3014 3015 * include/std/span (span::front): Remove static_assert. 3016 (span::back): Likewise. 3017 (span::operator[]): Likewise. 3018 * testsuite/23_containers/span/back_neg.cc: Rewrite to verify 3019 that we check the preconditions of back() only when it's called. 3020 * testsuite/23_containers/span/front_neg.cc: Likewise for 3021 front(). 3022 * testsuite/23_containers/span/index_op_neg.cc: Likewise for 3023 operator[]. 3024 30252020-09-22 Patrick Palka <ppalka@redhat.com> 3026 3027 * include/bits/stl_algo.h (__sample): Exit early when the 3028 input range is empty. 3029 * testsuite/25_algorithms/sample/3.cc: New test. 3030 30312020-09-22 Patrick Palka <ppalka@redhat.com> 3032 3033 * include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20. 3034 (search): Likewise for the overload that takes a searcher. 3035 * testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr 3036 std::for_each_n. 3037 * testsuite/25_algorithms/search/constexpr.cc: Test constexpr 3038 std::search overload that takes a searcher. 3039 30402020-09-21 Jonathan Wakely <jwakely@redhat.com> 3041 3042 * include/bits/c++config (__replacement_assert): Add noreturn 3043 attribute. 3044 (__glibcxx_assert_impl): Use __builtin_expect to hint that the 3045 assertion is expected to pass. 3046 30472020-09-21 Jonathan Wakely <jwakely@redhat.com> 3048 3049 * include/std/ranges (drop_view::begin()): Adjust constraints 3050 to match the correct condition for O(1) ranges::next (LWG 3482). 3051 * testsuite/std/ranges/adaptors/drop.cc: Check that iterator is 3052 cached for non-sized_range. 3053 30542020-09-21 Jonathan Wakely <jwakely@redhat.com> 3055 3056 * include/std/ranges (transform_view, elements_view): Relax 3057 constraints on operator- for iterators, as per LWG 3483. 3058 * testsuite/std/ranges/adaptors/elements.cc: Check that we 3059 can take the difference of two iterators from a non-random 3060 access range. 3061 * testsuite/std/ranges/adaptors/transform.cc: Likewise. 3062 30632020-09-21 Jonathan Wakely <jwakely@redhat.com> 3064 3065 PR libstdc++/97132 3066 * include/bits/align.h (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: 3067 Remove unused code. 3068 (assume_aligned): Do not use __builtin_assume_aligned during 3069 constant evaluation. 3070 * testsuite/20_util/assume_aligned/1.cc: Improve test. 3071 * testsuite/20_util/assume_aligned/97132.cc: New test. 3072 30732020-09-20 Jonathan Wakely <jwakely@redhat.com> 3074 3075 PR libstdc++/97101 3076 * include/std/functional (bind_front): Fix order of parameters 3077 in is_nothrow_constructible_v specialization. 3078 * testsuite/20_util/function_objects/bind_front/97101.cc: New test. 3079 30802020-09-11 Thomas Rodgers <trodgers@redhat.com> 3081 3082 * include/std/memory: Move #include <bits/align.h> inside C++11 3083 conditional includes. 3084 30852020-09-11 Thomas Rodgers <trodgers@redhat.com> 3086 3087 * include/Makefile.am (bits_headers): Add new header. 3088 * include/Makefile.in: Regenerate. 3089 * include/bits/align.h: New file. 3090 * include/std/memory (align): Move definition to bits/align.h. 3091 (assume_aligned): Likewise. 3092 30932020-09-11 Jonathan Wakely <jwakely@redhat.com> 3094 3095 * include/std/chrono [C++17] (chrono::__detail::ceil): Add 3096 using declaration to make chrono::ceil available for internal 3097 use with a consistent name. 3098 (chrono::__detail::__ceil_impl): New function template. 3099 (chrono::__detail::ceil): Use __ceil_impl to compare and 3100 increment the value. Remove SFINAE constraint. 3101 31022020-09-11 Jonathan Wakely <jwakely@redhat.com> 3103 3104 * include/bits/regex_error.h (__throw_regex_error): Fix 3105 parameter declaration and use reserved attribute names. 3106 31072020-09-11 Mike Crowe <mac@mcrowe.com> 3108 3109 * include/std/condition_variable (condition_variable::wait_until): 3110 Convert delta to steady_clock duration before adding to current 3111 steady_clock time to avoid rounding errors described in PR68519. 3112 (condition_variable::wait_for): Simplify calculation of absolute 3113 time by using chrono::__detail::ceil in both overloads. 3114 * testsuite/30_threads/condition_variable/members/68519.cc: 3115 (test_wait_for): Renamed from test01. Replace unassigned val 3116 variable with constant false. Reduce scope of mx and cv 3117 variables to just test_wait_for function. 3118 (test_wait_until): Add new test case. 3119 31202020-09-11 Mike Crowe <mac@mcrowe.com> 3121 3122 PR libstdc++/91486 3123 * include/bits/atomic_futex.h 3124 (__atomic_futex_unsigned::_M_load_when_equal_for) 3125 (__atomic_futex_unsigned::_M_load_when_equal_until): Use 3126 __detail::ceil to convert delta to the reference clock 3127 duration type to avoid resolution problems. 3128 * include/std/chrono (__detail::ceil): Move implementation 3129 of std::chrono::ceil into private namespace so that it's 3130 available to pre-C++17 code. 3131 * testsuite/30_threads/async/async.cc (test_pr91486): 3132 Test __atomic_futex_unsigned::_M_load_when_equal_for. 3133 31342020-09-11 Mike Crowe <mac@mcrowe.com> 3135 3136 * include/bits/atomic_futex.h 3137 (__atomic_futex_unsigned::_M_load_when_equal_until): Add 3138 loop on generic _Clock to check the timeout against _Clock 3139 again after _M_load_when_equal_until returns indicating a 3140 timeout. 3141 * testsuite/30_threads/async/async.cc: Invent slow_clock 3142 that runs at an eleventh of steady_clock's speed. Use it 3143 to test the user-supplied-clock variant of 3144 __atomic_futex_unsigned::_M_load_when_equal_until works 3145 generally with test03 and loops correctly when the timeout 3146 time hasn't been reached in test04. 3147 31482020-09-11 Mike Crowe <mac@mcrowe.com> 3149 3150 PR libstdc++/93542 3151 * include/bits/atomic_futex.h (__atomic_futex_unsigned): Change 3152 __clock_t typedef to use steady_clock so that unknown clocks are 3153 synced to it rather than system_clock. Change existing __clock_t 3154 overloads of _M_load_and_text_until_impl and 3155 _M_load_when_equal_until to use system_clock explicitly. Remove 3156 comment about DR 887 since these changes address that problem as 3157 best as we currently able. 3158 31592020-09-11 Mike Crowe <mac@mcrowe.com> 3160 3161 PR libstdc++/93542 3162 * config/abi/pre/gnu.ver: Update for addition of 3163 __atomic_futex_unsigned_base::_M_futex_wait_until_steady. 3164 * include/bits/atomic_futex.h (__atomic_futex_unsigned_base): 3165 Add comments to clarify that _M_futex_wait_until and 3166 _M_load_and_test_until use CLOCK_REALTIME. 3167 (__atomic_futex_unsigned_base::_M_futex_wait_until_steady) 3168 (__atomic_futex_unsigned_base::_M_load_and_text_until_steady): 3169 New member functions that use CLOCK_MONOTONIC. 3170 (__atomic_futex_unsigned_base::_M_load_and_test_until_impl) 3171 (__atomic_futex_unsigned_base::_M_load_when_equal_until): Add 3172 overloads that accept a steady_clock time_point and use the 3173 new member functions. 3174 * src/c++11/futex.cc: Include headers required for 3175 clock_gettime. 3176 (futex_clock_monotonic_flag): New constant to tell futex to 3177 use CLOCK_MONOTONIC to match existing futex_clock_realtime_flag. 3178 (futex_clock_monotonic_unavailable): New global to store the 3179 result of trying to use CLOCK_MONOTONIC. 3180 (__atomic_futex_unsigned_base::_M_futex_wait_until_steady): Add 3181 new variant of _M_futex_wait_until that uses CLOCK_MONOTONIC to 3182 support waiting using steady_clock. 3183 31842020-09-11 Mike Crowe <mac@mcrowe.com> 3185 3186 * src/c++11/futex.cc: Add new constants for required futex 3187 flags. Add futex_clock_realtime_unavailable flag to store 3188 result of trying to use FUTEX_CLOCK_REALTIME. 3189 (__atomic_futex_unsigned_base::_M_futex_wait_until): Try to 3190 use FUTEX_WAIT_BITSET with FUTEX_CLOCK_REALTIME and only 3191 fall back to using gettimeofday and FUTEX_WAIT if that's not 3192 supported. 3193 31942020-09-11 Mike Crowe <mac@mcrowe.com> 3195 3196 * testsuite/30_threads/async/async.cc (test02): Test steady_clock 3197 with std::future::wait_until. 3198 (test03): Add new test templated on clock type waiting for future 3199 associated with async to resolve. 3200 (main): Call test03 to test both system_clock and steady_clock. 3201 32022020-09-11 Torbj��rn SVENSSON <torbjorn.svensson@st.com> 3203 Christophe Lyon <christophe.lyon@linaro.org> 3204 3205 * libsupc++/eh_call.cc: Avoid warning with -fno-exceptions. 3206 32072020-09-11 Torbj��rn SVENSSON <torbjorn.svensson@st.com> 3208 Christophe Lyon <christophe.lyon@linaro.org> 3209 3210 * libsupc++/eh_call.cc: Avoid warning with -fno-exceptions. 3211 32122020-09-11 Christophe Lyon <christophe.lyon@linaro.org> 3213 3214 * include/bits/regex_error.h: Avoid warning with -fno-exceptions. 3215 32162020-09-10 Jonathan Wakely <jwakely@redhat.com> 3217 3218 * include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all): 3219 Add casts to compare types of the same signedness. 3220 32212020-09-10 Jonathan Wakely <jwakely@redhat.com> 3222 3223 * include/bits/ranges_algobase.h (__equal_fn): Remove unused 3224 typedef. 3225 32262020-09-10 Jonathan Wakely <jwakely@redhat.com> 3227 3228 * include/std/version (__cpp_lib_array_constexpr): 3229 (__cpp_lib_constexpr_char_traits): Only define C++17 value when 3230 compiling C++17. 3231 32322020-09-10 Jonathan Wakely <jwakely@redhat.com> 3233 3234 * include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&)) 3235 (operator=(auto_ptr&&)): Add diagnostic pragmas to suppress 3236 warnings for uses of std::auto_ptr. 3237 * include/experimental/type_traits (is_literal_type_v): 3238 Likewise, for use of std::is_literal_type. 3239 * include/std/condition_variable (condition_variable_any::_Unlock): 3240 Likewise, for use of std::uncaught_exception. 3241 32422020-09-10 Jonathan Wakely <jwakely@redhat.com> 3243 3244 * include/bits/fs_path.h (path::_List::type()): Avoid narrowing 3245 conversion. 3246 * include/std/chrono (operator+(const year&, const years&)): 3247 Likewise. 3248 32492020-09-10 Jonathan Wakely <jwakely@redhat.com> 3250 3251 * include/bits/codecvt.h (codecvt_byname): Remove names of 3252 unused parameters. 3253 32542020-09-10 Jonathan Wakely <jwakely@redhat.com> 3255 3256 * include/bits/locale_facets_nonio.tcc: Adjust whitespace. 3257 32582020-09-10 Krystian Ku��niarek <krystian.kuzniarek@gmail.com> 3259 3260 * include/c_global/cmath (__lerp): Avoid -Wparentheses warnings. 3261 32622020-09-10 Krystian Ku��niarek <krystian.kuzniarek@gmail.com> 3263 3264 * include/bits/atomic_base.h: Fix -Wunused-variable 3265 warnings. 3266 * include/ext/new_allocator.h: Fix -Wunused-parameter 3267 warnings. 3268 32692020-09-10 Jonathan Wakely <jwakely@redhat.com> 3270 3271 * include/bits/stl_iterator.h (counted_iterator): Add assertions 3272 to check preconditions added by LWG 3472. 3273 32742020-09-10 Jonathan Wakely <jwakely@redhat.com> 3275 3276 PR libstdc++/94160 3277 * src/c++17/memory_resource.cc (munge_options): Round 3278 max_blocks_per_chunk to a multiple of four. 3279 (__pool_resource::_M_alloc_pools()): Simplify slightly. 3280 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: 3281 Check that valid pointers are returned when small values are 3282 used for max_blocks_per_chunk. 3283 32842020-09-10 Jonathan Wakely <jwakely@redhat.com> 3285 3286 PR libstdc++/96942 3287 * include/std/memory_resource (monotonic_buffer_resource::do_allocate): 3288 Use __builtin_expect when checking if a new buffer needs to be 3289 allocated from the upstream resource, and for checks for edge 3290 cases like zero sized buffers and allocations. 3291 * src/c++17/memory_resource.cc (aligned_size): New class template. 3292 (aligned_ceil): New helper function to round up to a given 3293 alignment. 3294 (monotonic_buffer_resource::chunk): Replace _M_size and _M_align 3295 with an aligned_size member. Remove _M_canary member. Change _M_next 3296 to pointer instead of unaligned buffer. 3297 (monotonic_buffer_resource::chunk::allocate): Round up to multiple 3298 of 64 instead of to power of two. Check for size overflow. Remove 3299 redundant check for minimum required alignment. 3300 (monotonic_buffer_resource::chunk::release): Adjust for changes 3301 to data members. 3302 (monotonic_buffer_resource::_M_new_buffer): Use aligned_ceil. 3303 (big_block): Replace _M_size and _M_align with aligned_size 3304 member. 3305 (big_block::big_block): Check for size overflow. 3306 (big_block::size, big_block::align): Adjust to use aligned_size. 3307 (big_block::alloc_size): Use aligned_ceil. 3308 (munge_options): Use aligned_ceil. 3309 (__pool_resource::allocate): Use big_block::align for alignment. 3310 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Check 3311 upstream resource gets expected values for impossible sizes. 3312 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: 3313 Likewise. Adjust checks for expected alignment in existing test. 3314 33152020-09-07 Jonathan Wakely <jwakely@redhat.com> 3316 3317 * include/std/chrono (duration::_S_gcd): Use invariant that 3318 neither value is zero initially. 3319 33202020-09-07 Jonathan Wakely <jwakely@redhat.com> 3321 3322 * include/std/ranges (__box): Simplify constraints as per LWG 3477. 3323 33242020-09-03 Jonathan Wakely <jwakely@redhat.com> 3325 3326 PR libstdc++/96592 3327 * include/std/tuple (_TupleConstraints<true, T...>): Use 3328 alternative is_constructible instead of std::is_constructible. 3329 * testsuite/20_util/tuple/cons/96592.cc: New test. 3330 33312020-09-03 Jonathan Wakely <jwakely@redhat.com> 3332 3333 * include/std/chrono (duration::_S_gcd): Use iterative algorithm 3334 for C++14 and later. 3335 * include/std/numeric (__detail::__gcd): Replace recursive 3336 Euclidean algorithm with iterative version of binary GCD algorithm. 3337 * testsuite/26_numerics/gcd/1.cc: Test additional inputs. 3338 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines. 3339 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. 3340 * testsuite/experimental/numeric/gcd.cc: Test additional inputs. 3341 * testsuite/26_numerics/gcd/2.cc: New test. 3342 33432020-09-02 Jonathan Wakely <jwakely@redhat.com> 3344 3345 PR libstdc++/92978 3346 * testsuite/experimental/numeric/92978.cc: Use experimental::lcm 3347 not std::lcm. 3348 33492020-09-02 Jonathan Wakely <jwakely@redhat.com> 3350 3351 PR libstdc++/96851 3352 * include/bits/cpp_type_traits.h (__is_memcmp_ordered): 3353 New trait that says if memcmp can be used for ordering. 3354 (__is_memcmp_ordered_with): Likewise, for two types. 3355 * include/bits/deque.tcc (__lex_cmp_dit): Use new traits 3356 instead of __is_byte and __numeric_traits. 3357 (__lexicographical_compare_aux1): Likewise. 3358 * include/bits/ranges_algo.h (__lexicographical_compare_fn): 3359 Likewise. 3360 * include/bits/stl_algobase.h (__lexicographical_compare_aux1) 3361 (__is_byte_iter): Likewise. 3362 * include/std/array (operator<=>): Likewise. Only use memcmp 3363 when std::is_constant_evaluated() is false. 3364 * testsuite/23_containers/array/comparison_operators/96851.cc: 3365 New test. 3366 * testsuite/23_containers/array/tuple_interface/get_neg.cc: 3367 Adjust dg-error line numbers. 3368 33692020-09-02 Jonathan Wakely <jwakely@redhat.com> 3370 3371 * include/bits/stl_iterator.h: Include <bits/exception_defines.h> 3372 for definitions of __try, __catch and __throw_exception_again. 3373 (counted_iterator::operator++(int)): Use __throw_exception_again 3374 instead of throw. 3375 * libsupc++/new: Include <bits/exception.h> not <exception>. 3376 * libsupc++/new_opvnt.cc: Include <bits/exception_defines.h>. 3377 * testsuite/18_support/destroying_delete.cc: Include 3378 <type_traits> for std::is_same_v definition. 3379 * testsuite/20_util/variant/index_type.cc: Qualify size_t. 3380 33812020-09-01 Jonathan Wakely <jwakely@redhat.com> 3382 3383 PR libstdc++/71960 3384 * include/bits/c++config (__glibcxx_assert_impl): Remove 3385 do-while so that uses of the macro need to add it. 3386 (__glibcxx_assert): Rename macro for runtime assertions 3387 to __glibcxx_assert_2. 3388 (__glibcxx_assert_1): Define macro for constexpr assertions. 3389 (__glibcxx_assert): Define macro for constexpr and runtime 3390 assertions. 3391 * include/bits/range_access.h (ranges::advance): Remove 3392 redundant precondition checks during constant evaluation. 3393 * include/parallel/base.h (_GLIBCXX_PARALLEL_ASSERT): Always 3394 use do-while in macro expansion. 3395 * include/std/ranges (iota_view::iota_view(W, B)): Remove 3396 redundant braces. 3397 33982020-09-01 Jonathan Wakely <jwakely@redhat.com> 3399 3400 * include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)): 3401 New helper function for finding GCD of two positive intmax_t 3402 values. 3403 (duration::__divide): New helper alias for dividing one period 3404 by another. 3405 (duration::__is_harmonic): Use __divide not ratio_divide. 3406 (duration(const duration<R2, P2>&)): Require the duration rep 3407 types to be convertible. 3408 * testsuite/20_util/duration/cons/dr2094.cc: New test. 3409 * testsuite/20_util/duration/requirements/reduced_period.cc: 3410 Fix definition of unused member functions in test type. 3411 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: 3412 Adjust expected errors. 3413 34142020-08-29 Jonathan Wakely <jwakely@redhat.com> 3415 3416 * include/std/numeric (__detail::__absu(bool)): Make deleted 3417 function a function template, so it will be chosen for calls 3418 with an explicit template argument list. 3419 * testsuite/26_numerics/gcd/gcd_neg.cc: Add dg-prune-output. 3420 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. 3421 34222020-08-28 Jonathan Wakely <jwakely@redhat.com> 3423 3424 * include/std/chrono (common_type): Fix partial specializations 3425 for a single duration type to use the common_type of the rep. 3426 (duration::operator+, duration::operator-): Fix return types 3427 to also use the common_type of the rep. 3428 * testsuite/20_util/duration/requirements/reduced_period.cc: 3429 Check duration using a rep that has common_type specialized. 3430 34312020-08-28 Jonathan Wakely <jwakely@redhat.com> 3432 3433 PR libstdc++/92978 3434 * include/std/numeric (__abs_integral): Replace with ... 3435 (__detail::__absu): New function template that returns an 3436 unsigned type, guaranteeing it can represent the most 3437 negative signed value. 3438 (__detail::__gcd, __detail::__lcm): Require arguments to 3439 be unsigned and therefore already non-negative. 3440 (gcd, lcm): Convert arguments to absolute value as unsigned 3441 type before calling __detail::__gcd or __detail::__lcm. 3442 * include/experimental/numeric (gcd, lcm): Likewise. 3443 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected 3444 errors. 3445 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. 3446 * testsuite/26_numerics/gcd/92978.cc: New test. 3447 * testsuite/26_numerics/lcm/92978.cc: New test. 3448 * testsuite/experimental/numeric/92978.cc: New test. 3449 34502020-08-27 Jonathan Wakely <jwakely@redhat.com> 3451 3452 * include/std/chrono (__duration_common_type): Ensure the 3453 reduced ratio is used. Remove unused partial specialization 3454 using __failure_type. 3455 (common_type): Pass reduced ratios to __duration_common_type. 3456 Add partial specializations for simple cases involving a single 3457 duration or time_point type. 3458 (duration::period): Use reduced ratio. 3459 (duration::operator+(), duration::operator-()): Return duration 3460 type using the reduced ratio. 3461 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: 3462 Adjust expected errors. 3463 * testsuite/20_util/duration/requirements/reduced_period.cc: New test. 3464 34652020-08-27 Patrick Palka <ppalka@redhat.com> 3466 3467 * include/std/chrono (year_month::operator+): Properly handle a 3468 month value of 0 by casting the month value to int before 3469 subtracting 1 from it so that the difference is sign-extended in 3470 the subsequent addition. 3471 * testsuite/std/time/year_month/1.cc: Test adding months to a 3472 year_month whose month component is below or above the 3473 normalized range of [1,12]. 3474 34752020-08-27 Patrick Palka <ppalka@redhat.com> 3476 3477 * include/std/chrono 3478 (__detail::__months_years_conversion_disambiguator): Define. 3479 (year_month::operator+=): Templatize the 'months'-based overload 3480 so that the 'years'-based overload is selected in case of 3481 equally-ranked implicit conversion sequences to both 'months' 3482 and 'years' from the supplied argument. 3483 (year_month::operator-=): Likewise. 3484 (year_month::operator+): Likewise. 3485 (year_month::operator-): Likewise. 3486 (year_month_day::operator+=): Likewise. 3487 (year_month_day::operator-=): Likewise. 3488 (year_month_day::operator+): Likewise. 3489 (year_month_day::operator-): Likewise. 3490 (year_month_day_last::operator+=): Likewise. 3491 (year_month_day_last::operator-=): Likewise. 3492 (year_month_day_last::operator+): Likewise 3493 (year_month_day_last::operator-): Likewise. 3494 (year_month_day_weekday::operator+=): Likewise 3495 (year_month_day_weekday::operator-=): Likewise. 3496 (year_month_day_weekday::operator+): Likewise. 3497 (year_month_day_weekday::operator-): Likewise. 3498 (year_month_day_weekday_last::operator+=): Likewise 3499 (year_month_day_weekday_last::operator-=): Likewise. 3500 (year_month_day_weekday_last::operator+): Likewise. 3501 (year_month_day_weekday_last::operator-): Likewise. 3502 (testsuite/std/time/year_month/2.cc): New test. 3503 (testsuite/std/time/year_month_day/2.cc): New test. 3504 (testsuite/std/time/year_month_day_last/2.cc): New test. 3505 (testsuite/std/time/year_month_weekday/2.cc): New test. 3506 (testsuite/std/time/year_month_weekday_last/2.cc): New test. 3507 * testsuite/std/time/year_month/2.cc: New file. 3508 * testsuite/std/time/year_month_day/2.cc: New file. 3509 * testsuite/std/time/year_month_day_last/2.cc: New file. 3510 * testsuite/std/time/year_month_weekday/2.cc: New file. 3511 * testsuite/std/time/year_month_weekday_last/2.cc: New file. 3512 35132020-08-27 Patrick Palka <ppalka@redhat.com> 3514 3515 PR libstdc++/95322 3516 * include/std/ranges (transform_view::sentinel::__distance_from): 3517 Give this a deduced return type. 3518 (transform_view::sentinel::operator-): Adjust the return type so 3519 that it's based on the constness of the iterator rather than 3520 that of the sentinel. 3521 * testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488. 3522 35232020-08-27 Patrick Palka <ppalka@redhat.com> 3524 3525 * include/std/ranges (elements_view::begin): Adjust constraints. 3526 (elements_view::end): Likewise. 3527 (elements_view::_Sentinel::operator==): Templatize to take both 3528 _Iterator<true> and _Iterator<false>. 3529 (elements_view::_Sentinel::operator-): Likewise. 3530 * testsuite/std/ranges/adaptors/elements.cc: Add testcase for 3531 the example from P1994R1. 3532 * testsuite/std/ranges/adaptors/lwg3406.cc: New test. 3533 35342020-08-27 Patrick Palka <ppalka@redhat.com> 3535 3536 * include/std/ranges (elements_view::end): Replace these two 3537 overloads with four new overloads. 3538 (elements_view::_Iterator::operator==): Remove. 3539 (elements_view::_Iterator::operator-): Likewise. 3540 (elements_view::_Sentinel): Define. 3541 35422020-08-26 Jonathan Wakely <jwakely@redhat.com> 3543 3544 * include/std/tuple (_Tuple_impl): Whitespaces changes for 3545 consistent indentation. Also use __enable_if_t alias template. 3546 35472020-08-26 Jonathan Wakely <jwakely@redhat.com> 3548 3549 PR libstdc++/96803 3550 * include/std/tuple 3551 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)): 3552 Replace parameter pack with a type parameter and a pack and pass 3553 the first type to __use_alloc. 3554 * testsuite/20_util/tuple/cons/96803.cc: New test. 3555 35562020-08-26 Patrick Palka <ppalka@redhat.com> 3557 3558 * include/std/chrono (year_month_weekday::operator==): Compare 3559 weekday_indexed instead of weekday. 3560 * testsuite/std/time/year_month_weekday/1.cc: Augment testcase. 3561 35622020-08-26 Jonathan Wakely <jwakely@redhat.com> 3563 3564 * include/bits/hashtable_policy.h (_Hash_code_base): Change 3565 index of _Hashtable_ebo_helper base class. 3566 * testsuite/23_containers/unordered_map/dup_types.cc: New test. 3567 35682020-08-26 Jonathan Wakely <jwakely@redhat.com> 3569 3570 PR libstdc++/71960 3571 * include/experimental/string_view (basic_string_view): 3572 Enable debug assertions. 3573 * include/std/string_view (basic_string_view): 3574 Likewise. 3575 35762020-08-26 Fran��ois Dumont <fdumont@gcc.gnu.org> 3577 3578 * include/bits/hashtable_policy.h (_Hashtable<>): Rename _H1 into _Hash 3579 _H2 into _RangeHash and _Hash into _Unused. 3580 (_Hastable_base<>): Likewise. 3581 (_Map_base<>): Likewise. 3582 (_Insert_base<>): Likewise. 3583 (_Insert<>): Likewise. 3584 (_Rehash_base<>): Likewise. 3585 (_Local_iterator_base<>): Likewise. 3586 (_Hash_code_base<>): Likewise. 3587 (_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false>): 3588 Remove. 3589 (_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>): 3590 Remove. 3591 (_Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHas, _Unused, 3592 bool>): Remove _Hashtable_ebo_helper<2, _RangeHash> base type.. 3593 (_Hash_code_base<>::_M_bucket_index(const _Key&, __hash_code, size_t)): 3594 Replace by... 3595 (_Hash_code_base<>::_M_bucket_index(__hash_code, size_t)): ...this. 3596 (_Local_iterator<>): Remove _H1 and _H2 template parameters. 3597 (_Local_const_iterator<>): Likewise. 3598 (_Equality<>): Likewise. 3599 (_Map_base<>::operator[](const key_type&): Adapt. 3600 (_Map_base<>::operator[](key_type&&): Adapt. 3601 (_Identity::operator()): Add noexcept. 3602 (_Select1st::operator()): Likewise. 3603 (_Hash_code_base<>): Remove _Hashtable_ebo_helper<0, _ExtractKey> base 3604 type. 3605 (_Hash_code_base::_M_extract): Remove. 3606 * include/bits/hashtable.h (_Hashtable<>): Remove _H1 and _H2 template 3607 parameters. Remove _ExtractKey from constructors. 3608 (_Hashtable<>::_M_insert_unique_node(const key_type&, size_t, 3609 __hash_code, __node_type*, size_t)): Replace by... 3610 (_Hashtable<>::_M_insert_unique_node(size_t, __hash_code, 3611 __node_type*, size_t)): ...this. 3612 (_Hashtable<>::_M_insert_muti_node(__node_type*, const key_type&, 3613 __hash_code, __node_type*)): Replace by... 3614 (_Hashtable<>::_M_insert_multi_node(__node_type*, __hash_code, 3615 __node_type*)): ...this. 3616 (_Hashtable<>::__key_extract): Remove. 3617 * include/bits/node_handle.h: Adapt. 3618 36192020-08-25 Jonathan Wakely <jwakely@redhat.com> 3620 3621 * testsuite/21_strings/debug/iterator_self_move_assign_neg.cc: Removed. 3622 * testsuite/21_strings/debug/self_move_assign_neg.cc: Removed. 3623 * testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc: Removed. 3624 * testsuite/23_containers/deque/debug/self_move_assign_neg.cc: Removed. 3625 * testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc: Removed. 3626 * testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc: Removed. 3627 * testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc: Removed. 3628 * testsuite/23_containers/list/debug/self_move_assign_neg.cc: Removed. 3629 * testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc: Removed. 3630 * testsuite/23_containers/map/debug/self_move_assign_neg.cc: Removed. 3631 * testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc: Removed. 3632 * testsuite/23_containers/multimap/debug/self_move_assign_neg.cc: Removed. 3633 * testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc: Removed. 3634 * testsuite/23_containers/multiset/debug/self_move_assign_neg.cc: Removed. 3635 * testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc: Removed. 3636 * testsuite/23_containers/set/debug/self_move_assign_neg.cc: Removed. 3637 * testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc: Removed. 3638 * testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc: Removed. 3639 * testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc: 3640 Removed. 3641 * testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc: Removed. 3642 * testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc: 3643 Removed. 3644 * testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc: Removed. 3645 * testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc: Removed. 3646 * testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc: Removed. 3647 * testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc: Removed. 3648 * testsuite/23_containers/vector/debug/self_move_assign_neg.cc: Removed. 3649 36502020-08-25 Patrick Palka <ppalka@redhat.com> 3651 3652 * include/std/chrono (year_month_weekday::ok): Fix assert. 3653 36542020-08-25 Jonathan Wakely <jwakely@redhat.com> 3655 3656 * include/std/future (future, shared_future. promise): Add 3657 is_destructible assertion (LWG 3466). Adjust string-literal for 3658 !is_array and !is_function assertions. 3659 * testsuite/30_threads/future/requirements/lwg3458.cc: Check 3660 types with no accessible destructor. Adjust expected errors. 3661 * testsuite/30_threads/promise/requirements/lwg3466.cc: 3662 Likewise. 3663 * testsuite/30_threads/shared_future/requirements/lwg3458.cc: 3664 Likewise. 3665 36662020-08-25 Patrick Palka <ppalka@redhat.com> 3667 Ed Smith-Rowland <3dw4rd@verizon.net> 3668 Jonathan Wakely <jwakely@redhat.com> 3669 3670 * include/std/chrono (time_point::operator++) 3671 (time_point::operator--): Define. 3672 (utc_clock, tai_clock, gps_clock): Forward declare. 3673 (utc_time, utc_seconds, tai_time, tai_seconds, gps_time) 3674 (gps_seconds): Define. 3675 (is_clock<utc_clock>, is_clock<tai_clock>, is_clock<gps_clock>) 3676 (is_clock_v<utc_clock>, is_clock_v<tai_clock>) 3677 (is_clock_v<gps_clock>): Define these specializations. 3678 (leap_second_info): Define. 3679 (day, month, year, weekday, weekday_indexed) 3680 (weekday_last, month_day, month_day_last, month_weekday) 3681 (month_weekday_last, year_month, year_month_day) 3682 (year_month_day_last, year_month_weekday, year_month_weekday_last): 3683 Declare and later define. 3684 (last_spec, last, __detail::__days_per_month) 3685 (__detail::__days_per_month, __detail::__last_day): Define. 3686 (January, February, March, April, May, June, July, August) 3687 (September, October, November, December, Sunday, Monday, Tuesday) 3688 (Wednesday, Thursday, Friday, Saturday): Define. 3689 (weekday::operator[]): Define out-of-line. 3690 (year_month_day::_S_from_days, year_month_day::M_days_since_epoch): 3691 Likewise. 3692 (year_month_day::year_month_day, year_month_day::ok): Likewise. 3693 (__detail::__pow10, hh_mm_ss): Define. 3694 (literals::chrono_literals::operator""d) 3695 (literals::chrono_literals::operator""y): Define. 3696 (is_am, is_pm, make12, make24): Define. 3697 * testsuite/20_util/time_point/4.cc: New test. 3698 * testsuite/std/time/day/1.cc: New test. 3699 * testsuite/std/time/hh_mm_ss/1.cc: New test. 3700 * testsuite/std/time/is_am/1.cc: New test. 3701 * testsuite/std/time/is_pm/1.cc: New test. 3702 * testsuite/std/time/make12/1.cc: New test. 3703 * testsuite/std/time/make24/1.cc: New test. 3704 * testsuite/std/time/month/1.cc: New test. 3705 * testsuite/std/time/month_day/1.cc: New test. 3706 * testsuite/std/time/month_day_last/1.cc: New test. 3707 * testsuite/std/time/month_weekday/1.cc: New test. 3708 * testsuite/std/time/month_weekday_last/1.cc: New test. 3709 * testsuite/std/time/weekday/1.cc: New test. 3710 * testsuite/std/time/weekday_indexed/1.cc: New test. 3711 * testsuite/std/time/weekday_last/1.cc: New test. 3712 * testsuite/std/time/year/1.cc: New test. 3713 * testsuite/std/time/year_month/1.cc: New test. 3714 * testsuite/std/time/year_month_day/1.cc: New test. 3715 * testsuite/std/time/year_month_day_last/1.cc: New test. 3716 * testsuite/std/time/year_month_weekday/1.cc: New test. 3717 * testsuite/std/time/year_month_weekday_last/1.cc: New test. 3718 37192020-08-24 Jonathan Wakely <jwakely@redhat.com> 3720 3721 * include/std/ranges (join_view): Add deduction guide (LWG 3474). 3722 * testsuite/std/ranges/adaptors/join_lwg3474.cc: New test. 3723 37242020-08-24 Jonathan Wakely <jwakely@redhat.com> 3725 3726 * include/bits/iterator_concepts.h (indirectly_readable): Add 3727 partial specializations to resolve ambiguities (LWG 3446). 3728 * testsuite/24_iterators/associated_types/readable.traits.cc: 3729 Check types with both value_type and element_type. 3730 37312020-08-24 Jonathan Wakely <jwakely@redhat.com> 3732 3733 * include/std/ranges (ranges::iota_view::size()): Perform all 3734 calculations in the right unsigned types. 3735 * testsuite/std/ranges/iota/size.cc: New test. 3736 37372020-08-24 Jonathan Wakely <jwakely@redhat.com> 3738 3739 PR libstdc++/96766 3740 * include/std/variant (_Variant_storage): Replace implicit 3741 conversions from size_t to __index_type with explicit casts. 3742 37432020-08-24 Jonathan Wakely <jwakely@redhat.com> 3744 3745 * testsuite/30_threads/packaged_task/cons/alloc.cc: Run for 3746 C++11 and skip for C++17 or later. 3747 37482020-08-24 Corentin Gay <gay@adacore.com> 3749 3750 * testsuite/20_util/shared_ptr/atomic/3.cc: Do not require POSIX 3751 threads and add -pthread only on targets supporting them. 3752 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: 3753 Likewise. 3754 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: 3755 Likewise. 3756 * testsuite/30_threads/async/42819.cc: Likewise. 3757 * testsuite/30_threads/async/49668.cc: Likewise. 3758 * testsuite/30_threads/async/54297.cc: Likewise. 3759 * testsuite/30_threads/async/any.cc: Likewise. 3760 * testsuite/30_threads/async/async.cc: Likewise. 3761 * testsuite/30_threads/async/except.cc: Likewise. 3762 * testsuite/30_threads/async/launch.cc: Likewise. 3763 * testsuite/30_threads/async/lwg2021.cc: Likewise. 3764 * testsuite/30_threads/async/sync.cc: Likewise. : Likewise. 3765 * testsuite/30_threads/call_once/39909.cc: Likewise. 3766 * testsuite/30_threads/call_once/49668.cc: Likewise. 3767 * testsuite/30_threads/call_once/60497.cc: Likewise. 3768 * testsuite/30_threads/call_once/call_once1.cc: Likewise. 3769 * testsuite/30_threads/call_once/dr2442.cc: Likewise. 3770 * testsuite/30_threads/condition_variable/54185.cc: Likewise. 3771 * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. 3772 * testsuite/30_threads/condition_variable/members/1.cc: Likewise. 3773 * testsuite/30_threads/condition_variable/members/2.cc: Likewise. 3774 * testsuite/30_threads/condition_variable/members/3.cc: Likewise. 3775 * testsuite/30_threads/condition_variable/members/53841.cc: Likewise. 3776 * testsuite/30_threads/condition_variable/members/68519.cc: Likewise. 3777 * testsuite/30_threads/condition_variable/native_handle/typesizes.cc: 3778 Likewise. 3779 * testsuite/30_threads/condition_variable_any/50862.cc: Likewise. 3780 * testsuite/30_threads/condition_variable_any/53830.cc: Likewise. 3781 * testsuite/30_threads/condition_variable_any/cond.cc: Likewise. 3782 * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. 3783 * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise. 3784 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise. 3785 * testsuite/30_threads/future/cons/move.cc: Likewise. 3786 * testsuite/30_threads/future/members/45133.cc: Likewise. 3787 * testsuite/30_threads/future/members/get.cc: Likewise. 3788 * testsuite/30_threads/future/members/get2.cc: Likewise. 3789 * testsuite/30_threads/future/members/share.cc: Likewise. 3790 * testsuite/30_threads/future/members/valid.cc: Likewise. 3791 * testsuite/30_threads/future/members/wait.cc: Likewise. 3792 * testsuite/30_threads/future/members/wait_for.cc: Likewise. 3793 * testsuite/30_threads/future/members/wait_until.cc: Likewise. 3794 * testsuite/30_threads/lock/1.cc: Likewise. 3795 * testsuite/30_threads/lock/2.cc: Likewise. 3796 * testsuite/30_threads/lock/3.cc: Likewise. 3797 * testsuite/30_threads/lock/4.cc: Likewise. 3798 * testsuite/30_threads/mutex/cons/1.cc: Likewise. 3799 * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. 3800 * testsuite/30_threads/mutex/lock/1.cc: Likewise. 3801 * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. 3802 * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise. 3803 * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. 3804 * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. 3805 * testsuite/30_threads/mutex/unlock/1.cc: Likewise. 3806 * testsuite/30_threads/mutex/unlock/2.cc: Likewise. 3807 * testsuite/30_threads/packaged_task/49668.cc: Likewise. 3808 * testsuite/30_threads/packaged_task/60564.cc: Likewise. 3809 * testsuite/30_threads/packaged_task/cons/1.cc: Likewise. 3810 * testsuite/30_threads/packaged_task/cons/2.cc: Likewise. 3811 * testsuite/30_threads/packaged_task/cons/3.cc: Likewise. 3812 * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise. 3813 * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise. 3814 * testsuite/30_threads/packaged_task/cons/move.cc: Likewise. 3815 * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise. 3816 * testsuite/30_threads/packaged_task/members/at_thread_exit.cc: 3817 Likewise. 3818 * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise. 3819 * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise. 3820 * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise. 3821 * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise. 3822 * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise. 3823 * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise. 3824 * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise. 3825 * testsuite/30_threads/packaged_task/members/reset.cc: Likewise. 3826 * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise. 3827 * testsuite/30_threads/packaged_task/members/swap.cc: Likewise. 3828 * testsuite/30_threads/packaged_task/members/valid.cc: Likewise. 3829 * testsuite/30_threads/promise/60966.cc: Likewise. 3830 * testsuite/30_threads/promise/cons/1.cc: Likewise. 3831 * testsuite/30_threads/promise/cons/alloc.cc: Likewise. 3832 * testsuite/30_threads/promise/cons/move.cc: Likewise. 3833 * testsuite/30_threads/promise/cons/move_assign.cc: Likewise. 3834 * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise. 3835 * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise. 3836 * testsuite/30_threads/promise/members/get_future.cc: Likewise. 3837 * testsuite/30_threads/promise/members/get_future2.cc: Likewise. 3838 * testsuite/30_threads/promise/members/set_exception.cc: Likewise. 3839 * testsuite/30_threads/promise/members/set_exception2.cc: Likewise. 3840 * testsuite/30_threads/promise/members/set_value.cc: Likewise. 3841 * testsuite/30_threads/promise/members/set_value2.cc: Likewise. 3842 * testsuite/30_threads/promise/members/set_value3.cc: Likewise. 3843 * testsuite/30_threads/promise/members/swap.cc: Likewise. 3844 * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. 3845 * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: 3846 Likewise. 3847 * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. 3848 * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. 3849 * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: 3850 Likewise. 3851 * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. 3852 * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. 3853 * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. 3854 * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise. 3855 * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. 3856 * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: 3857 Likewise. 3858 * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. 3859 * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. 3860 * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: 3861 Likewise. 3862 * testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc: 3863 Likewise. 3864 * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. 3865 * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. 3866 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: 3867 Likewise. 3868 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: 3869 Likewise. 3870 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: 3871 Likewise. 3872 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: 3873 Likewise. 3874 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: 3875 Likewise. 3876 * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. 3877 * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise. 3878 * testsuite/30_threads/shared_future/cons/move.cc: Likewise. 3879 * testsuite/30_threads/shared_future/members/45133.cc: Likewise. 3880 * testsuite/30_threads/shared_future/members/get.cc: Likewise. 3881 * testsuite/30_threads/shared_future/members/get2.cc: Likewise. 3882 * testsuite/30_threads/shared_future/members/valid.cc: Likewise. 3883 * testsuite/30_threads/shared_future/members/wait.cc: Likewise. 3884 * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise. 3885 * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise. 3886 * testsuite/30_threads/shared_lock/cons/1.cc: Likewise. 3887 * testsuite/30_threads/shared_lock/cons/2.cc: Likewise. 3888 * testsuite/30_threads/shared_lock/cons/3.cc: Likewise. 3889 * testsuite/30_threads/shared_lock/cons/4.cc: Likewise. 3890 * testsuite/30_threads/shared_lock/cons/5.cc: Likewise. 3891 * testsuite/30_threads/shared_lock/cons/6.cc: Likewise. 3892 * testsuite/30_threads/shared_lock/locking/1.cc: Likewise. 3893 * testsuite/30_threads/shared_lock/locking/2.cc: Likewise. 3894 * testsuite/30_threads/shared_lock/locking/3.cc: Likewise. 3895 * testsuite/30_threads/shared_lock/locking/4.cc: Likewise. 3896 * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise. 3897 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise. 3898 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise. 3899 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise. 3900 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise. 3901 * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise. 3902 * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise. 3903 * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise. 3904 * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise. 3905 * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise. 3906 * testsuite/30_threads/this_thread/1.cc: Likewise. 3907 * testsuite/30_threads/this_thread/sleep_for-mt.cc: Likewise. 3908 * testsuite/30_threads/this_thread/sleep_until-mt.cc: Likewise. 3909 * testsuite/30_threads/thread/cons/1.cc: Likewise. 3910 * testsuite/30_threads/thread/cons/2.cc: Likewise. 3911 * testsuite/30_threads/thread/cons/3.cc: Likewise. 3912 * testsuite/30_threads/thread/cons/4.cc: Likewise. 3913 * testsuite/30_threads/thread/cons/49668.cc: Likewise. 3914 * testsuite/30_threads/thread/cons/5.cc: Likewise. 3915 * testsuite/30_threads/thread/cons/6.cc: Likewise. 3916 * testsuite/30_threads/thread/cons/7.cc: Likewise. 3917 * testsuite/30_threads/thread/cons/8.cc: Likewise. 3918 * testsuite/30_threads/thread/cons/9.cc: Likewise. 3919 * testsuite/30_threads/thread/cons/moveable.cc: Likewise. 3920 * testsuite/30_threads/thread/cons/terminate.cc: Likewise. 3921 * testsuite/30_threads/thread/members/1.cc: Likewise. 3922 * testsuite/30_threads/thread/members/2.cc: Likewise. 3923 * testsuite/30_threads/thread/members/3.cc: Likewise. 3924 * testsuite/30_threads/thread/members/4.cc: Likewise. 3925 * testsuite/30_threads/thread/members/5.cc: Likewise. 3926 * testsuite/30_threads/thread/members/hardware_concurrency.cc: 3927 Likewise. 3928 * testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise. 3929 * testsuite/30_threads/thread/swap/1.cc: Likewise. 3930 * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. 3931 * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: 3932 Likewise. 3933 * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. 3934 * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. 3935 * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: 3936 Likewise. 3937 * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. 3938 * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. 3939 * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. 3940 * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. 3941 * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. 3942 * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. 3943 * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. 3944 * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise. 3945 * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. 3946 * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise. 3947 * testsuite/30_threads/try_lock/1.cc: Likewise. 3948 * testsuite/30_threads/try_lock/2.cc: Likewise. 3949 * testsuite/30_threads/try_lock/3.cc: Likewise. 3950 * testsuite/30_threads/try_lock/4.cc: Likewise. 3951 * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. 3952 * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. 3953 * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. 3954 * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. 3955 * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. 3956 * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. 3957 * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. 3958 * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. 3959 * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. 3960 * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. 3961 * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. 3962 39632020-08-21 Jonathan Wakely <jwakely@redhat.com> 3964 3965 PR libstdc++/96736 3966 * testsuite/17_intro/headers/c++1998/all_attributes.cc: Do not 3967 test "cold" on darwin. 3968 * testsuite/17_intro/headers/c++2011/all_attributes.cc: 3969 Likewise. 3970 * testsuite/17_intro/headers/c++2014/all_attributes.cc: 3971 Likewise. 3972 * testsuite/17_intro/headers/c++2017/all_attributes.cc: 3973 Likewise. 3974 * testsuite/17_intro/headers/c++2020/all_attributes.cc: 3975 Likewise. 3976 39772020-08-21 Jonathan Wakely <jwakely@redhat.com> 3978 3979 PR libstdc++/96718 3980 * testsuite/25_algorithms/pstl/feature_test-2.cc: Require 3981 tbb-backend effective target. 3982 * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise. 3983 * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise. 3984 * testsuite/25_algorithms/pstl/feature_test.cc: Likewise. 3985 39862020-08-20 Jonathan Wakely <jwakely@redhat.com> 3987 3988 * include/bits/iterator_concepts.h [__STRICT_ANSI__] 3989 (incrementable_traits<__int128>): Define specialization. 3990 (incrementable_traits<unsigned __int128>): Likewise. 3991 * testsuite/std/ranges/iota/96042.cc: Test iota_view with 3992 __int128. 3993 39942020-08-19 Jonathan Wakely <jwakely@redhat.com> 3995 Patrick Palka <ppalka@redhat.com> 3996 3997 PR libstdc++/96042 3998 * include/bits/range_access.h (__detail::__to_unsigned_like): 3999 Do not use make_unsigned_t<T> in the return type, as it can 4000 result in an error before the integral<T> constraint is checked. 4001 [__STRICT_ANSI__]: Add overloads for 128-bit integer types. 4002 (__detail::__make_unsigned_like_t): Define as the return type 4003 of __to_unsigned_like. 4004 * testsuite/std/ranges/subrange/96042.cc: New test. 4005 40062020-08-19 Jonathan Wakely <jwakely@redhat.com> 4007 4008 * include/bits/stl_tree.h (operator!=, operator>, operator<=) 4009 (operator>=): Remove deprecated functions. 4010 40112020-08-19 Jonathan Wakely <jwakely@redhat.com> 4012 4013 PR libstdc++/96042 4014 * include/ext/numeric_traits.h (__is_integer_nonstrict): New 4015 trait which is true for 128-bit integers even in strict modes. 4016 (__numeric_traits_integer, __numeric_traits): Use 4017 __is_integer_nonstrict instead of __is_integer. 4018 * include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__] 4019 (numeric_limits<__int128>, (numeric_limits<unsigned __int128>): 4020 Define. 4021 * testsuite/std/ranges/iota/96042.cc: New test. 4022 40232020-08-19 Jonathan Wakely <jwakely@redhat.com> 4024 4025 * include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST) 4026 (_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST) 4027 (_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST): 4028 Add new macros to comment. 4029 40302020-08-19 Patrick Palka <ppalka@redhat.com> 4031 4032 * include/Makefile.am (bits_headers): Add new header 4033 <bits/max_size_type.h>. 4034 * include/Makefile.in: Regenerate. 4035 * include/bits/iterator_concepts.h 4036 (ranges::__detail::__max_diff_type): Remove definition, replace 4037 with forward declaration of class __max_diff_type. 4038 (__detail::__max_size_type): Remove definition, replace with 4039 forward declaration of class __max_size_type. 4040 (__detail::__is_unsigned_int128, __is_signed_int128) 4041 (__is_int128): New concepts. 4042 (__detail::__is_integer_like): Accept __int128 and unsigned 4043 __int128. 4044 (__detail::__is_signed_integer_like): Accept __int128. 4045 * include/bits/max_size_type.h: New header. 4046 * include/bits/range_access.h: Include <bits/max_size_type.h>. 4047 (__detail::__to_unsigned_like): Two new overloads. 4048 * testsuite/std/ranges/iota/difference_type.cc: New test. 4049 * testsuite/std/ranges/iota/max_size_type.cc: New test. 4050 40512020-08-19 Jonathan Wakely <jwakely@redhat.com> 4052 4053 * include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all 4054 standard modes. 4055 (_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead" 4056 message in deprecated warnings. 4057 (_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New 4058 macros for marking features deprecated in C++11. 4059 (_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST): 4060 New macros. 4061 * include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>): 4062 Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED. 4063 (auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST. 4064 * include/backward/binders.h (binder1st, binder2nd): Likewise. 4065 * include/bits/ios_base.h (io_state, open_mode, seek_dir) 4066 (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST. 4067 * include/std/streambuf (stossc): Replace C++11 attribute 4068 with _GLIBCXX_DEPRECATED_SUGGEST. 4069 * include/std/type_traits (__is_nullptr_t): Use 4070 _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED. 4071 * testsuite/27_io/types/1.cc: Check for deprecated warnings. 4072 Also check for io_state, open_mode and seek_dir typedefs. 4073 40742020-08-19 Antony Polukhin <antoshkka@gmail.com> 4075 4076 PR libstdc++/71579 4077 * include/std/type_traits (invoke_result, is_nothrow_invocable_r) 4078 Add static_asserts to make sure that the argument of the type 4079 trait is not misused with incomplete types. 4080 (is_swappable_with, is_nothrow_swappable_with): Add static_asserts 4081 to make sure that the first and second arguments of the type trait 4082 are not misused with incomplete types. 4083 * testsuite/20_util/invoke_result/incomplete_neg.cc: New test. 4084 * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: New test. 4085 * testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc: New test. 4086 * testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc: New 4087 test. 4088 * testsuite/20_util/is_swappable_with/incomplete_neg.cc: New test. 4089 40902020-08-18 David Edelsohn <dje.gcc@gmail.com> 4091 Clement Chigot <clement.chigot@atos.net> 4092 4093 * config/os/aix/t-aix: Add complementary mode object files to 4094 libsupc++.a 4095 40962020-08-18 Jonathan Wakely <jwakely@redhat.com> 4097 4098 * testsuite/17_intro/headers/c++1998/all_attributes.cc: Check 4099 "cold" isn't used in the library. Also check <cxxabi.h>. 4100 * testsuite/17_intro/headers/c++2011/all_attributes.cc: 4101 Likewise. 4102 * testsuite/17_intro/headers/c++2014/all_attributes.cc: 4103 Likewise. 4104 * testsuite/17_intro/headers/c++2017/all_attributes.cc: 4105 Likewise. 4106 * testsuite/17_intro/headers/c++2020/all_attributes.cc: 4107 Likewise. 4108 41092020-08-18 Jonathan Wakely <jwakely@redhat.com> 4110 4111 PR libstdc++/69724 4112 * include/std/future (__future_base::_S_make_deferred_state) 4113 (__future_base::_S_make_async_state): Remove. 4114 (__future_base::_Deferred_state): Change constructor to accept a 4115 parameter pack of arguments and forward them to the call 4116 wrapper. 4117 (__future_base::_Async_state_impl): Likewise. Replace lambda 4118 expression with a named member function. 4119 (async): Construct state object directly from the arguments, 4120 instead of using thread::__make_invoker, _S_make_deferred_state 4121 and _S_make_async_state. Move shared state into the returned 4122 future. 4123 * include/std/thread (thread::_Call_wrapper): New alias 4124 template for use by constructor and std::async. 4125 (thread::thread(Callable&&, Args&&...)): Create state object 4126 directly instead of using _S_make_state. 4127 (thread::__make_invoker, thread::__decayed_tuple) 4128 (thread::_S_make_state): Remove. 4129 * testsuite/30_threads/async/69724.cc: New test. 4130 41312020-08-17 Jonathan Wakely <jwakely@redhat.com> 4132 4133 PR libstdc++/55713 4134 PR libstdc++/71096 4135 PR libstdc++/93147 4136 * include/std/tuple [__has_cpp_attribute(no_unique_address)] 4137 (_Head_base<Idx, Head, true>): New definition of the partial 4138 specialization, using [[no_unique_address]] instead of 4139 inheritance. 4140 * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected 4141 output. 4142 * testsuite/20_util/tuple/comparison_operators/93147.cc: New test. 4143 * testsuite/20_util/tuple/creation_functions/55713.cc: New test. 4144 * testsuite/20_util/tuple/element_access/71096.cc: New test. 4145 41462020-08-14 Lewis Hyatt <lhyatt@gmail.com> 4147 4148 * testsuite/lib/libstdc++.exp: Use the new option 4149 -fdiagnostics-plain-output. 4150 41512020-08-13 Jonathan Wakely <jwakely@redhat.com> 4152 4153 * acinclude.m4 (GLIBCXX_ENABLE_CHEADERS): Warn if the c_std 4154 option is used and fail unless --enable-cheaders-obsolete is 4155 also used. 4156 * configure: Regenerate. 4157 41582020-08-12 Jonathan Wakely <jwakely@redhat.com> 4159 4160 PR libstdc++/85828 4161 * include/bits/basic_string.h (operator=(basic_string&&)): Check 4162 for self-move before copying with char_traits::copy. 4163 * include/bits/hashtable.h (operator=(_Hashtable&&)): Check for 4164 self-move. 4165 * include/bits/stl_deque.h (_M_move_assign1(deque&&, false_type)): 4166 Check for equal allocators. 4167 * include/bits/stl_list.h (_M_move_assign(list&&, true_type)): 4168 Call clear() instead of _M_clear(). 4169 * include/debug/formatter.h (__msg_self_move_assign): Change 4170 comment. 4171 * include/debug/macros.h (__glibcxx_check_self_move_assign): 4172 (_GLIBCXX_DEBUG_VERIFY): Remove. 4173 * include/debug/safe_container.h (operator=(_Safe_container&&)): 4174 Remove assertion check for safe move and make it well-defined. 4175 * include/debug/safe_iterator.h (operator=(_Safe_iterator&&)): 4176 Remove assertion check for self-move. 4177 * include/debug/safe_local_iterator.h 4178 (operator=(_Safe_local_iterator&&)): Likewise. 4179 * testsuite/21_strings/basic_string/cons/char/self_move.cc: New test. 4180 * testsuite/23_containers/deque/cons/self_move.cc: New test. 4181 * testsuite/23_containers/forward_list/cons/self_move.cc: New test. 4182 * testsuite/23_containers/list/cons/self_move.cc: New test. 4183 * testsuite/23_containers/set/cons/self_move.cc: New test. 4184 * testsuite/23_containers/unordered_set/cons/self_move.cc: New test. 4185 * testsuite/23_containers/vector/cons/self_move.cc: New test. 4186 41872020-08-11 Fran��ois Dumont <fdumont@gcc.gnu.org> 4188 4189 PR libstdc++/91620 4190 * include/bits/forward_list.tcc (forward_list<>::remove): Collect nodes 4191 to destroy in an intermediate forward_list. 4192 (forward_list<>::remove_if, forward_list<>::unique): Likewise. 4193 * include/bits/list.tcc (list<>::remove, list<>::unique): Likewise. 4194 (list<>::remove_if): Likewise. 4195 * include/debug/forward_list (forward_list<>::_M_erase_after): Remove. 4196 (forward_list<>::erase_after): Adapt. 4197 (forward_list<>::remove, forward_list<>::remove_if): Collect nodes to 4198 destroy in an intermediate forward_list. 4199 (forward_list<>::unique): Likewise. 4200 * include/debug/list (list<>::remove, list<>::unique): Likewise. 4201 (list<>::remove_if): Likewise. 4202 * testsuite/23_containers/forward_list/operations/91620.cc: New test. 4203 * testsuite/23_containers/list/operations/91620.cc: New test. 4204 42052020-08-11 Jonathan Wakely <jwakely@redhat.com> 4206 4207 * testsuite/30_threads/thread/cons/84535.cc: Use a custom 4208 namespace. 4209 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise. 4210 42112020-08-11 Jonathan Wakely <jwakely@redhat.com> 4212 4213 PR libstdc++/89760 4214 * include/experimental/executor [!_GLIBCXX_HAS_GTHREADS]: 4215 (execution_context::mutex_type): Define dummy mutex type. 4216 (system_context): Use execution_context::mutex_type. 4217 (system_context) [!_GLIBCXX_HAS_GTHREADS]: Define dummy 4218 thread and condition variable types. 4219 [!_GLIBCXX_HAS_GTHREADS] (system_context::_M_run()): Do not 4220 define. 4221 (system_context::_M_post) [!_GLIBCXX_HAS_GTHREADS]: Throw 4222 an exception when threads aren't available. 4223 (strand::running_in_this_thread()): Defer to _M_state. 4224 (strand::_State::running_in_this_thread()): New function. 4225 (use_future_t): Do not depend on _GLIBCXX_USE_C99_STDINT_TR1. 4226 * include/experimental/io_context (io_context): Use the 4227 execution_context::mutex_type alias. Replace stack of thread 4228 IDs with counter. 4229 * testsuite/experimental/net/execution_context/use_service.cc: 4230 Enable test for non-pthread targets. 4231 42322020-08-11 Jonathan Wakely <jwakely@redhat.com> 4233 4234 * include/experimental/executor (system_context::a__tag): Make 4235 default constructor explicit. 4236 42372020-08-11 Jonathan Wakely <jwakely@redhat.com> 4238 4239 * include/experimental/executor (system_context::_M_run()): 4240 Fix predicate. 4241 * testsuite/experimental/net/system_context/1.cc: New test. 4242 42432020-08-11 Jonathan Wakely <jwakely@redhat.com> 4244 4245 * include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using 4246 #ifdef instead of #if. 4247 (stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before 4248 using __gthread_yield. 4249 42502020-08-11 Jonathan Wakely <jwakely@redhat.com> 4251 4252 * include/std/thread [!_GLIBCXX_HAS_GTHREADS] (this_thread::yield) 4253 (this_thread::sleep_until): Define. 4254 [!_GLIBCXX_HAS_GTHREADS] (this_thread::sleep_for): Define. Replace 4255 use of __gthread_time_t typedef with timespec. 4256 * src/c++11/thread.cc [!_GLIBCXX_HAS_GTHREADS] (__sleep_for): 4257 Likewise. 4258 * testsuite/30_threads/this_thread/2.cc: Moved to... 4259 * testsuite/30_threads/this_thread/yield.cc: ...here. 4260 * testsuite/30_threads/this_thread/3.cc: Moved to... 4261 * testsuite/30_threads/this_thread/sleep_for-mt.cc: ...here. 4262 * testsuite/30_threads/this_thread/4.cc: Moved to... 4263 * testsuite/30_threads/this_thread/sleep_until-mt.cc: ...here. 4264 * testsuite/30_threads/this_thread/58038.cc: Add 4265 dg-require-sleep. 4266 * testsuite/30_threads/this_thread/60421.cc: Likewise. 4267 * testsuite/30_threads/this_thread/sleep_for.cc: New test. 4268 * testsuite/30_threads/this_thread/sleep_until.cc: New test. 4269 42702020-08-10 Jonathan Wakely <jwakely@redhat.com> 4271 4272 PR libstdc++/94681 4273 * src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead 4274 of calling ::lstat directly. 4275 * src/filesystem/ops.cc (read_symlink): Likewise. 4276 42772020-08-10 Jonathan Wakely <jwakely@redhat.com> 4278 4279 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): 4280 Use gdb.Type.strip_typedefs(). 4281 * testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in 4282 the emulated old type. 4283 42842020-08-10 Jonathan Wakely <jwakely@redhat.com> 4285 4286 PR libstdc++/94681 4287 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on 4288 $enable_libstdcxx_filesystem_ts. 4289 * configure: Regenerate. 4290 42912020-08-10 Jonathan Wakely <jwakely@redhat.com> 4292 4293 PR libstdc++/93904 4294 * include/bits/stl_iterator.h (inserter): Do not deduce 4295 iterator type (LWG 561). 4296 * testsuite/24_iterators/insert_iterator/dr561.cc: New test. 4297 42982020-08-10 Jonathan Wakely <jwakely@redhat.com> 4299 4300 * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI=0] 4301 (basic_string::reserve()): Do nothing if exceptions are not 4302 enabled. 4303 43042020-08-10 Jonathan Wakely <jwakely@redhat.com> 4305 4306 PR libstdc++/95749 4307 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS] 4308 (stat_type): Change to __stat64. 4309 (stat): Use _wstat64. 4310 43112020-08-07 Jonathan Wakely <jwakely@redhat.com> 4312 4313 PR libstdc++/96303 4314 * include/debug/bitset (bitset::operator==): Call _M_base() on 4315 right operand. 4316 (bitset::operator!=): Likewise, but don't define it at all when 4317 default comparisons are supported by the compiler. 4318 * testsuite/23_containers/bitset/operations/96303.cc: New test. 4319 43202020-08-07 Jonathan Wakely <jwakely@redhat.com> 4321 4322 * testsuite/18_support/comparisons/algorithms/partial_order.cc: 4323 Replace VERIFY with static_assert where the compiler now 4324 allows it. 4325 * testsuite/18_support/comparisons/algorithms/weak_order.cc: 4326 Likewise. 4327 43282020-08-07 Jonathan Wakely <jwakely@redhat.com> 4329 4330 * config/abi/pre/gnu.ver: Fix wildcards for wstring symbols. 4331 43322020-08-06 Andrew Luo <andrewluotechnologies@outlook.com> 4333 Jonathan Wakely <jwakely@redhat.com> 4334 4335 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Use less greedy 4336 patterns for basic_string members. 4337 (GLIBCXX_3.4.29): Export new basic_string::reserve symbols. 4338 * doc/xml/manual/status_cxx2020.xml: Update P0966 status. 4339 * include/bits/basic_string.h (shrink_to_fit()): Call reserve(). 4340 (reserve(size_type)): Remove default argument. 4341 (reserve()): Declare new overload. 4342 [!_GLIBCXX_USE_CXX11_ABI] (shrink_to_fit, reserve): Likewise. 4343 * include/bits/basic_string.tcc (reserve(size_type)): Remove 4344 support for shrinking capacity. 4345 (reserve()): Perform shrink-to-fit operation. 4346 [!_GLIBCXX_USE_CXX11_ABI] (reserve): Likewise. 4347 * testsuite/21_strings/basic_string/capacity/1.cc: Adjust to 4348 reflect new behavior. 4349 * testsuite/21_strings/basic_string/capacity/char/1.cc: 4350 Likewise. 4351 * testsuite/21_strings/basic_string/capacity/char/18654.cc: 4352 Likewise. 4353 * testsuite/21_strings/basic_string/capacity/char/2.cc: 4354 Likewise. 4355 * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: 4356 Likewise. 4357 * testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc: 4358 Likewise. 4359 * testsuite/21_strings/basic_string/capacity/wchar_t/2.cc: 4360 Likewise. 4361 43622020-08-06 Jonathan Wakely <jwakely@redhat.com> 4363 4364 * include/bits/basic_string.tcc 4365 (operator>>(basic_istream&, basic_string&)): Do not set eofbit 4366 if extraction stopped after in.width() characters. 4367 * src/c++98/istream-string.cc (operator>>(istream&, string&)): 4368 Likewise. 4369 * include/bits/istream.tcc (__istream_extract): Do not set 4370 eofbit if extraction stopped after n-1 characters. 4371 * src/c++98/istream.cc (__istream_extract): Likewise. 4372 * testsuite/21_strings/basic_string/inserters_extractors/char/13.cc: New test. 4373 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc: New test. 4374 * testsuite/27_io/basic_istream/extractors_character/char/5.cc: New test. 4375 * testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc: New test. 4376 43772020-08-06 Jonathan Wakely <jwakely@redhat.com> 4378 4379 PR libstdc++/96484 4380 * src/c++17/fs_ops.cc (fs::read_symlink): Return an error 4381 immediately for non-symlinks. 4382 * src/filesystem/ops.cc (fs::read_symlink): Likewise. 4383 43842020-08-06 Jonathan Wakely <jwakely@redhat.com> 4385 4386 * include/std/istream (operator>>(istream&, char*)): Add 4387 attributes to get warnings for pointers that are null or known 4388 to point to the end of a buffer. Request upper bound from 4389 __builtin_object_size check and handle zero-sized buffer case. 4390 (operator>>(istream&, signed char)) 4391 (operator>>(istream&, unsigned char*)): Add attributes. 4392 * testsuite/27_io/basic_istream/extractors_character/char/overflow.cc: 4393 Check extracting into the middle of a buffer. 4394 * testsuite/27_io/basic_istream/extractors_character/wchar_t/overflow.cc: New test. 4395 43962020-08-05 Jonathan Wakely <jwakely@redhat.com> 4397 4398 * include/std/atomic (atomic<T>::store): Reformat. 4399 44002020-08-05 Jonathan Wakely <jwakely@redhat.com> 4401 4402 * doc/xml/manual/status_cxx2017.xml: Replace oneAPI DPC++ link 4403 with LLVM repo for PSTL. 4404 * doc/html/manual/status.html: Regenerate. 4405 44062020-08-05 Jonathan Wakely <jwakely@redhat.com> 4407 4408 * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Export new symbols. 4409 * include/bits/istream.tcc (__istream_extract): New function 4410 template implementing both of operator>>(istream&, char*) and 4411 operator>>(istream&, char(&)[N]). Add explicit instantiation 4412 declaration for it. Remove explicit instantiation declarations 4413 for old function templates. 4414 * include/std/istream (__istream_extract): Declare. 4415 (operator>>(basic_istream<C,T>&, C*)): Define inline and simply 4416 call __istream_extract. 4417 (operator>>(basic_istream<char,T>&, signed char*)): Likewise. 4418 (operator>>(basic_istream<char,T>&, unsigned char*)): Likewise. 4419 (operator>>(basic_istream<C,T>&, C(7)[N])): Define for LWG 2499. 4420 (operator>>(basic_istream<char,T>&, signed char(&)[N])): 4421 Likewise. 4422 (operator>>(basic_istream<char,T>&, unsigned char(&)[N])): 4423 Likewise. 4424 * include/std/streambuf (basic_streambuf): Declare char overload 4425 of __istream_extract as a friend. 4426 * src/c++11/istream-inst.cc: Add explicit instantiation 4427 definition for wchar_t overload of __istream_extract. Remove 4428 explicit instantiation definitions of old operator>> overloads 4429 for versioned-namespace build. 4430 * src/c++98/istream.cc (operator>>(istream&, char*)): Replace 4431 with __istream_extract(istream&, char*, streamsize). 4432 * testsuite/27_io/basic_istream/extractors_character/char/3.cc: 4433 Do not use variable-length array. 4434 * testsuite/27_io/basic_istream/extractors_character/char/4.cc: 4435 Do not run test for C++20. 4436 * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc: 4437 Do not test writing to pointers for C++20. 4438 * testsuite/27_io/basic_istream/extractors_character/char/9826.cc: 4439 Use array instead of pointer. 4440 * testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc: 4441 Do not use variable-length array. 4442 * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc: 4443 Do not run test for C++20. 4444 * testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc: 4445 Do not test writing to pointers for C++20. 4446 * testsuite/27_io/basic_istream/extractors_character/char/lwg2499.cc: 4447 New test. 4448 * testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc: 4449 New test. 4450 * testsuite/27_io/basic_istream/extractors_character/char/overflow.cc: 4451 New test. 4452 * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc: 4453 New test. 4454 * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc: 4455 New test. 4456 44572020-08-01 Gerald Pfeifer <gerald@pfeifer.com> 4458 4459 * doc/xml/manual/using_exceptions.xml: Move www.stroustrup.com to 4460 https. 4461 * doc/html/manual/using_exceptions.html: Regenerate. 4462 44632020-07-31 Gerald Pfeifer <gerald@pfeifer.com> 4464 4465 * doc/xml/manual/status_cxx2017.xml: ParallelSTL is now part 4466 of oneAPI DPC++ Library on Github. 4467 * doc/html/manual/status.html: Regenerate. 4468 44692020-07-31 Fran��ois Dumont <fdumont@gcc.gnu.org> 4470 4471 * include/bits/stl_bvector.h 4472 [_GLIBCXX_INLINE_VERSION](_Bvector_impl_data::_M_start): Define as 4473 _Bit_type*. 4474 (_Bvector_impl_data(const _Bvector_impl_data&)): Default. 4475 (_Bvector_impl_data(_Bvector_impl_data&&)): Delegate to latter. 4476 (_Bvector_impl_data::operator=(const _Bvector_impl_data&)): Default. 4477 (_Bvector_impl_data::_M_move_data(_Bvector_impl_data&&)): Use latter. 4478 (_Bvector_impl_data::_M_reset()): Likewise. 4479 (_Bvector_impl_data::_M_swap_data): New. 4480 (_Bvector_impl::_Bvector_impl(_Bvector_impl&&)): Implement explicitely. 4481 (_Bvector_impl::_Bvector_impl(_Bit_alloc_type&&, _Bvector_impl&&)): New. 4482 (_Bvector_base::_Bvector_base(_Bvector_base&&, const allocator_type&)): 4483 New, use latter. 4484 (vector::vector(vector&&, const allocator_type&, true_type)): New, use 4485 latter. 4486 (vector::vector(vector&&, const allocator_type&, false_type)): New. 4487 (vector::vector(vector&&, const allocator_type&)): Use latters. 4488 (vector::vector(const vector&, const allocator_type&)): Adapt. 4489 [__cplusplus >= 201103](vector::vector(_InputIt, _InputIt, 4490 const allocator_type&)): Use _M_initialize_range. 4491 (vector::operator[](size_type)): Use iterator operator[]. 4492 (vector::operator[](size_type) const): Use const_iterator operator[]. 4493 (vector::swap(vector&)): Add assertions on allocators. Use _M_swap_data. 4494 [__cplusplus >= 201103](vector::insert(const_iterator, _InputIt, 4495 _InputIt)): Use _M_insert_range. 4496 (vector::_M_initialize(size_type)): Adapt. 4497 [__cplusplus >= 201103](vector::_M_initialize_dispatch): Remove. 4498 [__cplusplus >= 201103](vector::_M_insert_dispatch): Remove. 4499 * python/libstdcxx/v6/printers.py (StdVectorPrinter._iterator): Stop 4500 using start _M_offset. 4501 (StdVectorPrinter.to_string): Likewise. 4502 * testsuite/23_containers/vector/bool/allocator/swap.cc: Adapt. 4503 * testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc: 4504 Add check. 4505 45062020-07-31 Jonathan Wakely <jwakely@redhat.com> 4507 4508 * testsuite/27_io/basic_istream/ignore/char/94749.cc: Use 0 4509 instead of nullptr. 4510 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: 4511 Likewise. 4512 45132020-07-31 Jonathan Wakely <jwakely@redhat.com> 4514 4515 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc: 4516 Move struct to namespace scope. 4517 45182020-07-31 Jonathan Wakely <jwakely@redhat.com> 4519 4520 * testsuite/26_numerics/numbers/float128.cc: Check 4521 __STRICT_ANSI__ before using __float128. 4522 * testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc: 4523 Likewise. 4524 45252020-07-31 Jonathan Wakely <jwakely@redhat.com> 4526 4527 * testsuite/18_support/set_terminate.cc: Require C++11 or 4528 higher. 4529 * testsuite/28_regex/simple_c++11.cc: Likewise. 4530 * testsuite/tr1/headers/c++200x/complex.cc: Likewise. 4531 * testsuite/24_iterators/headers/iterator/synopsis.cc: 4532 Require C++14 or lower. 4533 45342020-07-31 Jonathan Wakely <jwakely@redhat.com> 4535 4536 * testsuite/23_containers/span/back_assert_neg.cc: Split c++2a 4537 effective-target from xfail selector. 4538 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise. 4539 * testsuite/23_containers/span/first_assert_neg.cc: Likewise. 4540 * testsuite/23_containers/span/front_assert_neg.cc: Likewise. 4541 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise. 4542 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise. 4543 * testsuite/23_containers/span/last_assert_neg.cc: Likewise. 4544 * testsuite/23_containers/span/subspan_2_assert_neg.cc: 4545 Likewise. 4546 * testsuite/23_containers/span/subspan_3_assert_neg.cc: 4547 Likewise. 4548 * testsuite/23_containers/span/subspan_4_assert_neg.cc: 4549 Likewise. 4550 * testsuite/23_containers/span/subspan_5_assert_neg.cc: 4551 Likewise. 4552 * testsuite/23_containers/span/subspan_6_assert_neg.cc: 4553 Likewise. 4554 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise. 4555 45562020-07-31 Jonathan Wakely <jwakely@redhat.com> 4557 4558 * testsuite/20_util/reference_wrapper/83427.cc: Adjust 4559 effective-target to specific language mode only. 4560 * testsuite/24_iterators/headers/iterator/range_access_c++11.cc: 4561 Likewise. 4562 * testsuite/24_iterators/headers/iterator/range_access_c++14.cc: 4563 Likewise. 4564 * testsuite/24_iterators/headers/iterator/synopsis_c++11.cc: 4565 Likewise. 4566 * testsuite/24_iterators/headers/iterator/synopsis_c++14.cc: 4567 Likewise. 4568 * testsuite/26_numerics/valarray/69116.cc: 4569 Likewise. 4570 * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: 4571 Remove whitespace at end of file. 4572 * testsuite/30_threads/headers/future/std_c++0x_neg.cc: 4573 Likewise. 4574 45752020-07-31 Jonathan Wakely <jwakely@redhat.com> 4576 4577 * testsuite/17_intro/headers/c++2017/all_attributes.cc: Add 4578 c++17 effective-target. 4579 * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: 4580 Likewise. 4581 * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: Likewise. 4582 * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: 4583 Likewise. 4584 * testsuite/17_intro/headers/c++2017/operator_names.cc: 4585 Likewise. 4586 * testsuite/17_intro/headers/c++2017/stdc++.cc: Likewise. 4587 * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc: 4588 Likewise. 4589 * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc: 4590 Likewise. 4591 * testsuite/19_diagnostics/error_code/is_error_code_v.cc: 4592 Likewise. 4593 * testsuite/20_util/any/assign/1.cc: Likewise. 4594 * testsuite/20_util/any/assign/2.cc: Likewise. 4595 * testsuite/20_util/any/assign/emplace.cc: Likewise. 4596 * testsuite/20_util/any/assign/exception.cc: Likewise. 4597 * testsuite/20_util/any/assign/self.cc: Likewise. 4598 * testsuite/20_util/any/cons/1.cc: Likewise. 4599 * testsuite/20_util/any/cons/2.cc: Likewise. 4600 * testsuite/20_util/any/cons/aligned.cc: Likewise. 4601 * testsuite/20_util/any/cons/explicit.cc: Likewise. 4602 * testsuite/20_util/any/cons/in_place.cc: Likewise. 4603 * testsuite/20_util/any/cons/nontrivial.cc: Likewise. 4604 * testsuite/20_util/any/make_any.cc: Likewise. 4605 * testsuite/20_util/any/misc/any_cast.cc: Likewise. 4606 * testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise. 4607 * testsuite/20_util/any/misc/swap.cc: Likewise. 4608 * testsuite/20_util/any/modifiers/1.cc: Likewise. 4609 * testsuite/20_util/any/observers/type.cc: Likewise. 4610 * testsuite/20_util/any/requirements.cc: Likewise. 4611 * testsuite/20_util/any/typedefs.cc: Likewise. 4612 * testsuite/20_util/as_const/1.cc: Likewise. 4613 * testsuite/20_util/as_const/rvalue_neg.cc: Likewise. 4614 * testsuite/20_util/bind/is_placeholder_v.cc: Likewise. 4615 * testsuite/20_util/bool_constant/requirements.cc: Likewise. 4616 * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc: 4617 Likewise. 4618 * testsuite/20_util/duration_cast/rounding.cc: Likewise. 4619 * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc: 4620 Likewise. 4621 * testsuite/20_util/function_objects/invoke/59768.cc: Likewise. 4622 * testsuite/20_util/function_objects/not_fn/1.cc: Likewise. 4623 * testsuite/20_util/function_objects/searchers.cc: Likewise. 4624 * testsuite/20_util/in_place/requirements.cc: Likewise. 4625 * testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc: 4626 Likewise. 4627 * testsuite/20_util/is_invocable/requirements/typedefs.cc: 4628 Likewise. 4629 * testsuite/20_util/is_invocable/value.cc: Likewise. 4630 * testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc: 4631 Likewise. 4632 * testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc: 4633 Likewise. 4634 * testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc: 4635 Likewise. 4636 * testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc: 4637 Likewise. 4638 * testsuite/20_util/is_nothrow_swappable/value.cc: Likewise. 4639 * testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc: 4640 Likewise. 4641 * testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc: 4642 Likewise. 4643 * testsuite/20_util/is_nothrow_swappable_with/value.cc: 4644 Likewise. 4645 * testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc: 4646 Likewise. 4647 * testsuite/20_util/is_swappable/requirements/typedefs.cc: 4648 Likewise. 4649 * testsuite/20_util/is_swappable/value.cc: Likewise. 4650 * testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc: 4651 Likewise. 4652 * testsuite/20_util/is_swappable_with/requirements/typedefs.cc: 4653 Likewise. 4654 * testsuite/20_util/is_swappable_with/value.cc: Likewise. 4655 * testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc: 4656 Likewise. 4657 * testsuite/20_util/logical_traits/requirements/typedefs.cc: 4658 Likewise. 4659 * testsuite/20_util/logical_traits/value.cc: Likewise. 4660 * testsuite/20_util/optional/constexpr/make_optional.cc: Likewise. 4661 * testsuite/20_util/optional/constexpr/observers/2.cc: Likewise. 4662 * testsuite/20_util/optional/constexpr/observers/3.cc: Likewise. 4663 * testsuite/20_util/optional/hash.cc: Likewise. 4664 * testsuite/20_util/pair/swap_cxx17.cc: Likewise. 4665 * testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise. 4666 * testsuite/20_util/shared_ptr/requirements/weak_type.cc: 4667 Likewise. 4668 * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc: 4669 Likewise. 4670 * testsuite/20_util/tuple/apply/1.cc: Likewise. 4671 * testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise. 4672 * testsuite/20_util/tuple/swap_cxx17.cc: Likewise. 4673 * testsuite/20_util/tuple/tuple_size_v.cc: Likewise. 4674 * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc: 4675 Likewise. 4676 * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc: 4677 Likewise. 4678 * testsuite/20_util/variant/any.cc: Likewise. 4679 * testsuite/20_util/variant/compile.cc: Likewise. 4680 * testsuite/20_util/variant/hash.cc: Likewise. 4681 * testsuite/20_util/variant/index_type.cc: Likewise. 4682 * testsuite/20_util/variant/run.cc: Likewise. 4683 * testsuite/20_util/void_t/1.cc: Likewise. 4684 * testsuite/21_strings/basic_string/79162.cc: Likewise. 4685 * testsuite/21_strings/basic_string/cons/char/7.cc: Likewise. 4686 * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise. 4687 * testsuite/21_strings/basic_string/lwg2758.cc: Likewise. 4688 * testsuite/21_strings/basic_string/lwg2946.cc: Likewise. 4689 * testsuite/21_strings/basic_string/modifiers/append/char/4.cc: 4690 Likewise. 4691 * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc: 4692 Likewise. 4693 * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc: 4694 Likewise. 4695 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc: 4696 Likewise. 4697 * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc: 4698 Likewise. 4699 * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc: 4700 Likewise. 4701 * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc: 4702 Likewise. 4703 * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc: 4704 Likewise. 4705 * testsuite/21_strings/basic_string/operations/compare/char/2.cc: 4706 Likewise. 4707 * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc: 4708 Likewise. 4709 * testsuite/21_strings/basic_string/operations/data/char/2.cc: 4710 Likewise. 4711 * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc: 4712 Likewise. 4713 * testsuite/21_strings/basic_string/operations/find/char/5.cc: 4714 Likewise. 4715 * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc: 4716 Likewise. 4717 * testsuite/21_strings/basic_string/operators/char/5.cc: Likewise. 4718 * testsuite/21_strings/basic_string/operators/wchar_t/5.cc: 4719 Likewise. 4720 * testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise. 4721 * testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise. 4722 * testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise. 4723 * testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise. 4724 * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc: 4725 Likewise. 4726 * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc: 4727 Likewise. 4728 * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc: 4729 Likewise. 4730 * testsuite/21_strings/basic_string_view/element_access/char/1.cc: 4731 Likewise. 4732 * testsuite/21_strings/basic_string_view/element_access/char/2.cc: 4733 Likewise. 4734 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc: 4735 Likewise. 4736 * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc: 4737 Likewise. 4738 * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc: 4739 Likewise. 4740 * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc: 4741 Likewise. 4742 * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc: 4743 Likewise. 4744 * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc: 4745 Likewise. 4746 * testsuite/21_strings/basic_string_view/include.cc: Likewise. 4747 * testsuite/21_strings/basic_string_view/inserters/char/1.cc: 4748 Likewise. 4749 * testsuite/21_strings/basic_string_view/inserters/char/2.cc: 4750 Likewise. 4751 * testsuite/21_strings/basic_string_view/inserters/char/3.cc: 4752 Likewise. 4753 * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc: 4754 Likewise. 4755 * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc: 4756 Likewise. 4757 * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc: 4758 Likewise. 4759 * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc: 4760 Likewise. 4761 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc: 4762 Likewise. 4763 * testsuite/21_strings/basic_string_view/literals/types.cc: 4764 Likewise. 4765 * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc: 4766 Likewise. 4767 * testsuite/21_strings/basic_string_view/literals/values.cc: 4768 Likewise. 4769 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc: 4770 Likewise. 4771 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc: 4772 Likewise. 4773 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc: 4774 Likewise. 4775 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc: 4776 Likewise. 4777 * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc: 4778 Likewise. 4779 * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc: 4780 Likewise. 4781 * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc: 4782 Likewise. 4783 * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc: 4784 Likewise. 4785 * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc: 4786 Likewise. 4787 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc: 4788 Likewise. 4789 * testsuite/21_strings/basic_string_view/operations/data/char/1.cc: 4790 Likewise. 4791 * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc: 4792 Likewise. 4793 * testsuite/21_strings/basic_string_view/operations/find/char/1.cc: 4794 Likewise. 4795 * testsuite/21_strings/basic_string_view/operations/find/char/2.cc: 4796 Likewise. 4797 * testsuite/21_strings/basic_string_view/operations/find/char/3.cc: 4798 Likewise. 4799 * testsuite/21_strings/basic_string_view/operations/find/char/4.cc: 4800 Likewise. 4801 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc: 4802 Likewise. 4803 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc: 4804 Likewise. 4805 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc: 4806 Likewise. 4807 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc: 4808 Likewise. 4809 * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc: 4810 Likewise. 4811 * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc: 4812 Likewise. 4813 * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc: 4814 Likewise. 4815 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc: 4816 Likewise. 4817 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc: 4818 Likewise. 4819 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc: 4820 Likewise. 4821 * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc: 4822 Likewise. 4823 * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc: 4824 Likewise. 4825 * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc: 4826 Likewise. 4827 * testsuite/21_strings/basic_string_view/range_access/char/1.cc: 4828 Likewise. 4829 * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc: 4830 Likewise. 4831 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc: 4832 Likewise. 4833 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc: 4834 Likewise. 4835 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc: 4836 Likewise. 4837 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc: 4838 Likewise. 4839 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc: 4840 Likewise. 4841 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc: 4842 Likewise. 4843 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc: 4844 Likewise. 4845 * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise. 4846 * testsuite/21_strings/basic_string_view/types/1.cc: Likewise. 4847 * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc: 4848 Likewise. 4849 * testsuite/23_containers/map/modifiers/extract.cc: Likewise. 4850 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: 4851 Likewise. 4852 * testsuite/23_containers/map/modifiers/merge.cc: Likewise. 4853 * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise. 4854 * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise. 4855 * testsuite/23_containers/multimap/modifiers/merge.cc: Likewise. 4856 * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise. 4857 * testsuite/23_containers/multiset/modifiers/merge.cc: Likewise. 4858 * testsuite/23_containers/set/modifiers/extract.cc: Likewise. 4859 * testsuite/23_containers/set/modifiers/merge.cc: Likewise. 4860 * testsuite/23_containers/unordered_map/modifiers/extract.cc: 4861 Likewise. 4862 * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc: 4863 Likewise. 4864 * testsuite/23_containers/unordered_map/modifiers/merge.cc: 4865 Likewise. 4866 * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc: 4867 Likewise. 4868 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc: 4869 Likewise. 4870 * testsuite/23_containers/unordered_multimap/modifiers/merge.cc: 4871 Likewise. 4872 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc: 4873 Likewise. 4874 * testsuite/23_containers/unordered_multiset/modifiers/merge.cc: 4875 Likewise. 4876 * testsuite/23_containers/unordered_set/modifiers/extract.cc: 4877 Likewise. 4878 * testsuite/23_containers/unordered_set/modifiers/merge.cc: 4879 Likewise. 4880 * testsuite/24_iterators/headers/iterator/range_access_c++17.cc: 4881 Likewise. 4882 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: 4883 Likewise. 4884 * testsuite/25_algorithms/clamp/1.cc: Likewise. 4885 * testsuite/25_algorithms/clamp/2.cc: Likewise. 4886 * testsuite/25_algorithms/clamp/constexpr.cc: Likewise. 4887 * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc: 4888 Likewise. 4889 * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc: 4890 Likewise. 4891 * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc: 4892 Likewise. 4893 * testsuite/26_numerics/headers/cmath/special_functions_global.cc: 4894 Likewise. 4895 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: 4896 Likewise. 4897 * testsuite/29_atomics/atomic/is_always_lock_free.cc: Likewise. 4898 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc: 4899 Likewise. 4900 * testsuite/30_threads/shared_lock/70766.cc: Likewise. 4901 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise. 4902 * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: 4903 Likewise. 4904 * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: 4905 Likewise. 4906 * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc: 4907 Likewise. 4908 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise. 4909 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise. 4910 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise. 4911 49122020-07-31 Jonathan Wakely <jwakely@redhat.com> 4913 4914 PR libstdc++/96382 4915 * include/bits/stl_iterator.h (reverse_iterator): Friend 4916 declaration should not depend on __cplusplus. 4917 49182020-07-31 Jonathan Wakely <jwakely@redhat.com> 4919 4920 * testsuite/experimental/filesystem/filesystem_error/cons.cc: 4921 Remove -std=gnu++17 option. 4922 49232020-07-31 Jonathan Wakely <jwakely@redhat.com> 4924 4925 * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to 4926 definition of aggregates in C++20. 4927 * testsuite/20_util/optional/requirements.cc: Adjust for 4928 defaulted comparisons in C++20. 4929 49302020-07-31 Jonathan Wakely <jwakely@redhat.com> 4931 4932 * testsuite/20_util/tuple/78939.cc: Suppress warnings about 4933 deprecation of volatile-qualified structured bindings in C++20. 4934 * testsuite/20_util/variable_templates_for_traits.cc: Likewise 4935 for deprecation of is_pod in C++20 4936 49372020-07-31 Jonathan Wakely <jwakely@redhat.com> 4938 4939 * testsuite/20_util/time_point_cast/rounding.cc: Remove 4940 duplicate dg-do directive and add c++17 effective target. 4941 49422020-07-31 Jonathan Wakely <jwakely@redhat.com> 4943 4944 * src/c++17/floating_from_chars.cc (from_chars_impl): Use 4945 LC_ALL_MASK not LC_ALL. 4946 49472020-07-31 Richard Biener <rguenther@suse.de> 4948 4949 PR debug/96383 4950 * testsuite/20_util/assume_aligned/3.cc: Use -g0. 4951 49522020-07-30 Jonathan Wakely <jwakely@redhat.com> 4953 4954 * include/bits/basic_string.h (size_type, difference_type): 4955 Use allocator_traits to obtain the allocator's size_type and 4956 difference_type. 4957 49582020-07-30 Jonathan Wakely <jwakely@redhat.com> 4959 4960 PR libstdc++/96279 4961 * src/c++17/floating_from_chars.cc (from_chars_impl): Use 4962 isinf unqualified. 4963 [!_GLIBCXX_USE_C99_STDLIB]: Use strtod for float and long 4964 double. 4965 49662020-07-30 Jonathan Wakely <jwakely@redhat.com> 4967 4968 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc: 4969 Use allocator with the correct value type. 4970 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc: 4971 Likewise. 4972 49732020-07-30 Jonathan Wakely <jwakely@redhat.com> 4974 4975 * testsuite/20_util/from_chars/4.cc: Pass non-const iterator 4976 to string::insert. 4977 49782020-07-30 Jonathan Wakely <jwakely@redhat.com> 4979 4980 * include/bits/iterator_concepts.h (__detail::__cv_bool): New 4981 helper concept. 4982 (__detail::__integral_nonbool): Likewise. 4983 (__detail::__is_integer_like): Use __integral_nonbool. 4984 * testsuite/std/ranges/access/lwg3467.cc: New test. 4985 49862020-07-30 Jonathan Wakely <jwakely@redhat.com> 4987 4988 * testsuite/20_util/from_chars/4.cc: Use dg-add-options ieee. 4989 * testsuite/29_atomics/atomic_float/1.cc: Likewise. 4990 49912020-07-30 Jonathan Wakely <jwakely@redhat.com> 4992 4993 * testsuite/23_containers/vector/bool/72847.cc: Use the 4994 exceptions_enabled effective-target keyword instead of 4995 checking for an explicit -fno-exceptions option. 4996 * testsuite/util/testsuite_abi.cc (examine_symbol): Remove 4997 redundant try-catch. 4998 * testsuite/util/testsuite_allocator.h [!__cpp_exceptions]: 4999 Do not define check_allocate_max_size and memory_resource. 5000 * testsuite/util/testsuite_containers.h: Replace comment with 5001 #error if wrong standard dialect used. 5002 * testsuite/util/testsuite_shared.cc: Likewise. 5003 50042020-07-29 Fran��ois Dumont <fdumont@gcc.gnu.org> 5005 5006 * include/bits/hashtable_policy.h (_Node_iterator_base()): New. 5007 (operator==(const _Node_iterator_base&, const _Node_iterator_base&)): 5008 Make hidden friend. 5009 (operator!=(const _Node_iterator_base&, const _Node_iterator_base&)): 5010 Make hidden friend. 5011 (_Local_iterator_base<>): Inherits _Node_iterator_base. 5012 (_Local_iterator_base<>::_M_cur): Remove. 5013 (_Local_iterator_base<>::_M_curr()): Remove. 5014 (operator==(const _Local_iterator_base&, const _Local_iterator_base&)): 5015 Remove. 5016 (operator!=(const _Local_iterator_base&, const _Local_iterator_base&)): 5017 Remove. 5018 * include/debug/unordered_map (unordered_map<>::_M_invalidate): Adapt. 5019 (unordered_multimap<>::_M_invalidate): Adapt. 5020 * include/debug/unordered_set (unordered_set<>::_M_invalidate): Adapt. 5021 (unordered_multiset<>::_M_invalidate): Adapt. 5022 50232020-07-29 David Edelsohn <dje.gcc@gmail.com> 5024 Jonathan Wakely <jwakely@redhat.com> 5025 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 5026 5027 * testsuite/lib/dg-options.exp (add_options_for_libatomic): Add 5028 target powerpc-ibm-aix* and powerpc*-*-darwin*. 5029 * testsuite/29_atomics/atomic_float/value_init.cc: Add options 5030 for libatomic. 5031 50322020-07-29 Fran��ois Dumont <fdumont@gcc.gnu.org> 5033 5034 * include/bits/hashtable.h 5035 (_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)): 5036 Add noexcept qualification. 5037 (_Hashtable(_Hashtable&&)): Fix noexcept qualification. 5038 (_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept 5039 qualification. 5040 * include/bits/unordered_map.h 5041 (unordered_map(unordered_map&&, const allocator_type&)): Add noexcept 5042 qualification. 5043 (unordered_multimap(unordered_multimap&&, const allocator_type&)): 5044 Likewise. 5045 * include/bits/unordered_set.h 5046 (unordered_set(unordered_set&&, const allocator_type&)): Likewise. 5047 (unordered_multiset(unordered_multiset&&, const allocator_type&)): 5048 Likewise. 5049 * include/debug/unordered_map 5050 (unordered_map(unordered_map&&, const allocator_type&)): Likewise. 5051 (unordered_multimap(unordered_multimap&&, const allocator_type&)): 5052 Likewise. 5053 * include/debug/unordered_set 5054 (unordered_set(unordered_set&&, const allocator_type&)): Likewise. 5055 (unordered_multiset(unordered_multiset&&, const allocator_type&)): 5056 Likewise. 5057 * testsuite/23_containers/unordered_map/allocator/default_init.cc: 5058 New test. 5059 * testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc: 5060 New test. 5061 * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc: 5062 New test. 5063 * testsuite/23_containers/unordered_map/modifiers/move_assign.cc: 5064 New test. 5065 * testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc: 5066 New test. 5067 * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc: 5068 New test. 5069 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc: 5070 New test. 5071 * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc: 5072 New test. 5073 * testsuite/23_containers/unordered_set/allocator/default_init.cc: 5074 New test. 5075 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc: 5076 New test. 5077 * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc: 5078 New test. 5079 50802020-07-28 Fran��ois Dumont <fdumont@gcc.gnu.org> 5081 5082 * include/bits/hashtable.h 5083 (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&, 5084 const _H2&, const _Hash&, const _Equal&, const _ExtractKey&, 5085 const allocator_type&, true_type)): New. 5086 (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&, 5087 const _H2&, const _Hash&, const _Equal&, const _ExtractKey&, 5088 const allocator_type&, false_type)): New. 5089 (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&, 5090 const _H2&, const _Hash&, const _Equal&, const _ExtractKey&, 5091 const allocator_type&)): Delegate to latters. 5092 (operator=(initializer_list<value_type>)): Rehash if too small. 5093 (_M_insert(_Arg&&, const _NodeGenerator&, true_type)): Remove 5094 size_t len parameter. 5095 * include/bits/hashtable_policy.h (_Insert_base<>::_M_insert_range): 5096 Do not try to get input range distance. 5097 * testsuite/23_containers/unordered_set/cons/bucket_hint.cc: New test. 5098 * testsuite/23_containers/unordered_set/modifiers/insert.cc: New test. 5099 51002020-07-27 Fran��ois Dumont <fdumont@gcc.gnu.org> 5101 5102 * include/bits/hashtable_policy.h (_Map_base<>::at): Use 5103 _Hashtable<>::find. 5104 (_Hashtable_base<>::_Equal_hash_code<>::_S_node_equals):New. 5105 (_Hashtable_base<>::_M_node_equals): New, use latter. 5106 (_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, 5107 _RehashPolicy, false>::_M_equal): Adapt to use latter. 5108 * include/bits/hashtable.h (_Hashtable<>::_M_update_bbegin): New. 5109 (_Hashtable<>::_M_assign): Use latter. 5110 (_Hashtable<>::_M_move_assign): Likewise. 5111 (_Hashtable<>(_Hashtable<>&&)): Likewise. 5112 (_Hashtable<>(_Hashtable<>&&, const allocator_type&)): Likewise. 5113 (_Hashtable<>::swap): Likewise. 5114 (_Hashtable<>::find): Build iterator directly from _M_find_node result. 5115 (_Hashtable<>::count): Use _Hashtable<>::find. 5116 (_Hashtable<>::equal_range): Likewise. 5117 (_Hashtable<>::_M_erase(false_type, const key_type&)): Use 5118 _M_node_equals. 5119 51202020-07-27 Jonathan Wakely <jwakely@redhat.com> 5121 5122 * src/c++17/floating_from_chars.cc (from_chars_impl): Ensure 5123 that FE_NEAREST is used. 5124 * testsuite/20_util/from_chars/4.cc: Do not use if constexpr in 5125 a { target c++14 } test. 5126 [!_GLIBCXX_HAVE_USELOCALE]: Disable all tests. 5127 * testsuite/20_util/from_chars/5.cc [!_GLIBCXX_HAVE_USELOCALE]: 5128 Likewise. 5129 * testsuite/20_util/from_chars/6.cc: New test. 5130 51312020-07-22 Jonathan Wakely <jwakely@redhat.com> 5132 5133 * include/std/future (future, shared_future, promise): Add 5134 static assertions to the primary template to reject array and 5135 function types. 5136 * testsuite/30_threads/future/requirements/lwg3458.cc: New test. 5137 * testsuite/30_threads/promise/requirements/lwg3466.cc: New test. 5138 * testsuite/30_threads/shared_future/requirements/lwg3458.cc: New test. 5139 51402020-07-22 Jonathan Wakely <jwakely@redhat.com> 5141 5142 * include/bits/stl_iterator.h (reverse_iterator): Constrain 5143 converting constructor and converting assignment operator. 5144 Access source iterator's data member directly instead of 5145 calling base(). 5146 (move_iterator): Likewise. 5147 * testsuite/24_iterators/move_iterator/dr3435.cc: New test. 5148 * testsuite/24_iterators/reverse_iterator/dr3435.cc: New test. 5149 51502020-07-20 Jonathan Wakely <jwakely@redhat.com> 5151 5152 * acinclude.m4 (libtool_VERSION): Bump version. 5153 * config.h.in: Regenerate. 5154 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.29 version and new 5155 exports. 5156 * config/os/gnu-linux/ldbl-extra.ver: Add _GLIBCXX_LDBL_3.4.29 5157 version and new export. 5158 * configure: Regenerate. 5159 * configure.ac: Check for <xlocale.h> and uselocale. 5160 * crossconfig.m4: Add macro or checks for uselocale. 5161 * include/std/charconv (from_chars): Declare overloads for 5162 float, double, and long double. 5163 * src/c++17/Makefile.am: Add new file. 5164 * src/c++17/Makefile.in: Regenerate. 5165 * src/c++17/floating_from_chars.cc: New file. 5166 (from_chars): Define for float, double, and long double. 5167 * testsuite/20_util/from_chars/1_c++20_neg.cc: Prune extra 5168 diagnostics caused by new overloads. 5169 * testsuite/20_util/from_chars/1_neg.cc: Likewise. 5170 * testsuite/20_util/from_chars/2.cc: Check leading '+'. 5171 * testsuite/20_util/from_chars/4.cc: New test. 5172 * testsuite/20_util/from_chars/5.cc: New test. 5173 * testsuite/util/testsuite_abi.cc: Add new symbol versions. 5174 51752020-07-20 Jonathan Wakely <jwakely@redhat.com> 5176 5177 * include/bits/istream.tcc 5178 (basic_istream::get(__streambuf_type&, char_type): Use unsigned 5179 long long for counter and check if it would overflow _M_gcount. 5180 * testsuite/27_io/basic_istream/get/char/lwg3464.cc: New test. 5181 * testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: New test. 5182 51832020-07-17 Iain Sandoe <iain@sandoe.co.uk> 5184 5185 * include/std/coroutine: Mark the methods of the 5186 trivial awaitables as constexpr. 5187 51882020-07-14 David Edelsohn <dje.gcc@gmail.com> 5189 5190 * config/os/aix/t-aix: Set BITS from compiler cpp macro. 5191 51922020-07-13 Jonathan Wakely <jwakely@redhat.com> 5193 5194 PR libstdc++/94749 5195 PR libstdc++/96161 5196 * include/bits/istream.tcc (basic_istream::ignore(streamsize)) 5197 [n == max]: Check overflow conditions on _M_gcount. Rely on 5198 the fact that either EOF or the delimiter was reached. 5199 [n < max]: Check _M_gcount < n before checking for EOF or 5200 delimiter. 5201 (basic_istream::ignore(streamsize, char_type): Likewise. 5202 * src/c++98/compatibility.cc (istream::ignore(streamsize)) 5203 (wistream::ignore(streamsize)): Likewise. 5204 * src/c++98/istream.cc (istream::ignore(streamsize, char_type)) 5205 (wistream::ignore(streamsize, char_type)): Likewise. 5206 * testsuite/27_io/basic_istream/ignore/char/94749.cc: Check that 5207 delimiter is discarded if the number of characters ignored 5208 doesn't fit in streamsize. 5209 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: 5210 Likewise. 5211 * testsuite/27_io/basic_istream/ignore/char/96161.cc: New test. 5212 * testsuite/27_io/basic_istream/ignore/wchar_t/96161.cc: New test. 5213 52142020-07-08 Fran��ois Dumont <fdumont@gcc.gnu.org> 5215 5216 * include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept 5217 qualification based only on _Compare one. 5218 * testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add 5219 static asserts. 5220 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc: 5221 Likewise. 5222 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc: 5223 Likewise. 5224 * testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise. 5225 52262020-07-07 Jonathan Wakely <jwakely@redhat.com> 5227 5228 * include/std/limits: Whitespace changes. 5229 52302020-07-07 Jonathan Wakely <jwakely@redhat.com> 5231 5232 * include/Makefile.am: Remove bits/int_limits.h. 5233 * include/Makefile.in: Regenerate. 5234 * include/bits/int_limits.h: Removed. 5235 * include/bits/parse_numbers.h (_Select_int_base): Replace 5236 __int_limits with __int_traits. 5237 * include/bits/range_access.h (_SSize::operator()): Likewise. 5238 * include/ext/numeric_traits.h (__numeric_traits_integer): Add 5239 static assertion. 5240 (__int_traits): New alias template. 5241 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) 5242 (__countr_zero, __countr_one, __popcount, __bit_ceil) 5243 (__bit_floor, __bit_width) Replace __int_limits with 5244 __int_traits. 5245 * include/std/charconv (__to_chars_8, __from_chars_binary) 5246 (__from_chars_alpha_to_num, from_chars): Likewise. 5247 * include/std/memory_resource (polymorphic_allocator::allocate) 5248 (polymorphic_allocator::allocate_object): Likewise. 5249 * include/std/string_view (basic_string_view::_S_compare): 5250 Likewise. 5251 * include/std/utility (cmp_equal, cmp_less, in_range): Likewise. 5252 52532020-07-07 Jonathan Wakely <jwakely@redhat.com> 5254 5255 * include/std/limits: Whitespace changes. 5256 52572020-07-06 Jonathan Wakely <jwakely@redhat.com> 5258 5259 * include/std/optional (_Optional_payload_base, _Optional_base) 5260 (optional, __optional_hash_call_base): Adjust whitespace and 5261 other formatting. Remove redundant && tokens on template 5262 arguments to type traits. 5263 52642020-07-06 Jonathan Wakely <jwakely@redhat.com> 5265 5266 * include/std/optional (make_optional): Add enable_if 5267 constraints and noexcept-specifier to each overload. 5268 * testsuite/20_util/optional/make_optional-2.cc: New test. 5269 52702020-07-06 Jonathan Wakely <jwakely@redhat.com> 5271 5272 PR libstdc++/96036 5273 * include/std/optional (optional): Add noexcept-specifier to 5274 every constructor, assignment operator, emplace function and 5275 dereference operator. 5276 * testsuite/20_util/optional/assignment/noexcept.cc: New test. 5277 * testsuite/20_util/optional/cons/noexcept.cc: New test. 5278 52792020-07-06 Jonathan Wakely <jwakely@redhat.com> 5280 5281 PR libstdc++/96063 5282 * include/bits/fs_dir.h: Use consistent tag in class-head. 5283 * include/bits/localefwd.h: Likewise. 5284 * include/bits/regex.h: Likewise. 5285 * include/bits/stl_map.h: Likewise. 5286 * include/bits/stl_multimap.h: Likewise. 5287 * include/bits/stl_multiset.h: Likewise. 5288 * include/bits/stl_set.h: Likewise. 5289 * include/std/complex: Likewise. 5290 * include/std/functional: Likewise. 5291 * include/std/future: Likewise. 5292 * include/std/system_error: Likewise. 5293 * include/std/thread: Likewise. 5294 * include/std/tuple: Likewise. 5295 * include/std/type_traits: Likewise. 5296 * include/std/valarray: Likewise. 5297 52982020-07-02 Jonathan Wakely <jwakely@redhat.com> 5299 5300 * testsuite/27_io/basic_ios/conv/voidptr.cc: Add c++98_only 5301 target selector. 5302 53032020-07-02 Jonathan Wakely <jwakely@redhat.com> 5304 5305 * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: Add 5306 c++98_only target selector. 5307 * testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc: 5308 Likewise. 5309 * testsuite/18_support/headers/cstdint/std_c++0x_neg.cc: 5310 Likewise. 5311 * testsuite/18_support/headers/new/synopsis_cxx98.cc: Likewise. 5312 * testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc: 5313 Likewise. 5314 * testsuite/20_util/headers/type_traits/std_c++0x_neg.cc: 5315 Likewise. 5316 * testsuite/23_containers/headers/array/std_c++0x_neg.cc: 5317 Likewise. 5318 * testsuite/23_containers/headers/tuple/std_c++0x_neg.cc: 5319 Likewise. 5320 * testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc: 5321 Likewise. 5322 * testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc: 5323 Likewise. 5324 * testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc: 5325 Likewise. 5326 * testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc: 5327 Likewise. 5328 * testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc: 5329 Likewise. 5330 * testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc: 5331 Likewise. 5332 * testsuite/26_numerics/headers/random/std_c++0x_neg.cc: 5333 Likewise. 5334 * testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Likewise. 5335 * testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Likewise. 5336 * testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc: 5337 Likewise. 5338 * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: 5339 Likewise. 5340 * testsuite/30_threads/headers/future/std_c++0x_neg.cc: 5341 Likewise. 5342 * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: Likewise. 5343 * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: 5344 Likewise. 5345 53462020-07-02 Ville Voutilainen <ville.voutilainen@gmail.com> 5347 5348 PR libstdc++/91807 5349 * include/std/variant 5350 (_Copy_assign_base::operator=(const _Copy_assign_base&): 5351 Do the move-assignment from a temporary so that the temporary 5352 is constructed with an explicit index. 5353 * testsuite/20_util/variant/91807.cc: New. 5354 53552020-07-02 Jonathan Wakely <jwakely.gcc@gmail.com> 5356 5357 PR libstdc++/91153 5358 PR target/93224 5359 * testsuite/29_atomics/atomic_float/1.cc: Use different values 5360 for tests. 5361 * testsuite/29_atomics/atomic_ref/float.cc: Likewise. 5362 53632020-07-01 Jonathan Wakely <jwakely@redhat.com> 5364 5365 PR libstdc++/94627 5366 * include/bits/regex.h (operator==, operator!=): Remove noexcept 5367 equality comparisons for match_results. 5368 * testsuite/28_regex/match_results/94627.cc: New test. 5369 53702020-07-01 Martin Sebor <msebor@redhat.com> 5371 5372 * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: Adjust 5373 text of expected warning. 5374 * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc: Same. 5375 * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: Same. 5376 * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: Same. 5377 * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: Same. 5378 53792020-06-29 Ville Voutilainen <ville.voutilainen@gmail.com> 5380 5381 Revert: 5382 2020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com> 5383 5384 * include/bits/basic_string.h (string(_CharT*, const _Alloc&)): 5385 Add a __nonnull__ attribute. 5386 * testsuite/21_strings/basic_string/cons/char/nonnull.cc: New. 5387 * testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise. 5388 53892020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com> 5390 5391 * include/bits/basic_string.h (string(_CharT*, const _Alloc&)): 5392 Add a __nonnull__ attribute. 5393 * testsuite/21_strings/basic_string/cons/char/nonnull.cc: New. 5394 * testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise. 5395 53962020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com> 5397 5398 PR libstdc++/95915 5399 * include/std/type_traits (is_literal_type, is_literal_type_v): 5400 Deprecate in C++17. 5401 * include/std/variant (_Uninitialized): 5402 Adjust the condition and the comment. 5403 * testsuite/20_util/is_literal_type/deprecated-1z.cc: New. 5404 * testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc: 5405 Adjust. 5406 * testsuite/20_util/is_literal_type/requirements/typedefs.cc: Likewise. 5407 * testsuite/20_util/is_literal_type/value.cc: Likewise. 5408 * testsuite/20_util/optional/constexpr/nullopt.cc: 5409 Use __is_literal_type directly. 5410 * testsuite/20_util/optional/nullopt.cc: Likewise. 5411 * testsuite/20_util/variable_templates_for_traits.cc: Adjust. 5412 * testsuite/20_util/variant/95915.cc: New. 5413 * testsuite/20_util/variant/compile.cc: Add new test. 5414 * testsuite/experimental/optional/constexpr/nullopt.cc: 5415 Use __is_literal_type directly. 5416 * testsuite/experimental/optional/nullopt.cc: Likewise. 5417 * testsuite/experimental/type_traits/value.cc: Adjust. 5418 * testsuite/util/testsuite_common_types.h: 5419 Use __is_literal_type directly. 5420 54212020-06-24 Jonathan Wakely <jwakely@redhat.com> 5422 5423 * include/std/charconv (__from_chars_binary): Ignore leading zeros. 5424 * testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases, 5425 not just 10 and 16. 5426 * testsuite/20_util/from_chars/3.cc: New test. 5427 54282020-06-24 Jonathan Wakely <jwakely@redhat.com> 5429 5430 * include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers. 5431 * include/std/charconv (__detail::__to_chars): Avoid 5432 -Wsign-compare warning. 5433 54342020-06-24 Jonathan Wakely <jwakely@redhat.com> 5435 5436 PR libstdc++/95851 5437 * include/std/charconv (__to_chars_i): Check for zero-sized 5438 buffer unconditionally. 5439 * testsuite/20_util/to_chars/95851.cc: New test. 5440 54412020-06-23 Jonathan Wakely <jwakely@redhat.com> 5442 5443 * testsuite/20_util/from_chars/1_c++20_neg.cc: Check enumeration 5444 type. 5445 * testsuite/20_util/from_chars/1_neg.cc: Likewise. Move dg-error 5446 directives outside preprocessor condition. 5447 54482020-06-23 Jonathan Wakely <jwakely@redhat.com> 5449 5450 PR libstdc++/95832 5451 * include/std/variant (__detail::__variant::_Build_FUN): Remove 5452 partial specialization to prevent narrowing conversions to bool. 5453 * testsuite/20_util/variant/compile.cc: Test non-narrowing 5454 conversions to bool. 5455 * testsuite/20_util/variant/run.cc: Likewise. 5456 54572020-06-23 Jonathan Wakely <jwakely@redhat.com> 5458 5459 * doc/Makefile.in: Regenerate. 5460 * include/Makefile.in: Regenerate. 5461 * libsupc++/Makefile.in: Regenerate. 5462 * po/Makefile.in: Regenerate. 5463 * python/Makefile.in: Regenerate. 5464 * src/Makefile.in: Regenerate. 5465 * src/c++11/Makefile.in: Regenerate. 5466 * src/c++17/Makefile.in: Regenerate. 5467 * src/c++98/Makefile.in: Regenerate. 5468 * src/filesystem/Makefile.in: Regenerate. 5469 * testsuite/Makefile.in: Regenerate. 5470 54712020-06-22 David Edelsohn <dje.gcc@gmail.com> 5472 5473 * Makefile.am: Use -include. 5474 * Makefile.in: Regenerate. 5475 54762020-06-21 David Edelsohn <dje.gcc@gmail.com> 5477 5478 * Makefile.am (tmake_file): Build and install AIX-style FAT libraries. 5479 * Makefile.in: Regenerate. 5480 * configure.ac (tmake_file): Substitute. 5481 * configure: Regenerate. 5482 * configure.host (aix*): Define tmake_file. 5483 * config/os/aix/t-aix: New file. 5484 54852020-06-20 Jason Merrill <jason@redhat.com> 5486 5487 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: 5488 Remove greedy_ops tests. 5489 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: 5490 Remove greedy_ops tests. 5491 54922020-06-19 Jonathan Wakely <jwakely@redhat.com> 5493 5494 PR libstdc++/95765 5495 * include/bits/stl_algobase.h (__size_to_integer(float)) 5496 (__size_to_integer(double), __size_to_integer(long double)) 5497 (__size_to_integer(__float128)): Cast return type explicitly. 5498 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>): 5499 Remove unused typedef. 5500 55012020-06-19 Jonathan Wakely <jwakely@redhat.com> 5502 5503 * include/bits/stl_pair.h (_Index_tuple): Remove redundant 5504 namespace qualification. 5505 (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)): 5506 Likewise. 5507 * include/std/tuple (_Head_base, _Tuple_impl, tuple_size) 5508 (tuple_element, __get_helper, get, __make_tuple_impl) 5509 (__make_1st_indices, __tuple_concater) 5510 (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)): 5511 Likewise. 5512 * include/std/utility (tuple_element, __is_tuple_like_impl) 5513 (tuple_size, __pair_get, get): Likewise. 5514 55152020-06-19 Jonathan Wakely <jwakely@redhat.com> 5516 5517 * include/bits/std_function.h (function): Define all member 5518 functions inline. 5519 55202020-06-19 Marc Glisse <marc.glisse@inria.fr> 5521 5522 * include/bits/stl_algo.h (__includes): Simplify the code. 5523 55242020-06-19 Marc Glisse <marc.glisse@inria.fr> 5525 5526 * include/std/optional (optional()): Explicitly define it. 5527 55282020-06-17 Jonathan Wakely <jwakely@redhat.com> 5529 5530 PR libstdc++/94540 5531 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>): 5532 Construct the first value at *__first instead of on the stack. 5533 (__uninitialized_default_n_1<true>): Likewise. 5534 Improve comments on several of the non-standard algorithms. 5535 * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc: 5536 New test. 5537 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc: 5538 New test. 5539 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc: 5540 New test. 5541 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc: 5542 New test. 5543 * testsuite/23_containers/vector/cons/94540.cc: New test. 5544 55452020-06-17 Jonathan Wakely <jwakely@redhat.com> 5546 5547 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc: 5548 Replace Value type with int so trivial code path is used. 5549 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc: 5550 Likewise. 5551 55522020-06-17 Jonathan Wakely <jwakely@redhat.com> 5553 5554 * include/bits/stl_uninitialized.h (uninitialized_fill_n): Only 5555 use std::fill_n when the size is an integral type. 5556 (__uninitialized_default_n): Likewise. 5557 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc: 5558 New test. 5559 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc: 5560 New test. 5561 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc: 5562 New test. 5563 55642020-06-16 Jonathan Wakely <jwakely@redhat.com> 5565 5566 PR libstdc++/95282 5567 * include/bits/atomic_base.h (__atomic_impl::load): Use the _Val 5568 alias instead of deducing _Tp as an unqualified type. 5569 (__atomic_impl::exchange): Use the _Val alias to remove volatile 5570 from the reinterpret_cast result type. 5571 55722020-06-16 Jonathan Wakely <jwakely@redhat.com> 5573 5574 * include/std/atomic (atomic): Add static assertions. 5575 * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test. 5576 55772020-06-16 Patrick Palka <ppalka@redhat.com> 5578 5579 PR libstdc++/94003 5580 * testsuite/20_util/is_constructible/94003.cc: New test. 5581 55822020-06-15 Jonathan Wakely <jwakely@redhat.com> 5583 5584 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): 5585 Update value for C++20. 5586 * include/std/version (__cpp_lib_constexpr_char_traits): Likewise. 5587 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc: 5588 Update expected value. 5589 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: 5590 Likewise. 5591 55922020-06-15 Paul Keir <paul.keir@uws.ac.uk> 5593 5594 * include/bits/char_traits.h (char_traits::move): constexpr move with 5595 overlap was using copy_backward incorrectly. 5596 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: 5597 New test. 5598 55992020-06-12 Jonathan Wakely <jwakely@redhat.com> 5600 5601 * testsuite/29_atomics/atomic_flag/clear/1.cc: Also test clear() 5602 when the value is currently set. 5603 * testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc: 5604 Actually check the return value. 5605 * testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc: 5606 Likewise. 5607 56082020-06-12 Jonathan Wakely <jwakely@redhat.com> 5609 5610 * include/bits/atomic_base.h (atomic_flag::test): Add missing 5611 const qualifiers. 5612 * testsuite/29_atomics/atomic_flag/test/explicit.cc: Add 5613 dg-options and verify results of test function. 5614 * testsuite/29_atomics/atomic_flag/test/implicit.cc: Likewise. 5615 56162020-06-11 Jonathan Wakely <jwakely@redhat.com> 5617 5618 PR libstdc++/94749 5619 * include/bits/istream.tcc (basic_istream::ignore(streamsize, CharT)): 5620 Only discard an extra character if we didn't already reach the 5621 maximum number. 5622 * src/c++98/istream.cc (istream::ignore(streamsiz, char)) 5623 (wistream::ignore(streamsize, wchar_t)): Likewise. 5624 * testsuite/27_io/basic_istream/ignore/char/94749.cc: New test. 5625 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: New test. 5626 56272020-06-10 Patrick Palka <ppalka@redhat.com> 5628 5629 PR libstdc++/95578 5630 * include/bits/ranges_algo.h (__lexicographical_compare_fn): 5631 Also check that the iterator and sentinel have the same type before 5632 applying the unwrapping optimization for __normal_iterator. 5633 Split the check into two, one for the first iterator/sentinel 5634 pair and another for second iterator/sentinel pair. Remove uses 5635 of __niter_base, and remove uses of std::move on a 5636 __normal_iterator. 5637 * include/bits/ranges_algobase.h (__equal_fn): Likewise. 5638 (__copy_or_move): Likewise. Perform similar adjustments for 5639 the reverse_iterator and move_iterator optimizations. Inline 5640 the checks into the if-constexprs, and use using-declarations to 5641 make them less visually noisy. Remove uses of __niter_wrap. 5642 (__copy_or_move_backward): Likewise. 5643 * testsuite/25_algorithms/copy/95578.cc: New test. 5644 * testsuite/25_algorithms/copy_backward/95578.cc: New test. 5645 * testsuite/25_algorithms/equal/95578.cc: New test. 5646 * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test. 5647 * testsuite/25_algorithms/move/95578.cc: New test. 5648 * testsuite/25_algorithms/move_backward/95578.cc: New test. 5649 56502020-06-10 Fran��ois Dumont <fdumont@gcc.gnu.org> 5651 Jonathan Wakely <jwakely@redhat.com> 5652 5653 * include/bits/deque.tcc (__lex_cmp_dit): New. 5654 (__lexicographical_compare_aux1): Define overloads for deque 5655 iterators. 5656 * include/bits/stl_algobase.h (__lexicographical_compare::__3way): 5657 New static member function. 5658 (__lexicographical_compare<true>::__3way): Likewise. 5659 (__lexicographical_compare<true>::__lc): Use __3way. 5660 (__lexicographical_compare_aux): Rename to 5661 __lexicographical_compare_aux1 and declare overloads for deque 5662 iterators. 5663 (__lexicographical_compare_aux): Define new forwarding function 5664 that calls __lexicographical_compare_aux1 and declare new overloads 5665 for safe iterators. 5666 (lexicographical_compare): Do not use __niter_base on 5667 parameters. 5668 * include/debug/safe_iterator.tcc 5669 (__lexicographical_compare_aux): Define overloads for safe 5670 iterators. 5671 * testsuite/25_algorithms/lexicographical_compare/1.cc: Add 5672 checks with random access iterators. 5673 * testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc: 5674 New test. 5675 56762020-06-09 Jonathan Wakely <jwakely@redhat.com> 5677 5678 * include/bits/stl_iterator.h (move_iterator::operator=): Define. 5679 * testsuite/24_iterators/move_iterator/dr3265.cc: New test. 5680 56812020-06-09 Jonathan Wakely <jwakely@redhat.com> 5682 5683 * include/std/optional (bad_optional_access): Define default 5684 constructor and destructor as defaulted. 5685 * testsuite/20_util/optional/bad_access.cc: New test. 5686 56872020-06-08 Jonathan Wakely <jwakely@redhat.com> 5688 5689 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error 5690 line number. 5691 * testsuite/20_util/default_delete/void_neg.cc: Likewise. 5692 56932020-06-08 Jonathan Wakely <jwakely@redhat.com> 5694 5695 * include/bits/unique_ptr.h (operator<<): Define for C++20. 5696 * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test. 5697 56982020-06-04 Jonathan Wakely <jwakely@redhat.com> 5699 5700 * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref) 5701 (__detail::__cat, __detail::__diff): Move to class scope in the 5702 relevant __iterator_traits specializations. 5703 (__iterator_traits<>): Use nested class templates instead of ones from 5704 namespace __detail. 5705 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to 5706 class scope in iterator_traits<common_iterator<I, S>>. 5707 (iterator_traits<common_iterator<I, S>>): Use nested class template 5708 instead of __detail::__common_iter_ptr. 5709 57102020-06-04 Fran��ois Dumont <fdumont@gcc.gnu.org> 5711 5712 * include/bits/stl_algo.h (__copy_n_a): Move to ... 5713 * include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict 5714 parameter. 5715 (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)): 5716 Declare. 5717 (__niter_base(const _Safe_iterator<_Ite, _Seq, 5718 random_access_iterator_tag>&)): Declare. 5719 (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>, 5720 _Deque_iterator<>)): Declare. 5721 * include/bits/deque.tcc 5722 (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>, 5723 _Deque_iterator<>)): New. 5724 (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)): 5725 New. 5726 * include/bits/streambuf_iterator.h 5727 (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt. 5728 * include/debug/safe_iterator.tcc (__niter_base): New. 5729 * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc 5730 (test03): New. 5731 * testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc: 5732 New test. 5733 * testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc: 5734 New test. 5735 * testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test. 5736 * testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc: 5737 New test. 5738 57392020-06-04 Jonathan Wakely <jwakely@redhat.com> 5740 5741 * include/bits/ranges_algobase.h (__copy_n_fn): Only call 5742 ranges::copy for positive values. 5743 * include/bits/stl_algo.h (copy_n): Convert Size argument to an 5744 integral type and only call __copy_n for positive values. 5745 * testsuite/util/testsuite_iterators.h 5746 (random_access_iterator_wrapper::operator+=): Fix range check for 5747 negative values. 5748 (output_container, input_container, forward_container) 5749 (bidirectional_container, random_access_container): New alias 5750 templates. 5751 * testsuite/25_algorithms/copy_n/5.cc: New test. 5752 57532020-06-02 Jonathan Wakely <jwakely@redhat.com> 5754 5755 PR libstdc++/90102 5756 * include/debug/deque (deque(const _Base&)): Replace parameter 5757 with a struct that wraps a const _Base&. 5758 * include/debug/forward_list (forward_list(_Base_ref)): New 5759 constructor. 5760 * include/debug/list (list(const _Base&)): Replace parameter 5761 with a struct that wraps a const _Base&. 5762 * include/debug/map.h (map(const _Base&)): Likewise. 5763 * include/debug/multimap.h (multimap(const _Base&)): Likewise. 5764 * include/debug/multiset.h (multiset(const _Base&)): Likewise. 5765 * include/debug/set.h (set(const _Base&)): Likewise. 5766 * include/debug/unordered_map (unordered_map(const _Base&)) 5767 (unordered_multimap(const _Base&)): Likewise. 5768 * include/debug/unordered_set (unordered_set(const _Base&)) 5769 (unordered_multiset(const _Base&)): Likewise. 5770 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: 5771 Adjust dg-error line number. 5772 * include/debug/vector (vector(const _Base&)): Likewise. 5773 * testsuite/23_containers/deque/debug/90102.cc: New test. 5774 * testsuite/23_containers/forward_list/debug/90102.cc: New test. 5775 * testsuite/23_containers/list/debug/90102.cc: New test. 5776 * testsuite/23_containers/map/debug/90102.cc: New test. 5777 * testsuite/23_containers/multimap/debug/90102.cc: New test. 5778 * testsuite/23_containers/multiset/debug/90102.cc: New test. 5779 * testsuite/23_containers/set/debug/90102.cc: New test. 5780 * testsuite/23_containers/unordered_map/debug/90102.cc: New test. 5781 * testsuite/23_containers/unordered_multimap/debug/90102.cc: New test. 5782 * testsuite/23_containers/unordered_multiset/debug/90102.cc: New test. 5783 * testsuite/23_containers/unordered_set/debug/90102.cc: New test. 5784 * testsuite/23_containers/vector/debug/90102.cc: New test. 5785 57862020-06-01 Jonathan Wakely <jwakely@redhat.com> 5787 5788 PR libstdc++/95392 5789 * include/bits/fs_path.h (path::_S_to_string): Move to 5790 namespace-scope and rename to ... 5791 (__detail::__string_from_range): ... this. 5792 [WINDOWS] (__detail::__wstr_from_utf8): New function template to 5793 convert a char sequence containing UTF-8 to wstring. 5794 (path::_S_convert(Iter, Iter)): Adjust call to _S_to_string. 5795 (path::_S_convert_loc(Iter, Iter, const locale&)): Likewise. 5796 (u8path(InputIterator, InputIterator)) [WINDOWS]: Use 5797 __string_from_range to obtain a contiguous range and 5798 __wstr_from_utf8 to obtain a wide string. 5799 (u8path(const Source&)) [WINDOWS]: Use __effective_range to 5800 obtain a contiguous range and __wstr_from_utf8 to obtain a wide 5801 string. 5802 (path::_S_convert(const _EcharT*, const _EcharT)) [WINDOWS]: 5803 Use __wstr_from_utf8. 5804 58052020-06-01 Jonathan Wakely <jwakely@redhat.com> 5806 5807 * testsuite/util/testsuite_iterators.h: 5808 (input_iterator_wrapper::operator++(int)): Return proxy object. 5809 58102020-06-01 Jonathan Wakely <jwakely@redhat.com> 5811 5812 * doc/xml/manual/evolution.xml: Document deprecation of 5813 __is_nullptr_t and removal of std::allocator members. 5814 * doc/html/manual/api.html: Regenerate. 5815 58162020-06-01 Jonathan Wakely <jwakely@redhat.com> 5817 5818 * doc/xml/manual/containers.xml: Replace <xref> with <link>. 5819 * doc/xml/manual/evolution.xml: Likewise. 5820 * doc/html/manual/api.html: Regenerate. 5821 * doc/html/manual/containers.html: Regenerate. 5822 58232020-06-01 Gerald Pfeifer <gerald@pfeifer.com> 5824 5825 * doc/xml/faq.xml: Adjust Valgrind reference and remove another. 5826 * doc/html/faq.html: Regenerate. 5827 58282020-06-01 Gerald Pfeifer <gerald@pfeifer.com> 5829 5830 * doc/xml/manual/policy_data_structures_biblio.xml: Remove 5831 stray change. 5832 58332020-06-01 Gerald Pfeifer <gerald@pfeifer.com> 5834 5835 * doc/xml/manual/policy_data_structures_biblio.xml: Switch 5836 www.cs.princeton.edu to https. 5837 * doc/html/manual/policy_data_structures.html: Regenerate. 5838 58392020-05-31 Douglas B Rupp <douglas.b.rupp@gmail.com> 5840 5841 * crossconfig.m4 (<*-vxworks>): Check for more math decls. 5842 * configure: Rebuild. 5843 58442020-05-29 H.J. Lu <hjl.tools@gmail.com> 5845 5846 PR bootstrap/95413 5847 * configure: Regenerated. 5848 58492020-05-29 Fran��ois Dumont <fdumont@gcc.gnu.org> 5850 5851 PR libstdc++/95079 5852 * include/bits/hashtable_policy.h (_Insert_base<>::try_emplace): New. 5853 * include/bits/unordered_map.h (unordered_map<>::try_emplace): Adapt. 5854 (unordered_map<>::insert_or_assign): Adapt. 5855 58562020-05-27 Jonathan Wakely <jwakely@redhat.com> 5857 5858 PR libstdc++/95282 5859 * include/bits/atomic_base.h (__atomic_impl::load): Add 5860 cv-qualifiers to parameter so that _Tp is deduced as the 5861 unqualified type. 5862 * testsuite/29_atomics/atomic_float/95282.cc: New test. 5863 58642020-05-27 Jonathan Wakely <jwakely@redhat.com> 5865 5866 PR libstdc++/95322 5867 * include/std/ranges (transform_view::_Sentinel): Allow hidden 5868 friends to work with _Iterator<true> and _Iterator<false>. 5869 (join_view::_Sentinel): Likewise. 5870 * testsuite/std/ranges/adaptors/95322.cc: New test. 5871 58722020-05-27 Jonathan Wakely <jwakely@redhat.com> 5873 5874 PR libstdc++/94354 5875 * include/bits/stl_iterator.h (reverse_iterator): Fix comparison 5876 operators to use the correct operations on the underlying 5877 iterators. 5878 * testsuite/24_iterators/reverse_iterator/rel_ops.cc: New test. 5879 58802020-05-27 Jonathan Wakely <jwakely@redhat.com> 5881 5882 * testsuite/18_support/comparisons/categories/zero_neg.cc: New test. 5883 58842020-05-26 Patrick Palka <ppalka@redhat.com> 5885 5886 PR libstdc++/95322 5887 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy): 5888 Remove and instead define it ... 5889 (common_iterator::_Proxy): ... here. 5890 (common_iterator::operator->): Use it. 5891 * testsuite/24_iterators/common_iterator/2.cc: New test. 5892 * testsuite/std/ranges/adaptors/95322.cc: New test. 5893 58942020-05-23 Patrick Palka <ppalka@redhat.com> 5895 5896 PR libstdc++/93978 5897 * testsuite/std/ranges/adaptors/93978.cc: Add -Wall to 5898 dg-additional-options. Avoid unused-but-set-variable warning. 5899 59002020-05-23 Jonathan Wakely <jwakely@redhat.com> 5901 5902 PR libstdc++/95289 5903 * include/debug/helper_functions.h (__get_distance): Only declare 5904 as a constexpr function for C++14 and up. 5905 * testsuite/25_algorithms/copy/debug/95289.cc: New test. 5906 5907 * include/bits/fs_path.h (__detail::_S_range_begin) 5908 (__detail::_S_range_end, path::_S_string_from_iter): Replace with 5909 overloaded function template __detail::__effective_range. 5910 (__detail::__effective_range): New overloaded function template to 5911 create a basic_string or basic_string_view for an effective range. 5912 (__detail::__value_type_is_char): Use __detail::__effective_range. 5913 Do not use remove_const on value type. 5914 (__detail::__value_type_is_char_or_char8_t): Likewise. 5915 (path::path(const Source&, format)) 5916 (path::path(const Source&, const locale&)) 5917 (path::operator/=(const Source&), path::append(const Source&)) 5918 (path::concat(const Source&)): Use __detail::__effective_range. 5919 (path::_S_to_string(InputIterator, InputIterator)): New function 5920 template to create a string view if possible, or string otherwise. 5921 (path::_S_convert): Add overloads that convert a string returned 5922 by __detail::__effective_range. Use if-constexpr to inline conversion 5923 logic from all overloads of _Cvt::_S_convert. 5924 (path::_S_convert_loc): Add overload that converts a string. Use 5925 _S_to_string to avoid allocation when possible. 5926 (path::_Cvt): Remove. 5927 (path::operator+=(CharT)): Remove indirection through path::concat. 5928 * include/experimental/bits/fs_path.h (path::_S_convert_loc): Add 5929 overload for non-const pointers, to avoid constructing a std::string. 5930 * src/c++17/fs_path.cc (path::_S_convert_loc): Replace conditional 5931 compilation with call to _S_convert. 5932 5933 * include/bits/fs_path.h (__detail::_S_range_begin) 5934 (__detail::_S_range_end): Remove unintentional static specifiers. 5935 * include/experimental/bits/fs_path.h (__detail::_S_range_begin) 5936 (__detail::_S_range_end): Likewise. 5937 5938 * include/bits/fs_path.h (filesystem::__detail::__is_encoded_char): 5939 Replace alias template with variable template. Don't remove const. 5940 (filesystem::__detail::__is_path_src): Replace overloaded function 5941 template with variable template and specializations. 5942 (filesystem::__detail::__is_path_iter_src): Replace alias template 5943 with class template. 5944 (filesystem::__detail::_Path): Use __is_path_src. Remove support for 5945 iterator pairs. 5946 (filesystem::__detail::_Path2): New alias template for checking 5947 InputIterator requirements. 5948 (filesystem::__detail::__constructible_from): Remove. 5949 (filesystem::path): Replace _Path<Iter, Iter> with _Path2<Iter>. 5950 * testsuite/27_io/filesystem/path/construct/80762.cc: Check with two 5951 constructor arguments of void and void* types. 5952 59532020-05-21 Matthias Kretz <kretz@kde.org> 5954 5955 * testsuite/Makefile.am: Remove dup target_triplet and set tool, 5956 allowing runtest to work without arguments. 5957 * testsuite/Makefile.in: Regenerate. 5958 59592020-05-21 Jonathan Wakely <jwakely@redhat.com> 5960 5961 PR libstdc++/93983 5962 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator): 5963 Reorder constraints to avoid recursion when constructors use 5964 iterator_traits (LWG 3420). 5965 * testsuite/24_iterators/customization_points/lwg3420.cc: New test. 5966 5967 * include/experimental/socket (basic_socket::is_open() 5968 (basic_socket_acceptor::is_open()): Use _GLIBCXX_NODISCARD macro. 5969 5970 * include/experimental/bits/net.h (__endpoint, __protocol) 5971 (__acceptable_protocol, __inet_protocol): New concepts. 5972 (__detail::__is_endpoint): Move trait from <experimental/socket>. 5973 (__is_protocol, __is_acceptable_protocol, __is_inet_protocol): New 5974 traits. 5975 (__endpoint, __protocol, __acceptable_protocol): New variable 5976 templates. 5977 * include/experimental/socket (__is_endpoint): Move to net.h header. 5978 (basic_socket, basic_socket_acceptor): Check requirements. 5979 5980 * include/experimental/executor (use_future_t::use_future_t()): Fix 5981 incorrect noexcept-specifier. 5982 * include/experimental/internet (basic_resolver_results): Adjust 5983 whitespace. 5984 * include/experimental/socket (__basic_socket_impl::release): Add 5985 member function. 5986 (basic_socket(io_context&, const endpoint_type&)): Fix argument to 5987 target constructor. 5988 (basic_socket::release(), basic_socket::release(error_code&)): Add 5989 missing member functions. 5990 (basic_socket::is_open()): Add nodiscard attribute. 5991 (basic_socket::close(error_code&)): Pass argument to base function. 5992 (basic_socket_acceptor::release()) 5993 (basic_socket_acceptor::release(error_code&)): Add missing member 5994 functions. 5995 (basic_socket_acceptor::is_open()): Add nodiscard attribute. 5996 (basic_socket_streambuf::error()): Add noexcept. 5997 (basic_socket_iostream::error()): Likewise. 5998 * testsuite/experimental/net/socket/basic_socket.cc: New test. 5999 6000 * include/experimental/buffer: Replace typedefs with 6001 alias-declarations. 6002 * include/experimental/executor: Likewise. 6003 * include/experimental/internet: Likewise. 6004 * include/experimental/socket: Likewise. 6005 * include/experimental/timer: Likewise. 6006 60072020-05-19 Jonathan Wakely <jwakely@redhat.com> 6008 6009 PR libstdc++/94087 6010 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be 6011 passed in. 6012 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand 6013 fallback. 6014 (random_device::_M_init): Use __x86_rdseed_rdrand when both 6015 instructions are available. 6016 * testsuite/26_numerics/random/random_device/94087.cc: New test. 6017 60182020-05-19 Patrick Palka <ppalka@redhat.com> 6019 6020 PR c++/66439 6021 * testsuite/20_util/pair/astuple/get_neg.cc: Prune "type/value 6022 mismatch" messages. 6023 * testsuite/20_util/tuple/element_access/get_neg.cc: Likewise. 6024 60252020-05-15 H.J. Lu <hongjiu.lu@intel.com> 6026 6027 PR bootstrap/95147 6028 * configure: Regenerated. 6029 60302020-05-14 H.J. Lu <hongjiu.lu@intel.com> 6031 6032 * configure: Regenerated. 6033 60342020-05-13 Alexandre Oliva <oliva@adacore.com> 6035 6036 PR libstdc++/77691 6037 * include/experimental/memory_resource 6038 (__resource_adaptor_imp::do_allocate): Handle max_align_t on 6039 x86-vxworks as on x86-solaris. 6040 (__resource_adaptor_imp::do_deallocate): Likewise. 6041 * testsuite/experimental/memory_resource/new_delete_resource.cc: 6042 Drop xfail. 6043 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris. 6044 (test03): Drop max-align test for char-aligned alloc. 6045 60462020-05-08 Ulrich Drepper <drepper@redhat.com> 6047 6048 * include/bits/atomic_base.h (atomic_flag): Implement test member 6049 function. 6050 * include/std/version: Define __cpp_lib_atomic_flag_test. 6051 * testsuite/29_atomics/atomic_flag/test/explicit.cc: New file. 6052 * testsuite/29_atomics/atomic_flag/test/implicit.cc: New file. 6053 60542020-05-07 Jonathan Wakely <jwakely@redhat.com> 6055 6056 PR libstdc++/94971 (partial) 6057 * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify 6058 std::sample using macro to work in parallel mode. 6059 (__sort_fn): Likewise for std::sort. 6060 (ranges::__nth_element_fn): Likewise for std::nth_element. 6061 * include/bits/stl_algobase.h (lexicographical_compare_three_way): 6062 Likewise for std::__min_cmp. 6063 * include/parallel/algobase.h (lexicographical_compare_three_way): 6064 Add to namespace std::__parallel. 6065 6066 PR c/92472 6067 * include/parallel/multiway_merge.h (_GuardedIterator::operator*) 6068 (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*) 6069 (_UnguardedIterator::operator _RAIter): Add const qualifier. 6070 (operator<(_GuardedIterator&, _GuardedIterator&) 6071 (operator<=(_GuardedIterator&, _GuardedIterator&) 6072 (operator<(_UnguardedIterator&, _UnguardedIterator&) 6073 (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change 6074 parameters to const references. 6075 60762020-05-07 Eric Botcazou <ebotcazou@adacore.com> 6077 6078 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update. 6079 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise. 6080 60812020-05-06 Fran��ois Dumont <fdumont@gcc.gnu.org> 6082 6083 * include/bits/stl_algobase.h (struct _Bit_iterator): New declaration. 6084 (std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise. 6085 * include/bits/stl_bvector.h (__fill_bvector): Move outside 6086 _GLIBCXX_STD_C namespace. 6087 (fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename 6088 into... 6089 (__fill_a1): ...this. 6090 * testsuite/25_algorithms/fill/bvector/1.cc: New. 6091 60922020-05-06 H.J. Lu <hongjiu.lu@intel.com> 6093 6094 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 6095 60962020-05-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 6097 6098 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate. 6099 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: 6100 Likewise. 6101 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise. 6102 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt: 6103 Likewise. 6104 61052020-05-06 Martin Liska <mliska@suse.cz> 6106 6107 Revert: 6108 2020-05-05 Martin Liska <mliska@suse.cz> 6109 PR c/92472 6110 * include/parallel/multiway_merge.h: 6111 Use const for _Compare template argument. 6112 61132020-05-06 Jonathan Wakely <jwakely@redhat.com> 6114 6115 * doc/xml/manual/abi.xml (abi.versioning.history): Document library 6116 versions for GCC 9.[123] and 10.1 releases. 6117 * doc/html/*: Regenerate. 6118 61192020-05-06 Jakub Jelinek <jakub@redhat.com> 6120 6121 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. 6122 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. 6123 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update. 6124 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. 6125 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update. 6126 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. 6127 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. 6128 61292020-05-05 Martin Liska <mliska@suse.cz> 6130 6131 PR c/92472 6132 * include/parallel/multiway_merge.h: 6133 Use const for _Compare template argument. 6134 61352020-05-04 Fangrui Song <maskray@google.com> 6136 6137 * libsupc++/cxxabi.h (__cxa_finalize): Fix return type. 6138 61392020-05-04 Jonathan Wakely <jwakely@redhat.com> 6140 6141 * doc/xml/faq.xml: Use working link for SGI STL FAQ. 6142 * doc/html/*: Regenerate. 6143 6144 PR libstdc++/94906 6145 * src/c++17/memory_resource.cc 6146 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift 6147 operands. 6148 61492020-05-04 Nathan Sidwell <nathan@acm.org> 6150 6151 PR libstdc++/94747 6152 * libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to 6153 ptrdiff_t before negation, to show intent more clearly. 6154 61552020-05-04 Jonathan Wakely <jwakely@redhat.com> 6156 6157 PR libstdc++/94936 6158 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools): 6159 Add comment about single-threaded behaviour. 6160 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist 6161 class member access out of loop. 6162 (synchronized_pool_resource::synchronized_pool_resource()) 6163 (synchronized_pool_resource::~synchronized_pool_resource()) 6164 (synchronized_pool_resource::release()): Check __gthread_active_p 6165 before creating and/or deleting the thread-specific data key. 6166 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust 6167 assertions. 6168 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast 6169 path for single-threaded case. 6170 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)): 6171 Likewise. Return if unable to find a pool that owns the allocation. 6172 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc: 6173 New test. 6174 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New 6175 test. 6176 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New 6177 test. 6178 61792020-05-03 Jonathan Wakely <jwakely@redhat.com> 6180 6181 PR libstdc++/94933 6182 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types 6183 usable in constant expressions. 6184 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and 6185 non-scalars. 6186 61872020-05-01 Jonathan Wakely <jwakely@redhat.com> 6188 6189 PR libstdc++/94901 6190 * testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too. 6191 61922020-05-01 Jonathan Wakely <jwakely@redhat.com> 6193 Patrick Palka <ppalka@redhat.com> 6194 6195 PR libstdc++/92894 6196 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove): 6197 Add trait to determine return type and an alias for it. 6198 (ranges::__cust_imove::_IMove::operator()): Use __result instead of 6199 deduced return type. 6200 (iter_rvalue_reference_t): Use _IMove::__type instead of checking 6201 the result of ranges::iter_move. 6202 (__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t 6203 instead of checking the result of ranges::iter_move. 6204 * testsuite/24_iterators/customization_points/92894.cc: New test. 6205 * testsuite/24_iterators/indirect_callable/92894.cc: New test. 6206 62072020-05-01 Jonathan Wakely <jwakely@redhat.com> 6208 6209 PR libstdc++/94901 6210 * include/std/type_traits (__is_complete_or_unbounded): Replace 6211 BADNAME _T with _Tp. 6212 * testsuite/17_intro/badnames.cc: New test. 6213 62142020-04-30 Jonathan Wakely <jwakely@redhat.com> 6215 6216 PR libstdc++/89510 6217 * include/bits/alloc_traits.h (allocator_traits::_S_construct) 6218 (allocator_traits::_S_destroy) 6219 (allocator_traits<allocator<T>>::construct): Use traits in 6220 noexcept-specifiers. 6221 * include/bits/allocator.h (allocator<void>::construct) 6222 (allocator<void>::destroy): Likewise. 6223 * include/ext/malloc_allocator.h (malloc_allocator::construct) 6224 (malloc_allocator::destroy): Likewise. 6225 * include/ext/new_allocator.h (new_allocator::construct) 6226 (new_allocator::destroy): Likewise. 6227 * testsuite/20_util/allocator/89510.cc: New test. 6228 * testsuite/ext/malloc_allocator/89510.cc: New test. 6229 * testsuite/ext/new_allocator/89510.cc: New test. 6230 62312020-04-29 Jonathan Wakely <jwakely@redhat.com> 6232 6233 PR libstdc++/94854 6234 * include/bits/basic_string.tcc: Update comment about explicit 6235 instantiations. 6236 62372020-04-28 Jonathan Wakely <jwakely@redhat.com> 6238 6239 PR libstdc++/91480 6240 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal): 6241 Remove non-standard macro. 6242 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define 6243 to indicate P1032R1 support. 6244 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise. 6245 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise. 6246 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise. 6247 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove. 6248 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view) 6249 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define. 6250 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check 6251 feature test macro. 6252 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise. 6253 * testsuite/21_strings/basic_string_view/operations/copy/char/ 6254 constexpr.cc: Likewise. 6255 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise. 6256 6257 PR libstdc++/94831 6258 * include/bits/alloc_traits.h (_S_construct): Restore placement 6259 new-expression for C++11/14/17 and call std::construct_at directly 6260 for C++20. 6261 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr 6262 function returning void. 6263 * testsuite/20_util/specialized_algorithms/ 6264 uninitialized_value_construct/94831.cc: New test. 6265 * testsuite/23_containers/vector/cons/94831.cc: New test. 6266 62672020-04-28 Patrick Palka <ppalka@redhat.com> 6268 6269 LWG 3433 subrange::advance(n) has UB when n < 0 6270 * include/std/ranges (subrange::prev): Fix typo. 6271 (subrange::advance): Handle a negative argument as per the proposed 6272 resolution of LWG 3433. 6273 * testsuite/std/ranges/subrange/lwg3433.cc: New test. 6274 62752020-04-28 Jonathan Wakely <jwakely@redhat.com> 6276 Iain Sandoe <iain@sandoe.co.uk> 6277 6278 PR c++/94759 6279 * include/std/coroutine: Implement handing for non- 6280 class coroutine return types. 6281 62822020-04-24 Jonathan Wakely <jwakely@redhat.com> 6283 6284 * include/experimental/executor (service_already_exists): Make default 6285 constructor public (LWG 3414). 6286 * testsuite/experimental/net/execution_context/make_service.cc: Check 6287 the service_already_exists can be default constructed. 6288 62892020-04-24 Kamlesh Kumar <kamleshbhalui@gmail.com> 6290 Jonathan Wakely <jwakely@redhat.com> 6291 6292 PR libstdc++/90415 6293 PR libstdc++/92156 6294 * include/std/any (any): Rename template parameters for consistency 6295 with the standard. 6296 (any::_Decay): Rename to _Decay_if_not_any. 6297 (any::any(T&&):: Remove is_constructible from constraints. Remove 6298 non-standard overload. 6299 (any::any(in_place_type_t<T>, Args&&...)) 6300 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...)) 6301 (any::emplace(Args&&...)) 6302 (any::emplace(initializer_list<U>, Args&&...)): 6303 Use decay_t instead of _Decay. 6304 * testsuite/20_util/any/cons/90415.cc: New test. 6305 * testsuite/20_util/any/cons/92156.cc: New Test. 6306 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives 6307 more robust. 6308 * testsuite/20_util/any/modifiers/92156.cc: New test. 6309 63102020-04-23 Jonathan Wakely <jwakely@redhat.com> 6311 6312 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table. 6313 * doc/html/*: Regenerate. 6314 6315 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert 6316 value for C++17 to 201803L because P0858R0 is supported for C++17. 6317 * include/std/version (__cpp_lib_array_constexpr): Likewise. 6318 * testsuite/23_containers/array/element_access/constexpr_c++17.cc: 6319 Check for value corresponding to P0031R0 features being tested. 6320 * testsuite/23_containers/array/requirements/constexpr_iter.cc: 6321 Check for value corresponding to P0858R0 features being tested. 6322 6323 * include/std/version (__cpp_lib_three_way_comparison): Define for 6324 freestanding builds. 6325 63262020-04-23 Thomas Rodgers <rodgert@appliantology.com> 6327 6328 * include/experimental/net/executor (system_context): Mark 6329 system_context::system_context() = delete. 6330 * testsuite/experimental/net/executor/1.cc: Add new 6331 test to check system_context is not default constructible. 6332 63332020-04-23 Iain Sandoe <iain@sandoe.co.uk> 6334 6335 * include/std/coroutine: Update the inline namespace to __n4861. 6336 Add the __cpp_lib_coroutine define, set to 201902L. 6337 * include/std/version: Add __cpp_lib_coroutine, set to 201902L. 6338 63392020-04-22 Jonathan Wakely <jwakely@redhat.com> 6340 6341 * include/std/execution (__cpp_lib_execution): Define to indicate 6342 support for P0024R2 and P1001R2. 6343 * include/std/version (__cpp_lib_execution): Define. 6344 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro 6345 defined by <algorithm>, move other tests to new tests ... 6346 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test. 6347 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test. 6348 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test. 6349 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test. 6350 6351 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define 6352 different values for C++17 and C++20, to indicate different feature 6353 sets. Update value for C++20 to indicate P1032R1 support. 6354 * include/std/version (__cpp_lib_array_constexpr): Likewise. 6355 * testsuite/23_containers/array/comparison_operators/constexpr.cc: 6356 Check feature test macro. 6357 * testsuite/23_containers/array/element_access/constexpr_c++17.cc: 6358 New test. 6359 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check 6360 feature test macro. 6361 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test 6362 in C++17 mode and check feature test macro. 6363 6364 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define 6365 here. 6366 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be 6367 defined by <utility>. 6368 6369 * include/std/functional (__cpp_lib_concepts): Update macro value to 6370 indicate P1964R2 support. 6371 * include/std/version (__cpp_lib_concepts): Likewise. 6372 * testsuite/std/concepts/1.cc: Adjust expected value. 6373 * testsuite/std/concepts/2.cc: Likewise. 6374 6375 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to 6376 __cpp_lib_constexpr_functional. 6377 * include/std/version (__cpp_lib_constexpr_invoke): Likewise. 6378 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust. 6379 6380 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to 6381 indicate P1006R1 support. 6382 (__cpp_lib_to_address): Define to indicate P0653R2 support. 6383 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate 6384 P1227R2 support. 6385 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate 6386 P0769R2 support. 6387 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate 6388 P0020R6 support. 6389 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate 6390 P1007R3 support. 6391 * include/std/memory_resource (__cpp_lib_polymorphic_allocator): 6392 Define to indicate P0339R6 support. 6393 * include/std/string_view (__cpp_lib_starts_ends_with): Define to 6394 indicate P0457R2 support. 6395 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define 6396 to indicate P0758R1 support. 6397 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support. 6398 (__cpp_lib_type_identity): Define to indicate P0887R1 support. 6399 * include/std/version (__cpp_lib_atomic_float) 6400 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref) 6401 (__cpp_lib_type_identity, __cpp_lib_assume_aligned) 6402 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator) 6403 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with) 6404 (__cpp_lib_to_address): Define. 6405 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. 6406 6407 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old 6408 macro. 6409 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion): 6410 Likewise. 6411 * include/std/version (__cpp_lib_map_insertion) 6412 (__cpp_lib_unordered_map_insertion): Remove. 6413 6414 * include/std/condition_variable (__cpp_lib_jthread): Remove 6415 redundant definition. 6416 * include/std/stop_token (__cpp_lib_jthread): Update macro value to 6417 indicate P1869R1 support. 6418 * include/std/version (__cpp_lib_jthread): Update value. 6419 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check 6420 for updated macro value. 6421 * testsuite/30_threads/condition_variable_any/stop_token/2.cc: 6422 Likewise. 6423 * testsuite/30_threads/jthread/1.cc: Likewise. 6424 * testsuite/30_threads/jthread/2.cc: Likewise. 6425 * testsuite/30_threads/stop_token/1.cc: Likewise. 6426 * testsuite/30_threads/stop_token/2.cc: Likewise. 6427 6428 * testsuite/21_strings/basic_string/erasure.cc: Check for 6429 __cpp_lib_erase_if macro. 6430 * testsuite/23_containers/deque/erasure.cc: Add header name to #error 6431 messages. 6432 * testsuite/23_containers/forward_list/erasure.cc: Likewise. 6433 * testsuite/23_containers/list/erasure.cc: Likewise. 6434 * testsuite/23_containers/map/erasure.cc: Likewise. 6435 * testsuite/23_containers/set/erasure.cc: Likewise. 6436 * testsuite/23_containers/unordered_map/erasure.cc: Likewise. 6437 * testsuite/23_containers/unordered_set/erasure.cc: Likewise. 6438 * testsuite/23_containers/vector/erasure.cc: Likewise. 6439 64402020-04-21 Jonathan Wakely <jwakely@redhat.com> 6441 6442 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way 6443 to define operator<=>. 6444 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test. 6445 6446 * doc/Makefile.am (xml_sources_manual): Add missing XML files. 6447 * doc/Makefile.in: Regenerate. 6448 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead 6449 of "this page". 6450 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections 6451 to the C++11 status table. 6452 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature 6453 proposals with table matching contents of the C++14 standard. 6454 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of 6455 the C++17 standard. 6456 * doc/html/*: Regenerate. 6457 6458 PR c++/94149 6459 * include/std/type_traits (__is_nt_constructible_impl): Add partial 6460 specializations for bounded arrays with non-empty initializers. 6461 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test. 6462 64632020-04-20 Thomas Rodgers <trodgers@redhat.com> 6464 6465 * testsuite/lib/libstdc++.exp: Add additional_flags= 6466 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when 6467 compiling with a newer Thread Building Blocks. 6468 64692020-04-20 Jonathan Wakely <jwakely@redhat.com> 6470 6471 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. 6472 6473 * testsuite/20_util/is_constructible/51185.cc: Make test class a 6474 non-aggregate so that the test verifies the same thing in all -std 6475 modes. 6476 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected 6477 results for some types when paren-init for aggregates is supported. 6478 6479 * include/std/version (__cpp_lib_three_way_comparison): Update value. 6480 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. 6481 (__detail::__synth3way): Add noexcept-specifier. 6482 6483 * include/bits/stl_map.h (map): Define operator<=> and remove 6484 operator< for C++20. 6485 * include/bits/stl_multimap.h (multimap): Likewise. 6486 * include/bits/stl_multiset.h (multiset): Likewise. 6487 * include/bits/stl_set.h (set): Likewise. 6488 * include/bits/stl_tree.h (_Rb_tree): Likewise. 6489 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant 6490 operator!= for C++20. 6491 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20. 6492 * include/debug/multimap.h (__gnu_debug::multimap): Likewise. 6493 * include/debug/multiset.h (__gnu_debug::multiset): Likewise. 6494 * include/debug/set.h (__gnu_debug::set): Likewise. 6495 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test. 6496 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test. 6497 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test. 6498 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test. 6499 65002020-04-20 Matthias Kretz <kretz@kde.org> 6501 6502 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose. 6503 65042020-04-19 Jonathan Wakely <jwakely@redhat.com> 6505 6506 * include/bits/stl_queue.h (queue): Define operator<=> for C++20. 6507 * include/bits/stl_stack.h (stack): Likewise. 6508 * testsuite/23_containers/queue/cmp_c++20.cc: New test. 6509 * testsuite/23_containers/stack/cmp_c++20.cc: New test. 6510 6511 * include/bits/unordered_map.h (unordered_map, unordered_multimap): 6512 Remove redundant operator!= for C++20. 6513 * include/bits/unordered_set.h (unordered_set, unordered_multiset): 6514 Likewise. 6515 * include/debug/unordered_map (unordered_map, unordered_multimap): 6516 Likewise. 6517 * include/debug/unordered_set (unordered_set, unordered_multiset): 6518 Likewise. 6519 6520 PR other/94629 6521 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix 6522 redundant assignment in constructor. 6523 65242020-04-18 Jonathan Wakely <jwakely@redhat.com> 6525 6526 * include/std/chrono (duration, time_point): Define operator<=> and 6527 remove redundant operator!= for C++20. 6528 * testsuite/20_util/duration/comparison_operators/three_way.cc: New 6529 test. 6530 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New 6531 test. 6532 6533 * testsuite/util/native_type/native_priority_queue.hpp: Use 6534 allocator_traits to rebind allocator. 6535 65362020-04-17 Jonathan Wakely <jwakely@redhat.com> 6537 6538 * include/bits/forward_list.h (forward_list): Define operator<=> and 6539 remove redundant comparison operators for C++20. 6540 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise. 6541 * include/bits/stl_deque.h (deque): Likewise. 6542 * include/bits/stl_iterator.h (__normal_iterator): Likewise. 6543 * include/bits/stl_list.h (list): Likewise. 6544 * include/bits/stl_vector.h (vector): Likewise. 6545 * include/debug/deque (__gnu_debug::deque): Likewise. 6546 * include/debug/forward_list (__gnu_debug::forward_list): Likewise. 6547 * include/debug/list (__gnu_debug::list): Likewise. 6548 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator): 6549 Likewise. 6550 * include/debug/vector (__gnu_debug::vector): Likewise. 6551 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define 6552 operator<=> for C++20. 6553 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test. 6554 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test. 6555 * testsuite/23_containers/list/cmp_c++20.cc: New test. 6556 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test. 6557 * testsuite/23_containers/vector/cmp_c++20.cc: New test. 6558 6559 * include/bits/basic_string.h (basic_string): Define operator<=> and 6560 remove redundant comparison operators for C++20. 6561 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits): 6562 Add comparison_category members. 6563 (__detail::__char_traits_cmp_cat): New helper to get comparison 6564 category from char traits class. 6565 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not 6566 define for C++20. 6567 (sub_match): Define operator<=> and remove redundant comparison 6568 operators for C++20. 6569 (match_results): Remove redundant operator!= for C++20. 6570 * include/std/string_view (basic_string_view): Define operator<=> and 6571 remove redundant comparison operators for C++20. 6572 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New 6573 test. 6574 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc: 6575 New test. 6576 * testsuite/21_strings/basic_string_view/operations/copy/char/ 6577 constexpr.cc: Initialize variable. 6578 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ 6579 constexpr.cc: Likewise. 6580 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add 6581 dg-do directive and remove comments showing incorrect signatures. 6582 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: 6583 Likewise. 6584 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc: 6585 New test. 6586 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc: 6587 New test. 6588 * testsuite/28_regex/sub_match/compare_c++20.cc: New test. 6589 65902020-04-16 Jonathan Wakely <jwakely@redhat.com> 6591 6592 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove 6593 name of unused parameter. 6594 65952020-04-15 Jonathan Wakely <jwakely@redhat.com> 6596 6597 * include/bits/fs_dir.h (file_status): Define operator== for C++20. 6598 (directory_entry): Define operator<=> and remove redundant comparison 6599 operators for C++20. 6600 * include/bits/fs_fwd.h (space_info): Define operator== for C++20. 6601 * include/bits/fs_path.h (path): Define operator<=> and remove 6602 redundant comparison operators for C++20. 6603 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment. 6604 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. 6605 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise. 6606 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise. 6607 6608 * include/bits/allocator.h (operator!=): Do not define for C++20. 6609 * include/bits/locale_classes.h (operator!=): Likewise. 6610 * include/bits/std_function.h (operator==(nullptr_t, const function&)) 6611 (operator!=(const function&, nullptr_t)) 6612 (operator!=(nullptr_t, const function&)): Likewise. 6613 * include/ext/bitmap_allocator.h (operator!=): Likewise. 6614 * include/ext/debug_allocator.h (operator!=): Likewise. 6615 * include/ext/extptr_allocator.h (operator!=): Likewise. 6616 * include/ext/malloc_allocator.h (operator!=): Likewise. 6617 * include/ext/mt_allocator.h (operator!=): Likewise. 6618 * include/ext/new_allocator.h (operator!=): Likewise. 6619 * include/ext/pool_allocator.h (operator!=): Likewise. 6620 * include/ext/throw_allocator.h (operator!=): Likewise. 6621 * include/std/bitset (bitset::operator!=): Likewise. 6622 * include/std/memory_resource (operator!=): Likewise. 6623 * include/std/scoped_allocator (operator!=): Likewise. 6624 6625 * include/std/typeindex (operator<=>): Define for C++20. 6626 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test. 6627 66282020-04-14 Jonathan Wakely <jwakely@redhat.com> 6629 6630 * libsupc++/compare (compare_three_way): Fix constraint so that 6631 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with. 6632 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: 6633 New test. 6634 6635 PR libstdc++/94562 6636 * include/bits/shared_ptr.h (operator<=>): Define for C++20. 6637 * include/bits/shared_ptr_base.h (operator<=>): Likewise. 6638 * include/bits/unique_ptr.h (operator<=>): Add inline specifier. 6639 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test. 6640 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect 6641 std::less<A*> to be used when comparing std::shared_ptr<A> objects in 6642 C++20. 6643 6644 PR libstdc++/94565 6645 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor. 6646 * testsuite/18_support/comparisons/categories/94565.cc: New test. 6647 66482020-04-13 Iain Sandoe <iain@sandoe.co.uk> 6649 6650 * include/std/coroutine: Update coroutines builtin define, 6651 per n4861. 6652 66532020-04-09 Jonathan Wakely <jwakely@redhat.com> 6654 6655 * libsupc++/compare (compare_three_way): Fix noexcept-specifier. 6656 (strong_order, weak_order, partial_order): Replace uses of <=> with 6657 compare_three_way function object (LWG 3324). 6658 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add 6659 equality operator so that X satisfies three_way_comparable. 6660 * testsuite/18_support/comparisons/algorithms/strong_order.cc: 6661 Likewise. 6662 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise. 6663 6664 * include/bits/unique_ptr.h (operator<=>): Define for C++20. 6665 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line. 6666 * testsuite/20_util/default_delete/void_neg.cc: Likewise. 6667 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test. 6668 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test. 6669 66702020-04-08 Jonathan Wakely <jwakely@redhat.com> 6671 6672 * include/bits/slice_array.h (operator==(const slice&, const slice&)): 6673 Define for C++20. 6674 * include/std/complex (operator==(const T&, const complex<T>&)) 6675 (operator!=(const complex<T>&, const complex<T>&)) 6676 (operator!=(const complex<T>&, const T&)) 6677 (operator!=(const T&, const complex<T>&)): Do not declare for C++20. 6678 * testsuite/26_numerics/slice/compare.cc: New test. 6679 6680 * include/std/charconv (to_chars_result, from_chars_result): Add 6681 defaulted equality comparisons for C++20. 6682 * testsuite/20_util/from_chars/compare.cc: New test. 6683 * testsuite/20_util/to_chars/compare.cc: New test. 6684 66852020-04-07 Jonathan Wakely <jwakely@redhat.com> 6686 6687 PR libstdc++/94520 6688 * include/std/charconv (__integer_to_chars_result_type) 6689 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to 6690 allow use in C++14. 6691 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace 6692 use of std::string_view with std::string. 6693 * testsuite/20_util/from_chars/2.cc: Likewise. 6694 * testsuite/20_util/to_chars/1.cc: Likewise. 6695 * testsuite/20_util/to_chars/2.cc: Likewise. 6696 66972020-04-06 Jonathan Wakely <jwakely@redhat.com> 6698 6699 PR libstdc++/94498 6700 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it 6701 usable in constant expressions for C++20. 6702 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add 6703 _GLIBCXX20_CONSTEXPR. 6704 (std::char_traits<char>, std::char_traits<wchar_t>) 6705 (std::char_traits<char8_t>): Make move, copy and assign usable in 6706 constant expressions for C++20. 6707 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move 6708 and copy usable in constant expressions for C++20. 6709 * include/std/string_view (basic_string_view::copy): Add 6710 _GLIBCXX20_CONSTEXPR. 6711 * testsuite/21_strings/basic_string_view/operations/copy/char/ 6712 constexpr.cc: New test. 6713 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ 6714 constexpr.cc: New test. 6715 67162020-04-05 Gerald Pfeifer <gerald@pfeifer.com> 6717 6718 * doc/xml/manual/appendix_contributing.xml: Refer to Git 6719 documentation instead of Subversion. Switch to https. 6720 * doc/html/manual/appendix_contributing.html: Regenerate. 6721 67222020-04-03 Jonathan Wakely <jwakely@redhat.com> 6723 6724 PR libstdc++/93960 6725 * include/bits/ptr_traits.h (__to_address): Add special case for debug 6726 iterators, to avoid dereferenceable check. 6727 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. 6728 * testsuite/20_util/to_address/debug.cc: New test. 6729 67302020-04-01 Andrea Corallo <andrea.corallo@arm.com> 6731 6732 * testsuite/experimental/net/execution_context/use_service.cc: 6733 Require pthread and gthreads. 6734 67352020-04-01 Gerald Pfeifer <gerald@pfeifer.com> 6736 6737 * doc/xml/manual/appendix_free.xml: Move "free books" list from 6738 fsf.org to gnu.org. 6739 * doc/html/manual/appendix_free.html: Regenerate. 6740 67412020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com> 6742 6743 Library-side tests for parenthesized aggregate init 6744 6745 PR c++/92878 6746 PR c++/92947 6747 6748 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New. 6749 * testsuite/20_util/any/assign/92878_92947.cc: Likewise. 6750 * testsuite/20_util/any/cons/92878_92947.cc: Likewise. 6751 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise. 6752 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise. 6753 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise. 6754 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise. 6755 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise. 6756 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc: 6757 Likewise. 6758 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise. 6759 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise. 6760 * testsuite/20_util/variant/92878_92947.cc: Likewise. 6761 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc: 6762 Likewise. 6763 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc: 6764 Likewise. 6765 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc: 6766 Likewise. 6767 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc: 6768 Likewise. 6769 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc: 6770 Likewise. 6771 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc: 6772 Likewise. 6773 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise. 6774 * testsuite/23_containers/queue/92878_92947.cc: Likewise. 6775 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc: 6776 Likewise. 6777 * testsuite/23_containers/stack/92878_92947.cc: Likewise. 6778 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc: 6779 Likewise. 6780 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc: 6781 Likewise. 6782 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc: 6783 Likewise. 6784 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc: 6785 Likewise. 6786 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc: 6787 Likewise. 6788 67892020-03-28 Jonathan Wakely <jwakely@redhat.com> 6790 6791 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account 6792 for changes due to parenthesized aggregate-initialization in C++20. 6793 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash 6794 with std::chrono::sys_time in C++20. 6795 6796 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause 6797 to constrain C++20 versions of comparison operators. Fix backwards 6798 logic of relational operators. 6799 (move_iterator): Use requires-clause to constrain comparison operators 6800 in C++20. Do not declare non-standard same-type overloads for C++20. 6801 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result 6802 of comparisons and check using greedy_ops type. 6803 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise. 6804 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant 6805 main function from compile-only test. 6806 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise. 6807 68082020-03-27 Jonathan Wakely <jwakely@redhat.com> 6809 6810 * include/bits/range_cmp.h (__cpp_lib_ranges): Define. 6811 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that 6812 C++20 concepts are required. 6813 * include/bits/stl_iterator_base_types.h: Likewise. 6814 * include/std/concepts: Likewise. 6815 * include/std/version: Likewise. 6816 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test 6817 macro. 6818 6819 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept) 6820 (reverse_iterator::iterator_category): Define for C++20. 6821 (reverse_iterator): Define comparison operators correctly for C++20. 6822 (__normal_iterator): Add constraints to comparison operators for C++20. 6823 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new 6824 overload for input iterators. 6825 (move_iterator): Add constraints to comparison operators for C++20. 6826 Define operator<=> for C++20. 6827 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test. 6828 * testsuite/24_iterators/move_iterator/move_only.cc: New test. 6829 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test. 6830 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test. 6831 6832 * include/bits/iterator_concepts.h (__detail::__decay_copy) 6833 (__detail::__member_begin, __detail::__adl_begin): Move here from 6834 <bits/range_access.h>. 6835 (__detail::__ranges_begin, __detail::__range_iter_t): Define. 6836 * bits/range_access.h (__cust_access::__decay_copy) 6837 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to 6838 <bits/iterator_concepts.h>. 6839 (ranges::iterator_t): Use __detail::__range_iter_t. 6840 * include/bits/stl_iterator.h (back_insert_iterator): Simplify 6841 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members. 6842 (front_insert_iterator): Likewise. 6843 (insert_iterator): Implement changes from P0896R4 for C++20. 6844 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test. 6845 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test. 6846 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust 6847 for inclusion in synopsis_c++20.cc which expects different signatures 6848 for some function templates. 6849 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test. 6850 6851 * include/std/type_traits (__is_array_convertible): Move definition 6852 to immediately after is_convertible. 6853 68542020-03-26 Jonathan Wakely <jwakely@redhat.com> 6855 6856 * include/std/chrono (chrono::days, chrono::weeks, chrono::years) 6857 (chrono::months, chrono::sys_days, chrono::local_t) 6858 (chrono::local_time, chrono::local_seconds, chrono::local_days): 6859 Define for C++20. 6860 (chrono::time_point): Add missing static assert. 6861 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test. 6862 * testsuite/std/time/clock/file/overview.cc: New test. 6863 * testsuite/std/time/clock/file/members.cc: New test. 6864 * testsuite/std/time/syn_c++20.cc: New test. 6865 68662020-03-25 Mike Crowe <mac@mcrowe.com> 6867 6868 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New 6869 test. 6870 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New 6871 test. 6872 68732020-03-25 Jonathan Wakely <jwakely@redhat.com> 6874 6875 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ... 6876 * include/std/chrono (filesystem::__file_clock): Here. 6877 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys): 6878 Define public member functions for C++20. 6879 (is_clock, is_clock_v): Define traits for C++20. 6880 * include/std/condition_variable (condition_variable::wait_until): Add 6881 check for valid clock. 6882 * include/std/future (_State_baseV2::wait_until): Likewise. 6883 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise. 6884 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until): 6885 Likewise. 6886 * include/std/thread (this_thread::sleep_until): Likewise. 6887 * testsuite/30_threads/condition_variable/members/2.cc: Qualify 6888 slow_clock with new namespace. 6889 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New 6890 test. 6891 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc: 6892 New test. 6893 * testsuite/30_threads/future/members/clock_neg.cc: New test. 6894 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc: 6895 Qualify slow_clock with new namespace. 6896 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/ 6897 clock_neg.cc: New test. 6898 * testsuite/30_threads/shared_future/members/clock_neg.cc: New 6899 test. 6900 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test. 6901 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc: 6902 New test. 6903 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify 6904 slow_clock with new namespace. 6905 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise. 6906 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New 6907 test. 6908 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test. 6909 * testsuite/std/time/traits/is_clock.cc: New test. 6910 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test 6911 namespace. 6912 69132020-03-21 Jonathan Wakely <jwakely@redhat.com> 6914 6915 PR libstdc++/93245 6916 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()): 6917 * testsuite/experimental/filesystem/path/generic/generic_string.cc: 6918 Improve test coverage. 6919 6920 PR libstdc++/94242 6921 * include/bits/fs_path.h (path::_S_str_convert): Replace first 6922 parameter with basic_string_view so that strings with different 6923 allocators can be accepted. 6924 (path::generic_string<C,T,A>()): Use basic_string object that uses the 6925 right allocator type. 6926 * testsuite/27_io/filesystem/path/generic/94242.cc: New test. 6927 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve 6928 test coverage. 6929 69302020-03-18 Jonathan Wakely <jwakely@redhat.com> 6931 6932 PR libstdc++/94033 6933 * include/std/type_traits (__is_nt_default_constructible_atom): Remove. 6934 (__is_nt_default_constructible_impl): Remove. 6935 (__is_nothrow_default_constructible_impl): Remove. 6936 (__is_nt_constructible_impl): Add bool template parameter. Adjust 6937 partial specializations. 6938 (__is_nothrow_constructible_impl): Replace class template with alias 6939 template. 6940 (is_nothrow_default_constructible): Derive from alias template 6941 __is_nothrow_constructible_impl instead of 6942 __is_nothrow_default_constructible_impl. 6943 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test. 6944 6945 * include/std/stop_token (stop_token::_Stop_state_ref): Define 6946 comparison operators explicitly if the compiler won't synthesize them. 6947 6948 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check 6949 __cpp_lib_concepts before using iter_reference_t. 6950 * include/bits/stream_iterator.h (istream_iterator): Check 6951 __cpp_lib_concepts before using default_sentinel_t. 6952 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise. 6953 6954 PR libstdc++/94203 6955 * include/experimental/executor (executor::executor(Executor)): Call 6956 make_shared directly instead of _M_create. Create _Tgt1 object. 6957 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)): 6958 Call allocate_shared directly instead of _M_create. Create _Tgt2 6959 object. 6960 (executor::target_type): Add cast needed for new _Tgt interface. 6961 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func. 6962 (executor::_Tgt): Define the same interface whether RTTI is enabled or 6963 not. 6964 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use 6965 std::type_info in the interface. 6966 (executor::_Tgt::_M_func): Add data member. 6967 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates. 6968 (executor::_Tgt1::_S_func): Define function to access target without 6969 depending on RTTI. 6970 (executor::_M_create): Remove. 6971 (operator==, operator!=): Simplify comparisons for executor. 6972 * include/experimental/socket (is_error_code_enum<socket_errc>): 6973 Define specialization before use. 6974 * testsuite/experimental/net/executor/1.cc: New test. 6975 69762020-03-16 Jonathan Wakely <jwakely@redhat.com> 6977 6978 PR libstdc++/94199 6979 * include/experimental/executor (service_already_exists): Add default 6980 constructor. Declare make_service to be a friend. 6981 * testsuite/experimental/net/execution_context/make_service.cc: New 6982 test. 6983 69842020-03-12 Jonathan Wakely <jwakely@redhat.com> 6985 6986 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass 6987 a null pointer to functions with nonnull(1) attribute. 6988 69892020-03-11 Patrick Palka <ppalka@redhat.com> 6990 6991 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix, 6992 'address' -> 'std::__addressof'. 6993 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of 6994 a non-forward input_range. 6995 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make 6996 default constructor protected instead of deleted, like with 6997 input_iterator_wrapper. 6998 (test_range::iterator): Add comment explaining that this type is used 6999 only when the underlying wrapper is input_iterator_wrapper or 7000 output_iterator_wrapper. Remove delegating defaulted constructor so 7001 that the inherited default constructor is used instead. 7002 7003 LWG 3286 ranges::size is not required to be valid after a call to 7004 ranges::begin on an input range 7005 * include/std/ranges (subrange::subrange): Split single-argument 7006 constructor into two, one constrained by _S_store_size and another by 7007 !_S_store_size. 7008 (take_view::begin): Call size() before calling ranges::begin(_M_base). 7009 * testsuite/std/ranges/adaptors/lwg3286.cc: New test. 7010 * testsuite/std/ranges/subrange/lwg3286.cc: New test. 7011 70122020-03-10 Jonathan Wakely <jwakely@redhat.com> 7013 7014 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current 7015 instead of _M_current. 7016 (split_view::_OuterIter::operator++): Likewise. 7017 7018 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove. 7019 (transform_view::_Iterator::operator*): Add noexcept-specifier. 7020 (transform_view::_Iterator::iter_move): Inline __iter_move body here. 7021 (split_view::_OuterIter::__current): Add noexcept. 7022 (split_view::_InnerIter::__iter_swap): Remove. 7023 (split_view::_InnerIter::__iter_move): Remove. 7024 (split_view::_InnerIter::_M_i_current): New accessors. 7025 (split_view::_InnerIter::__at_end): Use _M_i_current(). 7026 (split_view::_InnerIter::operator*): Likewise. 7027 (split_view::_InnerIter::operator++): Likewise. 7028 (iter_move(const _InnerIter&)): Likewise. 7029 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise. 7030 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier 7031 for iter_move and iter_swap on split_view's inner iterator. 7032 7033 PR c++/94117 7034 * include/std/ranges (ranges::transform_view::_Iterator::iter_move): 7035 Change expression in noexcept-specifier to match function body. 7036 7037 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add 7038 comment explaining multiple dg-do directives. 7039 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive 7040 so test is run as well as compiled. 7041 70422020-03-09 Jonathan Wakely <jwakely@redhat.com> 7043 7044 PR libstdc++/94063 7045 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to 7046 handle concatenations that change the type of the first component. 7047 (path::operator+=(basic_string_view<value_type>)): Likewise. 7048 * testsuite/27_io/filesystem/path/concat/94063.cc: New test. 7049 70502020-03-06 Patrick Palka <ppalka@redhat.com> 7051 7052 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend 7053 join_view::_Sentinel<!_Const>. 7054 * testsuite/std/ranges/adaptors/join.cc: Augment test. 7055 7056 PR libstdc++/93978 7057 * include/bits/range_access.h (__cust_access::_Empty::operator()): 7058 Declare return type to be bool instead of auto. 7059 * testsuite/std/ranges/adaptors/93978.cc: New test. 7060 70612020-03-06 Jonathan Wakely <jwakely@redhat.com> 7062 7063 PR libstdc++/94069 7064 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER] 7065 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect 7066 second argument to __glibcxx_rwlock_init. 7067 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test. 7068 7069 PR libstdc++/93244 7070 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust 7071 test to not fail due to PR 94063. 7072 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise. 7073 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise. 7074 70752020-03-06 Andreas Krebbel <krebbel@linux.ibm.com> 7076 7077 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it 7078 would match ENOSYS. 7079 70802020-03-05 Jonathan Wakely <jwakely@redhat.com> 7081 7082 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable. 7083 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo. 7084 * testsuite/experimental/filesystem/operations/copy.cc: Likewise. 7085 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type 7086 for return value, and in comparison. 7087 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise. 7088 7089 PR libstdc++/94051 7090 * include/std/string_view: Include <bits/ostream_insert.h>. 7091 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test. 7092 70932020-03-04 Jonathan Wakely <jwakely@redhat.com> 7094 7095 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment. 7096 70972020-03-04 Patrick Palka <ppalka@redhat.com> 7098 7099 PR libstdc++/94017 7100 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine 7101 condition for when to use memset, making sure to additionally check that 7102 the output pointer's value type is a non-volatile byte type. Instead of 7103 requiring that the fill type is a byte type, just require that it's an 7104 integral type. 7105 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc: 7106 New test. 7107 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc: 7108 New test. 7109 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was 7110 blocked by PR 94017. 7111 * testsuite/25_algorithms/fill/94017.cc: New test. 7112 * testsuite/25_algorithms/fill_n/94017.cc: New test. 7113 7114 LWG 3355 The memory algorithms should support move-only input iterators 7115 introduced by P1207 7116 * include/bits/ranges_uninitialized.h 7117 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting 7118 to copy __ifirst, which could be a move-only input iterator. Use 7119 operator- instead of ranges::distance to compute distance from a sized 7120 sentinel. 7121 (__uninitialized_copy_n_fn::operator()): Likewise. 7122 (__uninitialized_move_fn::operator()): Likewise. 7123 (__uninitialized_move_n_fn::operator()): Likewise. 7124 (__uninitialized_destroy_fn::operator()): Use std::move to avoid 7125 attempting to copy __first. 7126 (__uninitialized_destroy_n_fn::operator()): Likewise. 7127 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: 7128 Augment test. 7129 * .../specialized_algorithms/uninitialized_copy/constrained.cc: 7130 Likewise. 7131 * .../specialized_algorithms/uninitialized_move/constrained.cc: 7132 Likewise. 7133 7134 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make 7135 protected instead of private. 7136 (test_sized_range_sized_sent): New. 7137 7138 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy): 7139 New testsuite iterator. 7140 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it. 7141 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise. 7142 7143 * include/bits/ranges_uninitialized.h 7144 (uninitialized_copy_fn::operator()): Pass a reference type as the first 7145 argument to is_nothrow_assignable_v. 7146 (uninitialized_copy_fn::operator()): Likewise. 7147 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result 7148 with the input iterator stripped of its move_iterator. 7149 (uninitialized_move_n_fn::operator()): Likewise. 7150 (uninitialized_fill_fn::operator()): Pass a reference type as the first 7151 argument to is_nothrow_assignable_v. 7152 (uninitialized_fill_n_fn::operator()): Likewise. 7153 71542020-03-03 Jonathan Wakely <jwakely@redhat.com> 7155 7156 PR libstdc++/94013 7157 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New 7158 traits to control when to use memmove and memcmp optimizations. 7159 (__is_nonvolatile_trivially_copyable): New helper trait. 7160 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not 7161 use memcmp optimization with volatile data. 7162 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable. 7163 (__copy_or_move, __copy_or_move_backward): Use __memcpyable. 7164 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable. 7165 (__copy_move_backward_a2): Likewise. 7166 (__equal_aux1): Use __memcmpable. 7167 (__lexicographical_compare_aux): Do not use memcmp optimization with 7168 volatile data. 7169 * testsuite/25_algorithms/copy/94013.cc: New test. 7170 * testsuite/25_algorithms/copy_backward/94013.cc: New test. 7171 * testsuite/25_algorithms/equal/94013.cc: New test. 7172 * testsuite/25_algorithms/fill/94013.cc: New test. 7173 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test. 7174 * testsuite/25_algorithms/move/94013.cc: New test. 7175 * testsuite/25_algorithms/move_backward/94013.cc: New test. 7176 7177 * include/bits/stl_algobase.h (lexicographical_compare_three_way): 7178 Avoid redundant iterator comparisons (LWG 3410). 7179 71802020-03-02 Jonathan Wakely <jwakely@redhat.com> 7181 7182 PR libstdc++/93972 7183 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to 7184 differ. 7185 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test. 7186 7187 * include/std/ranges (__detail::__maybe_empty_t): Rename to 7188 __maybe_present_t. 7189 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name. 7190 7191 * include/bits/ranges_algo.h (shift_right): Add 'typename' to 7192 dependent type. 7193 71942020-03-01 H.J. Lu <hongjiu.lu@intel.com> 7195 7196 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 7197 71982020-02-29 John David Anglin <danglin@gcc.gnu.org> 7199 7200 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*. 7201 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise. 7202 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise. 7203 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise. 7204 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise. 7205 7206 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: 7207 Add libatomic option. 7208 * testsuite/30_threads/jthread/jthread.cc: Likewise. 7209 72102020-02-29 Fran��ois Dumont <fdumont@gcc.gnu.org> 7211 7212 * include/bits/stl_algo.h 7213 (__find_if, __count_if, __is_permutation, std::is_permutation): Move... 7214 * include/bits/stl_algobase.h: ...here. 7215 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include. 7216 72172020-02-29 John David Anglin <danglin@gcc.gnu.org> 7218 7219 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic 7220 option. 7221 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: 7222 Likewise. 7223 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise. 7224 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise. 7225 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise. 7226 * testsuite/30_threads/stop_token/stop_source.cc: Likewise. 7227 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise. 7228 * testsuite/30_threads/stop_token/stop_token.cc: Likewise. 7229 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: 7230 Likewise. 7231 7232 PR libstdc++/92906 7233 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 7234 72352020-02-28 Patrick Palka <ppalka@redhat.com> 7236 7237 PR libstdc++/93972 7238 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): 7239 Fix condition for when to use memcmp, making it consistent with the 7240 corresponding condition used in std::lexicographical_compare. 7241 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test. 7242 7243 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for 7244 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to 7245 existing signatures for C++2a. 7246 72472020-02-28 Jonathan Wakely <jwakely@redhat.com> 7248 7249 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run 7250 test instead of just compiling it. 7251 72522020-02-28 Patrick Palka <ppalka@redhat.com> 7253 7254 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false 7255 whenever the underlying range models common_range. 7256 7257 * include/std/ranges (__detail::_CachedPosition): New struct. 7258 (views::filter_view::_S_needs_cached_begin): New member variable. 7259 (views::filter_view::_M_cached_begin): New member variable. 7260 (views::filter_view::begin): Use _M_cached_begin to cache its 7261 result. 7262 (views::drop_view::_S_needs_cached_begin): New static member variable. 7263 (views::drop_view::_M_cached_begin): New member variable. 7264 (views::drop_view::begin): Use _M_cached_begin to cache its result 7265 when _S_needs_cached_begin. 7266 (views::drop_while_view::_M_cached_begin): New member variable. 7267 (views::drop_while_view::begin): Use _M_cached_begin to cache its 7268 result. 7269 (views::reverse_view::_S_needs_cached_begin): New static member 7270 variable. 7271 (views::reverse_view::_M_cached_begin): New member variable. 7272 (views::reverse_view::begin): Use _M_cached_begin to cache its result 7273 when _S_needs_cached_begin. 7274 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that 7275 drop_view::begin caches its result. 7276 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check 7277 that drop_while_view::begin caches its result. 7278 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that 7279 filter_view::begin caches its result. 7280 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that 7281 reverse_view::begin caches its result. 7282 72832020-02-28 Jonathan Wakely <jwakely@redhat.com> 7284 7285 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for 7286 filesystems that silently truncate timestamps. 7287 * testsuite/experimental/filesystem/operations/last_write_time.cc: 7288 Likewise. 7289 7290 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable 7291 -Wstringop-overflow warnings. 7292 72932020-02-27 Jonathan Wakely <jwakely@redhat.com> 7294 7295 * testsuite/lib/libstdc++.exp (v3_target_compile): Add 7296 -fdiagnostics-urls=never to options. 7297 72982020-02-27 Patrick Palka <ppalka@redhat.com> 7299 7300 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend 7301 _Iterator<!_Const>. 7302 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>. 7303 (take_view::_Sentinel<_Const>): Likewise. 7304 (take_while_view::_Sentinel<_Const>): Likewise. 7305 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>. 7306 * testsuite/std/ranges/adaptors/split.cc: Augment test. 7307 * testsuite/std/ranges/adaptors/take.cc: Augment test. 7308 * testsuite/std/ranges/adaptors/take_while.cc: Augment test. 7309 * testsuite/std/ranges/adaptors/transform.cc: Augment test. 7310 7311 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the 7312 base() of a vector<>::iterator is a pointer. 7313 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise. 7314 * testsuite/25_algorithms/move/constrained.cc: Likewise. 7315 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise. 7316 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data() 7317 instead of &foo[0]. 7318 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise. 7319 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise. 7320 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise. 7321 * testsuite/25_algorithms/sort/constrained.cc: Likewise. 7322 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise. 7323 73242020-02-27 Jonathan Wakely <jwakely@redhat.com> 7325 7326 * include/debug/array (operator<=>): Define for C++20. 7327 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: 7328 Adjust dg-error line numbers. 7329 * testsuite/23_containers/array/tuple_interface/ 7330 tuple_element_debug_neg.cc: Likewise. 7331 7332 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before 7333 defining _GLIBCXX_ASSERTIONS. 7334 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise. 7335 * testsuite/23_containers/span/first_assert_neg.cc: Likewise. 7336 * testsuite/23_containers/span/front_assert_neg.cc: Likewise. 7337 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise. 7338 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise. 7339 * testsuite/23_containers/span/last_assert_neg.cc: Likewise. 7340 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise. 7341 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise. 7342 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise. 7343 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise. 7344 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise. 7345 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise. 7346 7347 * include/debug/string (__gnu_debug::basic_string::insert): Fix for 7348 C++98 where the member function of the base class returns void. 7349 7350 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add 7351 equality comparisons that support value-initialized iterators. 7352 7353 * include/bits/boost_concept_check.h (__function_requires): Add 7354 _GLIBCXX14_CONSTEXPR. 7355 * testsuite/25_algorithms/min/concept_checks.cc: New test. 7356 73572020-02-26 Patrick Palka <ppalka@redhat.com> 7358 7359 PR libstdc++/93936 7360 * include/std/ranges (split_view::_InnerIter::operator==): Compare 7361 the operands' _M_i rather than their _M_i.current(). 7362 * testsuite/std/ranges/adaptors/split.cc: Augment test. 7363 7364 P1645R1 constexpr for <numeric> algorithms 7365 * include/bits/stl_numeric.h (iota, accumulate, inner_product, 7366 partial_sum, adjacent_difference): Make conditionally constexpr for 7367 C++20. 7368 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature 7369 test macro. 7370 (reduce, transform_reduce, exclusive_scan, inclusive_scan, 7371 transform_exclusive_scan, transform_inclusive_scan): Make conditionally 7372 constexpr for C++20. 7373 * include/std/version (__cpp_lib_constexpr_numeric): Define. 7374 * testsuite/26_numerics/accumulate/constexpr.cc: New test. 7375 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise. 7376 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise. 7377 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise. 7378 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise. 7379 * testsuite/26_numerics/iota/constexpr.cc: Likewise. 7380 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise. 7381 * testsuite/26_numerics/reduce/constexpr.cc: Likewise. 7382 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise. 7383 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise. 7384 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise. 7385 73862020-02-26 Jonathan Wakely <jwakely@redhat.com> 7387 7388 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare 7389 variables in smaller scope and avoid calling ranges::distance when we 7390 know they are pointers. Remove statically-unreachable use of 7391 __builtin_unreachable(). 7392 * include/bits/stl_algobase.h (__lexicographical_compare::__lc): 7393 Define inline. 7394 7395 * include/std/ranges (__detail::__maybe_empty_t): Define new helper 7396 alias. 7397 (__detail::__maybe_const_t): Likewise. 7398 (__adaptor::_RangeAdaptor): Use __maybe_empty_t. 7399 (transform_view, take_view, take_while_view, elements_view): Use 7400 __maybe_const_t. 7401 (join_view, split_view): Use both. 7402 74032020-02-25 Patrick Palka <ppalka@redhat.com> 7404 7405 LWG 3397 basic_istream_view::iterator should not provide 7406 iterator_category 7407 * include/std/ranges (basic_istream_view:_Iterator::iterator_category): 7408 Rename to ... 7409 (basic_istream_view:_Iterator::iterator_concept): ... this. 7410 * testsuite/std/ranges/istream_view.cc: Augment test. 7411 7412 LWG 3325 Constrain return type of transformation function for 7413 transform_view 7414 * include/std/ranges (transform_view): Constrain the return type of the 7415 transformation function as per LWG 3325. 7416 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test. 7417 7418 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained 7419 * include/std/ranges (join_view::_Iterator::operator--): Require that 7420 range_reference_t<_Base> models common_range. 7421 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test. 7422 7423 LWG 3301 transform_view::_Iterator has incorrect iterator_category 7424 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust 7425 determination of iterator_category as per LWG 3301. 7426 * testsuite/std/ranges/adaptors/transform.cc: Augment test. 7427 7428 LWG 3292 iota_view is under-constrained 7429 * include/std/ranges (iota_view): Require that _Winc models semiregular 7430 as per LWG 3292. 7431 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test. 7432 74332020-02-25 Jonathan Wakely <jwakely@redhat.com> 7434 7435 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove 7436 during constant evaluation. Call __builtin_memmove directly instead of 7437 __memmove. 7438 (__copy_or_move_backward): Likewise. 7439 * include/bits/stl_algobase.h (__memmove): Remove. 7440 (__copy_move<M, true, random_access_iterator_tag>::__copy_m) 7441 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m): 7442 Use __builtin_memmove directly instead of __memmove. 7443 (__copy_move_a2): Do not use memmove during constant evaluation. 7444 (__copy_move_backward_a2): Use _IsMove constant to select correct 7445 __copy_move_backward specialization. 7446 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies 7447 begin turned into moves during constant evaluation. 7448 7449 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of 7450 previous commit. 7451 7452 PR libstdc++/93872 7453 * include/bits/stl_algobase.h (__memmove): Cast away const before 7454 doing move assignment. 7455 * testsuite/25_algorithms/move/93872.cc: New test. 7456 * testsuite/25_algorithms/move_backward/93872.cc: New test. 7457 74582020-02-24 Patrick Palka <ppalka@redhat.com> 7459 7460 PR libstdc++/93884 7461 * include/bits/ranges_algobase.h (__copy_or_move, 7462 __copy_or_move_backward): Don't inspect the iter_value_t of the output 7463 iterator, instead inspect its iterator_traits directly. 7464 * include/bits/stl_iterator.h (back_insert_iterator::container): 7465 Conditionally initialize. 7466 (back_insert_iterator::difference_type): Conditionally define. 7467 (back_insert_iterator::back_insert_iterator): Conditionally define this 7468 default constructor. 7469 (front_insert_iterator::container): Conditionally initialize. 7470 (front_insert_iterator::difference_type): Conditionally define. 7471 (front_insert_iterator::front_insert_iterator): Conditionally define 7472 this default constructor. 7473 * 24_iterators/back_insert_iterator/pr93884.cc: New test. 7474 * 24_iterators/front_insert_iterator/pr93884.cc: New test. 7475 7476 P0769R2 Add shift to <algorithm> 7477 * include/bits/ranges_algo.h (shift_left, shift_right): New. 7478 * testsuite/25_algorithms/shift_left/1.cc: New test. 7479 * testsuite/25_algorithms/shift_right/1.cc: New test. 7480 74812020-02-24 Jonathan Wakely <jwakely@redhat.com> 7482 7483 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): 7484 Make noexcept-specifier conditional. 7485 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check 7486 noexcept-specifier. 7487 7488 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): 7489 Add constructor. 7490 (operator==(istream_iterator, default_sentinel_t)): Add operator. 7491 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20. 7492 * include/bits/streambuf_iterator.h 7493 (istreambuf_iterator(default_sentinel_t)): Add constructor. 7494 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator. 7495 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: 7496 New test. 7497 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test. 7498 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc: 7499 New test. 7500 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. 7501 7502 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove. 7503 (ranges::enable_view): Simplify (LWG 3326). 7504 * include/bits/range_access.h (ranges::enable_view): Declare. 7505 * include/bits/regex.h (__enable_view_impl): Remove partial 7506 specialization. 7507 * include/bits/stl_multiset.h (__enable_view_impl): Likewise. 7508 * include/bits/stl_set.h (__enable_view_impl): Likewise. 7509 * include/bits/unordered_set.h (__enable_view_impl): Likewise. 7510 * include/debug/multiset.h (__enable_view_impl): Likewise. 7511 * include/debug/set.h (__enable_view_impl): Likewise. 7512 * include/debug/unordered_set (__enable_view_impl): Likewise. 7513 * include/experimental/string_view (ranges::enable_view): Define 7514 partial specialization. 7515 * include/std/span (ranges::enable_view): Likewise. 7516 * include/std/string_view (ranges::enable_view): Likewise. 7517 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept. 7518 75192020-02-21 Jonathan Wakely <jwakely@redhat.com> 7520 7521 * include/std/optional (operator<=>(optional<T>, optional<U>)) 7522 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)): 7523 Define for C++20. 7524 * include/std/tuple (__tuple_cmp): New helper function for <=>. 7525 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20. 7526 * include/std/variant (operator<=>(variant<T...>, variant<T...>)) 7527 (operator<=>(monostate, monostate)): Define for C++20. 7528 * testsuite/20_util/optional/relops/three_way.cc: New test. 7529 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test. 7530 * testsuite/20_util/variant/89851.cc: Move to ... 7531 * testsuite/20_util/variant/relops/89851.cc: ... here. 7532 * testsuite/20_util/variant/90008.cc: Move to ... 7533 * testsuite/20_util/variant/relops/90008.cc: ... here. 7534 * testsuite/20_util/variant/relops/three_way.cc: New test. 7535 75362020-02-20 Patrick Palka <ppalka@redhat.com> 7537 7538 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility 7539 function. 7540 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use 7541 __maybe_refwrap to capture lvalue references by reference, and then use 7542 unwrap_reference_t to forward the by-reference captures as references. 7543 * testsuite/std/ranges/adaptors/split.cc: Augment test. 7544 * testsuite/std/ranges/adaptors/split_neg.cc: New test. 7545 7546 * include/std/ranges (iota_view): Forward declare _Sentinel. 7547 (iota_view::_Iterator): Befriend _Sentinel. 7548 (iota_view::_Sentinel::_M_equal): New member function. 7549 (iota_view::_Sentinel::operator==): Use it. 7550 (views::_Iota::operator()): Forward __f using the correct type. 7551 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota 7552 with integers of different signedness, to appease iota_view's deduction 7553 guide. 7554 * testsuite/std/ranges/iota/iota_view.cc: Augment test. 7555 75562020-02-20 Jonathan Wakely <jwakely@redhat.com> 7557 7558 * include/bits/range_access.h (ranges::begin): Reject array of 7559 incomplete type. 7560 (ranges::end, ranges::size): Require arrays to be bounded. 7561 (ranges::data): Require lvalue or borrowed_range. 7562 (ranges::iterator_t): Remove constraint. 7563 * testsuite/std/ranges/access/begin.cc: Do not check array of 7564 incomplete type. 7565 * testsuite/std/ranges/access/begin_neg.cc: New test. 7566 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error. 7567 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error. 7568 * testsuite/std/ranges/access/ssize.cc: Do not check array of 7569 incomplete type. 7570 7571 * include/std/system_error (error_category::operator<=>) 7572 (operator<=>(const error_code&, const error_code&)) 7573 (operator<=>(const error_condition&, const error_condition&)): Define 7574 for C++20. 7575 * testsuite/19_diagnostics/error_category/operators/less.cc: New test. 7576 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New 7577 test. 7578 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove 7579 incorrect comment. 7580 * testsuite/19_diagnostics/error_code/operators/less.cc: New test. 7581 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove 7582 incorrect comment. 7583 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test. 7584 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove 7585 incorrect comment. 7586 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test. 7587 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc: 7588 Remove incorrect comment. 7589 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New 7590 test. 7591 7592 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20. 7593 7594 * include/std/thread (thread::id::operator<=>): Define for C++20. 7595 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of 7596 functions in namespace std. 7597 * testsuite/30_threads/thread/id/operators_c++20.cc: New test. 7598 75992020-02-19 Patrick Palka <ppalka@redhat.com> 7600 7601 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the 7602 null terminator of the underlying string as part of the test_range. 7603 (main): Call test03. 7604 76052020-02-19 Jonathan Wakely <jwakely@redhat.com> 7606 7607 * include/bits/stl_iterator.h (common_iterator): Add copyable<I> 7608 requirement (LWG 3385). 7609 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust 7610 expected declaration. 7611 7612 * include/std/ranges (take_while_view, drop_view, drop_while_view) 7613 (elements_view:_Iterator): Initialize data members (LWG 3364). 7614 7615 * libsupc++/compare (three_way_comparable): Remove always-false check 7616 that should have been removed with weak_equality (P1959R0). 7617 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360). 7618 7619 * include/std/concepts (__detail::__partially_ordered_with): Move here 7620 from <compare>. 7621 (totally_ordered, totally_ordered_with): Use __partially_ordered_with 7622 to simplify definition (LWG 3331). 7623 * libsupc++/compare (__detail::__partially_ordered_with): Move to 7624 <concepts>. 7625 7626 * include/std/concepts (totally_ordered_with): Remove redundant 7627 requirement (LWG 3329). 7628 7629 * include/std/ranges (__detail::__convertible_to_non_slicing): New 7630 helper concept. 7631 (__detail::__pair_like_convertible_to): Remove. 7632 (__detail::__pair_like_convertible_from): Add requirements for 7633 non-slicing conversions. 7634 (subrange): Constrain constructors with __convertible_to_non_slicing. 7635 Remove constructors from pair-like types. Add new deduction guide. 7636 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test. 7637 7638 * include/bits/iterator_concepts.h (iter_move): Add declaration to 7639 prevent unqualified lookup finding a suitable declaration (LWG 3247). 7640 7641 * include/std/memory_resource (polymorphic_allocator::allocate) 7642 (polymorphic_allocator::allocate_object): Change type of exception to 7643 bad_array_new_length (LWG 3237). 7644 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test. 7645 7646 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348). 7647 * include/std/version (__cpp_lib_unwrap_ref): Likewise. 7648 * testsuite/20_util/unwrap_reference/1.cc: Check macro. 7649 * testsuite/20_util/unwrap_reference/3.cc: New test. 7650 7651 * include/std/numeric (midpoint(T8, T*)): Do not check for complete 7652 type during overload resolution, use static assert instead (LWG 3200). 7653 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with 7654 incomplete type. 7655 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test. 7656 7657 * include/std/span (span(T (&)[N])): Use non-deduced context to 7658 prevent first parameter from interfering with class template argument 7659 deduction (LWG 3369). 7660 * testsuite/23_containers/span/deduction.cc: Add missing 'const'. 7661 * testsuite/23_containers/span/lwg3255.cc: Check for construction from 7662 rvalues. 7663 7664 * include/std/span (span::const_iterator, span::const_reverse_iterator) 7665 (span::cbegin(), span::cend(), span::crbegin(), span::crend()): 7666 Remove (LWG 3320). 7667 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin 7668 and cend. 7669 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: 7670 Likewise. 7671 * testsuite/20_util/specialized_algorithms/uninitialized_copy/ 7672 constrained.cc: Likewise. 7673 * testsuite/20_util/specialized_algorithms/ 7674 uninitialized_default_construct/constrained.cc: Likewise. 7675 * testsuite/20_util/specialized_algorithms/uninitialized_fill/ 7676 constrained.cc: Likewise. 7677 * testsuite/20_util/specialized_algorithms/uninitialized_move/ 7678 constrained.cc: Likewise. 7679 * testsuite/20_util/specialized_algorithms/ 7680 uninitialized_value_construct/constrained.cc: Likewise. 7681 7682 * include/bits/range_access.h (range_size_t): Define alias template. 7683 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335). 7684 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name. 7685 7686 * include/std/ranges (filter_view, transform_view, take_view) 7687 (join_view, split_view, reverse_view): Remove commented-out converting 7688 constructors (LWG 3280). 7689 7690 * include/std/memory (uninitialized_construct_using_allocator): Use 7691 std::construct_at (LWG 3321). 7692 7693 * include/std/memory_resource (polymorphic_allocator::allocate_bytes) 7694 (polymorphic_allocator::allocate_object) 7695 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304). 7696 7697 LWG 3379. "safe" in several library names is misleading 7698 * include/bits/range_access.h (enable_safe_range): Rename to 7699 enable_borrowed_range. 7700 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range. 7701 (safe_range): Rename to borrowed_range. 7702 * include/bits/ranges_algo.h: Adjust to use new names. 7703 * include/bits/ranges_algobase.h: Likewise. 7704 * include/bits/ranges_uninitialized.h: Likewise. 7705 * include/std/ranges: Likewise. 7706 (safe_iterator_t): Rename to borrowed_iterator_t. 7707 (safe_subrange_t): Rename to borrowed_subrange_t. 7708 * include/std/span: Adjust to use new names. 7709 * include/std/string_view: Likewise. 7710 * include/experimental/string_view: Likewise. 7711 * testsuite/std/ranges/access/begin.cc: Likewise. 7712 * testsuite/std/ranges/access/cbegin.cc: Likewise. 7713 * testsuite/std/ranges/access/cdata.cc: Likewise. 7714 * testsuite/std/ranges/access/cend.cc: Likewise. 7715 * testsuite/std/ranges/access/crbegin.cc: Likewise. 7716 * testsuite/std/ranges/access/crend.cc: Likewise. 7717 * testsuite/std/ranges/access/data.cc: Likewise. 7718 * testsuite/std/ranges/access/end.cc: Likewise. 7719 * testsuite/std/ranges/access/rbegin.cc: Likewise. 7720 * testsuite/std/ranges/access/rend.cc: Likewise. 7721 * testsuite/std/ranges/safe_range.cc: Likewise. 7722 * testsuite/std/ranges/safe_range_types.cc: Likewise. 7723 * testsuite/util/testsuite_iterators.h: Likewise. 7724 7725 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>) 7726 (tuple_element<1, const subrange<I, S, K>>): Add partial 7727 specializations (LWG 3398). 7728 * testsuite/std/ranges/subrange/tuple_like.cc: New test. 7729 7730 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) 7731 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn) 7732 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool. 7733 77342020-02-18 Patrick Palka <ppalka@redhat.com> 7735 7736 P1983R0 Wording for GB301, US296, US292, US291, and US283 7737 * include/std/ranges (filter_view::pred): New member function. 7738 (join_view::_Iterator::_Iterator): Remove now-redundant comment since 7739 P1983R0 fixes the highlighted issue in the same way. 7740 (join_view::_Iterator<_Const>): Add friend 7741 join_view::_Iterator<!_Const>. 7742 (join_view::_M_inner): Remove mutable specifier, effectively reverting 7743 the proposed wording changes of P3278. 7744 (join_view::begin): Refine the condition for when to return a const 7745 iterator. 7746 (split_view::_OuterIter::_OuterIter): Adjust constraints. 7747 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred 7748 exists and works. 7749 77502020-02-18 Jonathan Wakely <jwakely@redhat.com> 7751 7752 PR libstdc++/93818 7753 * include/std/ranges (_RangeAdaptor): Add deduction guide. 7754 (filter_view::_Iterator): Add alias _Vp_iter and use in place of 7755 iterator_t<_Vp>. 7756 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'. 7757 (transform_view::_Iterator): Add alias _Base_iter and use in place of 7758 iterator_t<_Base>. 7759 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'. 7760 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases. 7761 (join_view::_Iterator::_S_iter_cat()): Add 'typename'. 7762 (split_view::_InnerIter::_S_iter_cat()): Likewise. 7763 7764 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid 7765 assumption that long is wider than int. 7766 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise. 7767 * testsuite/20_util/integer_comparisons/less.cc: Likewise. 7768 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise. 7769 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise. 7770 7771 P1976R2 Fixed-size span construction from dynamic range 7772 * include/std/span (__cpp_lib_span): Update value. 7773 (span(It, size_type), span(It, End)): Make conditionally explicit. Add 7774 assertion. 7775 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax 7776 constraints. 7777 (span::first<Count>(), span::last<Count>()): Use explicit type in 7778 return statement. 7779 (as_bytes, as_writable_bytes): Likewise. 7780 * include/std/version (__cpp_lib_span): Update value. 7781 * testsuite/23_containers/span/1.cc: Check new value. 7782 * testsuite/23_containers/span/2.cc: Check new value. 7783 * testsuite/23_containers/span/explicit.cc: New test. 7784 7785 * include/std/span (span::__is_compatible_array): Simplify alias 7786 template by using requires-clause. 7787 (span::__is_compatible_ref): New alias template for constraining 7788 constructors. 7789 (span::__is_compatible_iterator, span::__is_compatible_range): Remove. 7790 (span(It, size_type), span(It, End)): Use __is_compatible_ref. 7791 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove 7792 redundant parentheses. 7793 (span(R&&)): Add missing constraints. 7794 7795 * include/std/span (span): Reorder members and rename template 7796 parameters to match declarations in the C++2a working paper. 7797 7798 P2116R0 Remove tuple-like protocol support from fixed-extent span 7799 * include/std/span (get, tuple_size, tuple_element): Remove. 7800 * testsuite/23_containers/span/everything.cc: Remove checks for 7801 tuple-like API. 7802 * testsuite/23_containers/span/get_neg.cc: Remove. 7803 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove. 7804 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove. 7805 * testsuite/23_containers/span/tuple_size_neg.cc: Remove. 7806 78072020-02-17 Patrick Palka <ppalka@redhat.com> 7808 7809 P2106R0 Alternative wording for GB315 and GB316 7810 * include/bits/ranges_algo.h (in_fun_result): New. 7811 (for_each_result, for_each_n_result): Change into an alias of 7812 in_fun_result. 7813 (in_in_result): New. 7814 (mismatch_result): Change into an alias of in_in_result. 7815 (copy_if_result): Change into an alias of in_out_result. 7816 (swap_ranges_result): Change into an alias of in_in_result. 7817 (unary_transform_result): Change into an alias of in_out_result. 7818 (in_in_out_result): New. 7819 (binary_transform_result): Change into an alias of in_in_out_result. 7820 (replace_copy_result, replace_copy_if_result, remove_copy_if_result, 7821 remove_copy_result, unique_copy_result, reverse_copy_result, 7822 rotate_copy_result, partial_sort_copy_result): Change into an alias of 7823 in_out_result. 7824 (in_out_out_result): New. 7825 (partition_copy_result, merge_result): Change into an alias of 7826 in_out_out_result. 7827 (set_union_result, set_intersection_result): Change into an alias of 7828 in_in_out_result. 7829 (set_difference_result): Change into an alias of in_out_result. 7830 (set_symmetric_difference): Change into an alias of in_in_out_result. 7831 (min_max_result): New. 7832 (minmax_result, minmax_element_result): Change into an alias of 7833 min_max_result. 7834 (in_found_result): New. 7835 (next_permutation_result, prev_permutation_result): Change into an alias 7836 of in_found_result. 7837 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()): 7838 Adjust following changes to next_permutation_result and 7839 prev_permutation_result. 7840 * include/bits/ranges_algobase.h (in_out_result): New. 7841 (copy_result, move_result, move_backward_result, copy_backward_result, 7842 copy_n_result): Change into an alias of in_out_result. 7843 * include/bits/ranges_uninitialized.h (uninitialized_copy_result, 7844 uninitialized_copy_n_result, uninitialized_move_result, 7845 uninitialized_move_n_result): Likewise. 7846 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of 7847 structured bindings. 7848 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise. 7849 7850 P1243R4 Rangify new algorithms 7851 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn, 7852 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New. 7853 * testsuite/25_algorithms/clamp/constrained.cc: New test. 7854 * testsuite/25_algorithms/for_each/constrained.cc: Augment test. 7855 * testsuite/25_algorithms/sample/constrained.cc: New test. 7856 78572020-02-17 Jonathan Wakely <jwakely@redhat.com> 7858 7859 P1964R2 Wording for boolean-testable 7860 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) 7861 (__adjacent_find_fn): Cast result of predicate to bool. 7862 * include/std/concepts (__boolean): Remove. 7863 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add 7864 new helper concepts. 7865 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with) 7866 (predicate): Use __boolean_testable instead of boolean. 7867 * libsupc++/compare (__detail::__partially_ordered, _Synth3way): 7868 Likewise. 7869 7870 P1970R2 Consistency for size() functions: Add ranges::ssize 7871 * include/bits/range_access.h (_SSize, ssize): Define for C++20. 7872 * testsuite/std/ranges/access/ssize.cc: New test. 7873 7874 P1956R1 On the names of low-level bit manipulation functions 7875 * include/bits/hashtable_policy.h: Update comment. 7876 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename. 7877 (ispow2, ceil2, floor2, log2p1): Likewise. 7878 (__cpp_lib_int_pow2): Add feature test macro. 7879 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1. 7880 * include/std/memory (assume_aligned): Adjust use of ispow2. 7881 * include/std/version (__cpp_lib_int_pow2): Add. 7882 * libsupc++/new_opa.cc: Adjust use of __ispow2. 7883 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1. 7884 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2. 7885 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ... 7886 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here. 7887 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ... 7888 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here. 7889 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ... 7890 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here. 7891 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ... 7892 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here. 7893 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ... 7894 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here. 7895 7896 * include/std/charconv: Add comment. 7897 7898 PR libstdc++/92546 (partial) 7899 * include/bits/random.h (uniform_random_bit_generator): Move definition 7900 to <bits/uniform_int_dist.h>. 7901 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead 7902 of <bits/random.h>. 7903 * include/bits/ranges_algobase.h: Do not include <cmath>. 7904 * include/bits/uniform_int_dist.h (uniform_random_bit_generator): 7905 Move here. 7906 * include/std/ranges: Do not include <limits>. 7907 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. 7908 7909 PR libstdc++/92546 (partial) 7910 * include/Makefile.am: Add new header. 7911 * include/Makefile.in: Regenerate. 7912 * include/bits/int_limits.h: New header. 7913 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace 7914 numeric_limits with __detail::__int_limits. 7915 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) 7916 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1): 7917 Likewise. 7918 * include/std/charconv (__to_chars_8, __from_chars_binary) 7919 (__from_chars_alpha_to_num, from_chars): Likewise. 7920 * include/std/memory_resource (polymorphic_allocator::allocate) 7921 (polymorphic_allocator::allocate_object): Likewise. 7922 * include/std/string_view (basic_string_view::_S_compare): Likewise. 7923 * include/std/utility (in_range): Likewise. 7924 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for 7925 extra error about incomplete type __int_limits<bool>. 7926 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>. 7927 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise. 7928 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise. 7929 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise. 7930 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise. 7931 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise. 7932 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise. 7933 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise. 7934 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise. 7935 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise. 7936 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise. 7937 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise. 7938 7939 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update 7940 value for partial_ordering::unordered. 7941 7942 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add 7943 const-qualified expression variations. 7944 * include/std/concepts (copyable): Likewise. 7945 7946 * include/std/type_traits (__is_standard_integer): New helper trait. 7947 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater) 7948 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20. 7949 * include/std/version (__cpp_lib_integer_comparison_functions): Define. 7950 * testsuite/20_util/integer_comparisons/1.cc: New test. 7951 * testsuite/20_util/integer_comparisons/2.cc: New test. 7952 * testsuite/20_util/integer_comparisons/equal.cc: New test. 7953 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test. 7954 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test. 7955 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test. 7956 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test. 7957 * testsuite/20_util/integer_comparisons/in_range.cc: New test. 7958 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test. 7959 * testsuite/20_util/integer_comparisons/less.cc: New test. 7960 * testsuite/20_util/integer_comparisons/less_equal.cc: New test. 7961 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test. 7962 * testsuite/20_util/integer_comparisons/less_neg.cc: New test. 7963 * testsuite/20_util/integer_comparisons/not_equal.cc: New test. 7964 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test. 7965 79662020-02-16 Patrick Palka <ppalka@redhat.com> 7967 7968 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): 7969 Move code after an early exit constexpr if to under an else branch. 7970 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise. 7971 79722020-02-15 Patrick Palka <ppalka@redhat.com> 7973 7974 * include/bits/ranges_algo.h: Adjust whitespace and formatting. 7975 * include/bits/ranges_algobase.h: Likewise. 7976 * include/bits/ranges_uninitialized.h: Likewise. 7977 7978 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of, 7979 binary_search, copy_if, count, count_if, equal_range, find, find_end, 7980 find_first_of, find_if, find_if_not, for_each, generate, generate_n, 7981 includes, inplace_merge, is_heap, is_heap_until, is_partitioned, 7982 is_permutation, is_sorted, is_sorted_until, lexicographical_compare, 7983 lower_bound, make_heap, max, max_element, merge, min, min_element, 7984 minmax, minmax_element, mismatch, next_permutation, none_of, 7985 nth_element, partial_sort, partial_sort_copy, partition, partition_copy, 7986 partition_point, pop_heap, prev_permutation, push_heap, remove, 7987 remove_copy, remove_copy_if, remove_if, replace, replace_copy, 7988 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy, 7989 search, search_n, set_difference, set_intersection, 7990 set_symmetric_difference, set_union, shuffle, sort, sort_heap, 7991 stable_partition, stable_sort, swap_ranges, transform, unique, 7992 unique_copy, upper_bound): Convert into function objects. 7993 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n, 7994 fill, move_backward, copy_backward): Likewise. 7995 * include/bits/ranges_uninitialized.h (uninitialized_default_construct, 7996 uninitialized_default_construct_n, uninitialized_value_construct, 7997 uninitialized_value_construct_n, uninitialized_copy, 7998 uninitialized_copy_n, uninitialized_move, uninitialized_move_n, 7999 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at, 8000 destroy, destroy_n): Likewise. 8001 8002 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ... 8003 (ranges::find_end): ... here. 8004 (ranges::__lexicographical_compare): Fold into ... 8005 (ranges::lexicographical_compare): ... here. 8006 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ... 8007 (ranges::equal): ... here. 8008 80092020-02-15 Jonathan Wakely <jwakely@redhat.com> 8010 8011 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L. 8012 * include/std/deque: Likewise. 8013 * include/std/forward_list: Likewise. 8014 * include/std/list: Likewise. 8015 * include/std/string: Likewise. 8016 * include/std/vector: Likewise. 8017 * include/std/version: Likewise. 8018 * testsuite/23_containers/deque/erasure.cc: Test for new value. 8019 * testsuite/23_containers/forward_list/erasure.cc: Likewise. 8020 * testsuite/23_containers/list/erasure.cc: Likewise. 8021 * testsuite/23_containers/map/erasure.cc: Likewise. 8022 * testsuite/23_containers/set/erasure.cc: Likewise. 8023 * testsuite/23_containers/unordered_map/erasure.cc: Likewise. 8024 * testsuite/23_containers/unordered_set/erasure.cc: Likewise. 8025 * testsuite/23_containers/vector/erasure.cc: Likewise. 8026 80272020-02-15 Jonathan Wakely <jwakely@redhat.com> 8028 8029 * include/bits/random.h (uniform_random_bit_generator): Require min() 8030 and max() to be constant expressions and min() to be less than max(). 8031 * testsuite/26_numerics/random/concept.cc: Check additional cases. 8032 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. 8033 80342020-02-13 Patrick Palka <ppalka@redhat.com> 8035 8036 * include/Makefile.am: Add <bits/ranges_uninitialized.h>. 8037 * include/Makefile.in: Regenerate. 8038 * include/bits/ranges_uninitialized.h: New header. 8039 * include/std/memory: Include it. 8040 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New 8041 test. 8042 * .../uninitialized_copy/constrained.cc: New test. 8043 * .../uninitialized_default_construct/constrained.cc: New test. 8044 * .../uninitialized_fill/constrained.cc: New test. 8045 * .../uninitialized_move/constrained.cc: New test. 8046 * .../uninitialized_value_construct/constrained.cc: New test. 8047 8048 * include/Makefile.am: Add bits/ranges_algobase.h 8049 * include/Makefile.in: Regenerate. 8050 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor 8051 existing #includes. 8052 (__detail::__is_normal_iterator, __detail::is_reverse_iterator, 8053 __detail::__is_move_iterator, copy_result, move_result, 8054 __equal, equal, copy_result, move_result, move_backward_result, 8055 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy, 8056 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n, 8057 fill): Split out into ... 8058 * bits/range_algobase.h: ... this new header. 8059 80602020-02-12 Patrick Palka <ppalka@redhat.com> 8061 8062 LWG 3389 and LWG 3390 8063 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when 8064 constructing the move_iterator with __i. 8065 (counted_iterator::counted_iterator): Use std::move when initializing 8066 M_current with __i. 8067 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test. 8068 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test. 8069 80702020-02-12 Sandra Loosemore <sandra@codesourcery.com> 8071 8072 PR libstdc++/79193 8073 PR libstdc++/88999 8074 8075 * configure: Regenerated. 8076 80772020-02-12 Fran��ois Dumont <fdumont@gcc.gnu.org> 8078 8079 * include/bits/hashtable.h 8080 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add 8081 missing std namespace qualification to forward call. 8082 80832020-02-09 Jonathan Wakely <jwakely@redhat.com> 8084 8085 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix 8086 comment. 8087 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise. 8088 8089 * include/std/ranges: Fix non-ASCII characters in comment. 8090 8091 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require 8092 equality comparison to be valid and return bool. 8093 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison. 8094 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check 8095 type with ambiguous conversion to fundamental types. 8096 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise. 8097 80982020-02-07 Jonathan Wakely <jwakely@redhat.com> 8099 8100 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t): 8101 Use remove_cvref_t. 8102 (readable_traits): Rename to indirectly_readable_traits. 8103 (readable): Rename to indirectly_readable. 8104 (writable): Rename to indirectly_writable. 8105 (__detail::__iter_exchange_move): Do not use remove_reference_t. 8106 (indirectly_swappable): Adjust requires expression parameter types. 8107 expression. 8108 * include/bits/ranges_algo.h (ranges::transform, ranges::replace) 8109 (ranges::replace_if, ranges::generate_n, ranges::generate) 8110 (ranges::remove): Use new name for writable. 8111 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow): 8112 Use new name for readable. 8113 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use 8114 new name for readable_traits. 8115 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise. 8116 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for 8117 new definition of indirectly_readable. 8118 8119 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change 8120 to take parameters of common_iterator, instead of the common_iterator 8121 type itself. Fix argument for __common_iter_has_arrow constraint. 8122 (iterator_traits<common_iterator<I, S>>::pointer): Adjust. 8123 81242020-02-07 Jonathan Wakely <jwakely@redhat.com> 8125 8126 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body 8127 warning. 8128 (basic_istream_view::_Iterator::operator++()): Add missing return. 8129 81302020-02-07 Patrick Palka <ppalka@redhat.com> 8131 8132 * include/bits/ranges_algo.h: Remove extraneous &&. 8133 8134 * include/std/ranges (ranges::__detail::__stream_extractable, 8135 ranges::basic_istream_view, ranges::istream_view): Define. 8136 * testsuite/std/ranges/istream_view: New test. 8137 8138 Implement C++20 range adaptors 8139 * include/std/ranges: Include <bits/refwrap.h> and <tuple>. 8140 (subrange::_S_store_size): Mark as const instead of constexpr to 8141 avoid what seems to be a bug in GCC. 8142 (__detail::__box): Give it defaulted copy and move constructors. 8143 (ranges::views::_Single::operator()): Mark constexpr. 8144 (ranges::views::_Iota::operator()): Mark constexpr. 8145 (__detail::Empty): Define. 8146 (ranges::views::__closure::_RangeAdaptor, 8147 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view, 8148 ranges::views::all, ranges::__detail::find_if, 8149 ranges::__detail::find_if_not, ranges::__detail::mismatch, 8150 ranges::detail::min, filter_view, ranges::views::filter, transform_view, 8151 ranges::views::transform, take_view, ranges::views::take, 8152 take_while_view, ranges::views::take_while, drop_view, 8153 ranges::views::drop, join_view, ranges::views::join, 8154 __detail::require_constant, __detail::tiny_range, split_view, 8155 ranges::views::split, ranges::views::_Counted, ranges::views::counted, 8156 common_view, ranges::views::common, reverse_view, 8157 ranges::views::reverse, 8158 ranges::views::__detail::__is_reversible_subrange, 8159 ranges::views::__detail::__is_reverse_view, reverse_view, 8160 ranges::views::reverse, __detail::__has_tuple_element, elements_view, 8161 ranges::views::elements, ranges::views::keys, ranges::views::values): 8162 Define. 8163 (views): Alias for ranges::views. 8164 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>, 8165 tuple_element<1, ranges::subrange>): New partial specializations. 8166 * testsuite/std/ranges/adaptors/all.cc: New test. 8167 * testsuite/std/ranges/adaptors/common.cc: Likewise. 8168 * testsuite/std/ranges/adaptors/counted.cc: Likewise. 8169 * testsuite/std/ranges/adaptors/drop.cc: Likewise. 8170 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise. 8171 * testsuite/std/ranges/adaptors/elements.cc: Likewise. 8172 * testsuite/std/ranges/adaptors/filter.cc: Likewise. 8173 * testsuite/std/ranges/adaptors/join.cc: Likewise. 8174 * testsuite/std/ranges/adaptors/reverse.cc: Likewise. 8175 * testsuite/std/ranges/adaptors/split.cc: Likewise. 8176 * testsuite/std/ranges/adaptors/take.cc: Likewise. 8177 * testsuite/std/ranges/adaptors/take_while.cc: Likewise. 8178 * testsuite/std/ranges/adaptors/transform.cc: Likewise. 8179 81802020-02-07 Jonathan Wakely <jwakely@redhat.com> 8181 8182 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying 8183 type of enumerations and comparison category types. 8184 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type. 8185 (__cmp_cat::_Ncmp::unordered): Change value to 2. 8186 (partial_ordering::_M_value, weak_ordering::_M_value) 8187 (strong_ordering::_M_value): Change type to __cmp_cat::type. 8188 (partial_ordering::_M_is_ordered): Remove data member. 8189 (partial_ordering): Use second bit of _M_value for unordered. Adjust 8190 comparison operators. 8191 (weak_ordering::operator partial_ordering): Simplify to remove 8192 branches. 8193 (operator<=>(unspecified, weak_ordering)): Likewise. 8194 (strong_ordering::operator partial_ordering): Likewise. 8195 (strong_ordering::operator weak_ordering): Likewise. 8196 (operator<=>(unspecified, strong_ordering)): Likewise. 8197 * testsuite/18_support/comparisons/categories/partialord.cc: New test. 8198 * testsuite/18_support/comparisons/categories/strongord.cc: New test. 8199 * testsuite/18_support/comparisons/categories/weakord.cc: New test. 8200 8201 * include/std/ranges (iota_view::_Iterator): Fix typo in name of 8202 __cpp_lib_three_way_comparison macro and use deduced return type for 8203 operator<=>. 8204 * testsuite/std/ranges/iota/iterator.cc: New test. 8205 82062020-02-07 Patrick Palka <ppalka@redhat.com> 8207 Jonathan Wakely <jwakely@redhat.com> 8208 8209 Implement C++20 constrained algorithms 8210 * include/Makefile.am: Add new header. 8211 * include/Makefile.in: Regenerate. 8212 * include/std/algorithm: Include <bits/ranges_algo.h>. 8213 * include/bits/ranges_algo.h: New file. 8214 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test. 8215 * testsuite/25_algorithms/all_of/constrained.cc: New test. 8216 * testsuite/25_algorithms/any_of/constrained.cc: New test. 8217 * testsuite/25_algorithms/binary_search/constrained.cc: New test. 8218 * testsuite/25_algorithms/copy/constrained.cc: New test. 8219 * testsuite/25_algorithms/copy_backward/constrained.cc: New test. 8220 * testsuite/25_algorithms/copy_if/constrained.cc: New test. 8221 * testsuite/25_algorithms/copy_n/constrained.cc: New test. 8222 * testsuite/25_algorithms/count/constrained.cc: New test. 8223 * testsuite/25_algorithms/count_if/constrained.cc: New test. 8224 * testsuite/25_algorithms/equal/constrained.cc: New test. 8225 * testsuite/25_algorithms/equal_range/constrained.cc: New test. 8226 * testsuite/25_algorithms/fill/constrained.cc: New test. 8227 * testsuite/25_algorithms/fill_n/constrained.cc: New test. 8228 * testsuite/25_algorithms/find/constrained.cc: New test. 8229 * testsuite/25_algorithms/find_end/constrained.cc: New test. 8230 * testsuite/25_algorithms/find_first_of/constrained.cc: New test. 8231 * testsuite/25_algorithms/find_if/constrained.cc: New test. 8232 * testsuite/25_algorithms/find_if_not/constrained.cc: New test. 8233 * testsuite/25_algorithms/for_each/constrained.cc: New test. 8234 * testsuite/25_algorithms/generate/constrained.cc: New test. 8235 * testsuite/25_algorithms/generate_n/constrained.cc: New test. 8236 * testsuite/25_algorithms/heap/constrained.cc: New test. 8237 * testsuite/25_algorithms/includes/constrained.cc: New test. 8238 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test. 8239 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test. 8240 * testsuite/25_algorithms/is_permutation/constrained.cc: New test. 8241 * testsuite/25_algorithms/is_sorted/constrained.cc: New test. 8242 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test. 8243 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New 8244 test. 8245 * testsuite/25_algorithms/lower_bound/constrained.cc: New test. 8246 * testsuite/25_algorithms/max/constrained.cc: New test. 8247 * testsuite/25_algorithms/max_element/constrained.cc: New test. 8248 * testsuite/25_algorithms/merge/constrained.cc: New test. 8249 * testsuite/25_algorithms/min/constrained.cc: New test. 8250 * testsuite/25_algorithms/min_element/constrained.cc: New test. 8251 * testsuite/25_algorithms/minmax/constrained.cc: New test. 8252 * testsuite/25_algorithms/minmax_element/constrained.cc: New test. 8253 * testsuite/25_algorithms/mismatch/constrained.cc: New test. 8254 * testsuite/25_algorithms/move/constrained.cc: New test. 8255 * testsuite/25_algorithms/move_backward/constrained.cc: New test. 8256 * testsuite/25_algorithms/next_permutation/constrained.cc: New test. 8257 * testsuite/25_algorithms/none_of/constrained.cc: New test. 8258 * testsuite/25_algorithms/nth_element/constrained.cc: New test. 8259 * testsuite/25_algorithms/partial_sort/constrained.cc: New test. 8260 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test. 8261 * testsuite/25_algorithms/partition/constrained.cc: New test. 8262 * testsuite/25_algorithms/partition_copy/constrained.cc: New test. 8263 * testsuite/25_algorithms/partition_point/constrained.cc: New test. 8264 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test. 8265 * testsuite/25_algorithms/remove/constrained.cc: New test. 8266 * testsuite/25_algorithms/remove_copy/constrained.cc: New test. 8267 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test. 8268 * testsuite/25_algorithms/remove_if/constrained.cc: New test. 8269 * testsuite/25_algorithms/replace/constrained.cc: New test. 8270 * testsuite/25_algorithms/replace_copy/constrained.cc: New test. 8271 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test. 8272 * testsuite/25_algorithms/replace_if/constrained.cc: New test. 8273 * testsuite/25_algorithms/reverse/constrained.cc: New test. 8274 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test. 8275 * testsuite/25_algorithms/rotate/constrained.cc: New test. 8276 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test. 8277 * testsuite/25_algorithms/search/constrained.cc: New test. 8278 * testsuite/25_algorithms/search_n/constrained.cc: New test. 8279 * testsuite/25_algorithms/set_difference/constrained.cc: New test. 8280 * testsuite/25_algorithms/set_intersection/constrained.cc: New test. 8281 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New 8282 test. 8283 * testsuite/25_algorithms/set_union/constrained.cc: New test. 8284 * testsuite/25_algorithms/shuffle/constrained.cc: New test. 8285 * testsuite/25_algorithms/sort/constrained.cc: New test. 8286 * testsuite/25_algorithms/stable_partition/constrained.cc: New test. 8287 * testsuite/25_algorithms/stable_sort/constrained.cc: New test. 8288 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test. 8289 * testsuite/25_algorithms/transform/constrained.cc: New test. 8290 * testsuite/25_algorithms/unique/constrained.cc: New test. 8291 * testsuite/25_algorithms/unique_copy/constrained.cc: New test. 8292 * testsuite/25_algorithms/upper_bound/constrained.cc: New test. 8293 82942020-02-06 Jonathan Wakely <jwakely@redhat.com> 8295 8296 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR 8297 number in comment. Fix indentation. 8298 8299 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove 8300 redundant _GLIBCXX20_CONSTEXPR. 8301 8302 * include/std/ranges (viewable_range): Replace decay_t with 8303 remove_cvref_t (LWG 3375). 8304 83052020-02-05 Jonathan Wakely <jwakely@redhat.com> 8306 8307 * include/bits/iterator_concepts.h (iter_reference_t) 8308 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t): 8309 Remove workarounds for PR c++/67704. 8310 * testsuite/24_iterators/aliases.cc: New test. 8311 83122020-02-05 Patrick Palka <ppalka@redhat.com> 8313 8314 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i 8315 when initializing _M_current. 8316 (move_iterator::base): Split into two overloads differing in 8317 ref-qualifiers as in P1207R4 for C++20. 8318 83192020-02-04 Jonathan Wakely <jwakely@redhat.com> 8320 8321 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after 8322 use. 8323 8324 PR libstdc++/93562 8325 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define. 8326 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it. 8327 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test. 8328 83292020-02-01 Andrew Burgess <andrew.burgess@embecosm.com> 8330 8331 * configure: Regenerate. 8332 83332020-01-31 Patrick Palka <ppalka@redhat.com> 8334 8335 * testsuite/24_iterators/range_operations/distance.cc: Do not assume 8336 test_range::end() returns the same type as test_range::begin(). 8337 * testsuite/24_iterators/range_operations/next.cc: Likewise. 8338 * testsuite/24_iterators/range_operations/prev.cc: Likewise. 8339 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end): 8340 Always return a sentinel<I>. 8341 83422020-01-29 Jonathan Wakely <jwakely@redhat.com> 8343 8344 PR libstdc++/92895 8345 * include/std/stop_token (stop_token::stop_possible()): Call new 8346 _M_stop_possible() function. 8347 (stop_token::stop_requested()): Do not use stop_possible(). 8348 (stop_token::binary_semaphore): New class, as temporary stand-in for 8349 std::binary_semaphore. 8350 (stop_token::_Stop_cb::_M_callback): Add noexcept to type. 8351 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done): 8352 New data members for symchronization with stop_callback destruction. 8353 (stop_token::_Stop_cb::_Stop_cb): Make non-template. 8354 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute): 8355 Remove. 8356 (stop_token::_Stop_cb::_M_run): New member function. 8357 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx): 8358 Remove. 8359 (stop_token::_Stop_state::_M_owners): New data member to track 8360 reference count for ownership. 8361 (stop_token::_Stop_state::_M_value): New data member combining a 8362 spinlock, the stop requested flag, and the reference count for 8363 associated stop_source objects. 8364 (stop_token::_Stop_state::_M_requester): New data member for 8365 synchronization with stop_callback destruction. 8366 (stop_token::_Stop_state::_M_stop_possible()): New member function. 8367 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit 8368 of _M_value. 8369 (stop_token::_Stop_state::_M_add_owner) 8370 (stop_token::_Stop_state::_M_release_ownership) 8371 (stop_token::_Stop_state::_M_add_ssrc) 8372 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for 8373 updating reference counts. 8374 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) 8375 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) 8376 (stop_token::_Stop_state::_M_try_lock) 8377 (stop_token::_Stop_state::_M_try_lock_and_stop) 8378 (stop_token::_Stop_state::_M_do_try_lock): New member functions for 8379 managing spinlock. 8380 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to 8381 read and update state. Release lock while running callbacks. Use new 8382 data members to synchronize with callback destruction. 8383 (stop_token::_Stop_state::_M_remove_callback): Likewise. 8384 (stop_token::_Stop_state::_M_register_callback): Use atomic operations 8385 to read and update state. 8386 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state, 8387 replacing shared_ptr. 8388 (stop_source::stop_source(const stop_source&)): Update reference count. 8389 (stop_source::operator=(const stop_source&)): Likewise. 8390 (stop_source::~stop_source()): Likewise. 8391 (stop_source::stop_source(stop_source&&)): Define as defaulted. 8392 (stop_source::operator=(stop_source&&)): Establish postcondition on 8393 parameter. 8394 (stop_callback): Enforce preconditions on template parameter. Replace 8395 base class with data member of new _Cb_impl type. 8396 (stop_callback::stop_callback(const stop_token&, Cb&&)) 8397 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race. 8398 (stop_callback::_Cb_impl): New type wrapping _Callback member and 8399 defining the _S_execute member function. 8400 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New 8401 test. 8402 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test. 8403 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test. 8404 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc: 8405 New test. 8406 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New 8407 test. 8408 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test. 8409 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test. 8410 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New 8411 test. 8412 8413 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use 8414 three_way_comparable_with. 8415 (__detail::__3way_cmp_with): Remove workaround for fixed bug. 8416 (compare_three_way::operator()): Remove redundant constraint from 8417 requires-clause. 8418 (__detail::_Synth3way::operator()): Use three_way_comparable_with 8419 instead of workaround. 8420 * testsuite/18_support/comparisons/object/93479.cc: Prune extra 8421 output due to simplified constraints on compare_three_way::operator(). 8422 8423 PR libstdc++/93479 8424 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid. 8425 * testsuite/18_support/comparisons/object/93479.cc: New test. 8426 8427 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end() 8428 returns the same type as test_range::begin(). Add comments. 8429 * testsuite/std/ranges/access/rbegin.cc: Likewise. 8430 * testsuite/std/ranges/access/rend.cc: Likewise. 8431 * testsuite/std/ranges/range.cc: Do not assume the sentinel for 8432 test_range is the same as its iterator type. 8433 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add 8434 operator- overloads to satisfy sized_sentinel_for when the iterator 8435 satisfies random_access_iterator. 8436 84372020-01-28 Jonathan Wakely <jwakely@redhat.com> 8438 8439 PR libstdc++/93470 8440 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict 8441 static assertion to object types. 8442 8443 PR libstdc++/93325 8444 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for 8445 clock_gettime instead of explicit glibc version check. 8446 * configure: Regenerate. 8447 84482020-01-28 Martin Liska <mliska@suse.cz> 8449 8450 PR libstdc++/93478 8451 * include/std/atomic: Fix typo. 8452 * include/std/optional: Likewise. 8453 84542020-01-27 Andrew Burgess <andrew.burgess@embecosm.com> 8455 8456 * configure: Regenerate. 8457 84582020-01-27 Jonathan Wakely <jwakely@redhat.com> 8459 8460 PR libstdc++/93426 8461 * include/std/span (span): Fix deduction guide. 8462 * testsuite/23_containers/span/deduction.cc: New test. 8463 84642020-01-24 Jonathan Wakely <jwakely@redhat.com> 8465 8466 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type. 8467 (__cmp_cat::_Ord::equivalent): Add enumerator. 8468 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less 8469 and greater. 8470 (partial_ordering, weak_ordering, strong_ordering): Remove 8471 constructors taking __cmp_cat::_Eq parameters. Use renamed 8472 enumerators. 8473 84742020-01-24 Maciej W. Rozycki <macro@wdc.com> 8475 8476 * acinclude.m4: Handle `--with-toolexeclibdir='. 8477 * Makefile.in: Regenerate. 8478 * aclocal.m4: Regenerate. 8479 * configure: Regenerate. 8480 * doc/Makefile.in: Regenerate. 8481 * include/Makefile.in: Regenerate. 8482 * libsupc++/Makefile.in: Regenerate. 8483 * po/Makefile.in: Regenerate. 8484 * python/Makefile.in: Regenerate. 8485 * src/Makefile.in: Regenerate. 8486 * src/c++11/Makefile.in: Regenerate. 8487 * src/c++17/Makefile.in: Regenerate. 8488 * src/c++98/Makefile.in: Regenerate. 8489 * src/filesystem/Makefile.in: Regenerate. 8490 * testsuite/Makefile.in: Regenerate. 8491 84922020-01-23 Alexandre Oliva <oliva@adacore.com> 8493 8494 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros. 8495 * configure: Rebuild. 8496 8497 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t. 8498 84992020-01-23 Jonathan Wakely <jwakely@redhat.com> 8500 8501 PR libstdc++/91947 8502 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify 8503 rule. 8504 * include/Makefile.in: Regenerate. 8505 85062020-01-20 Jonathan Wakely <jwakely@redhat.com> 8507 8508 * doc/xml/faq.xml: Fix grammar. 8509 * doc/xml/manual/appendix_contributing.xml: Improve instructions. 8510 * doc/xml/manual/spine.xml: Update copyright years. 8511 * doc/html/*: Regenerate. 8512 85132020-01-19 Eric S. Raymond <esr@thyrsus.com> 8514 8515 * doc/xml/faq.xml: Update for SVN -> Git transition. 8516 * doc/xml/manual/appendix_contributing.xml: Likewise. 8517 * doc/xml/manual/status_cxx1998.xml: Likewise. 8518 * doc/xml/manual/status_cxx2011.xml: Likewise. 8519 * doc/xml/manual/status_cxx2014.xml: Likewise. 8520 * doc/xml/manual/status_cxx2017.xml: Likewise. 8521 * doc/xml/manual/status_cxx2020.xml: Likewise. 8522 * doc/xml/manual/status_cxxtr1.xml: Likewise. 8523 * doc/xml/manual/status_cxxtr24733.xml: Likewise. 8524 85252020-01-18 Iain Sandoe <iain@sandoe.co.uk> 8526 8527 * include/Makefile.am: Add coroutine to the std set. 8528 * include/Makefile.in: Regenerated. 8529 * include/std/coroutine: New file. 8530 85312020-01-17 Jonathan Wakely <jwakely@redhat.com> 8532 8533 PR libstdc++/92376 8534 * include/bits/c++config: Only do PSTL config when the header is 8535 present, to fix freestanding. 8536 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation 8537 functions if they were detected by configure. 8538 85392020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de> 8540 Matthew Bauer <mjbauer95@gmail.com> 8541 Jonathan Wakely <jwakely@redhat.com> 8542 8543 PR bootstrap/64271 (partial) 8544 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type 8545 to unsigned short. 8546 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit) 8547 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync 8548 definitions with NetBSD upstream. 8549 (ctype_base::blank): Use _CTYPE_BL. 8550 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove 8551 Declaration. 8552 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_. 8553 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char 8554 parameters to unsigned char. 8555 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise. 8556 85572020-01-16 Fran��ois Dumont <fdumont@gcc.gnu.org> 8558 8559 PR libstdc++/91263 8560 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend. 8561 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>. 8562 (_Equality_base): Remove. 8563 (_Equality<>::_M_equal): Review implementation. Use 8564 std::is_permutation. 8565 * testsuite/23_containers/unordered_multiset/operators/1.cc 8566 (Hash, Equal, test02, test03): New. 8567 * testsuite/23_containers/unordered_set/operators/1.cc 8568 (Hash, Equal, test02, test03): New. 8569 85702020-01-15 Jonathan Wakely <jwakely@redhat.com> 8571 8572 PR libstdc++/93267 8573 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type): 8574 Move here from <bits/range_access.h> and define using __int128 when 8575 available. 8576 (__is_integer_like, __is_signed_integer_like): Move here from 8577 <bits/range_access.h>. 8578 (weakly_incrementable): Use __is_signed_integer_like. 8579 * include/bits/range_access.h (__max_diff_type, __max_size_type) 8580 (__is_integer_like, __is_signed_integer_like): Move to 8581 <bits/iterator_concepts.h>. 8582 (__make_unsigned_like_t): Move here from <ranges>. 8583 * include/std/ranges (__make_unsigned_like_t): Move to 8584 <bits/range_access.h>. 8585 (iota_view): Replace using-directive with using-declarations. 8586 * testsuite/std/ranges/iota/93267.cc: New test. 8587 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory. 8588 85892020-01-13 Jonathan Wakely <jwakely@redhat.com> 8590 8591 PR libstdc++/93244 8592 * include/bits/fs_path.h (path::generic_string<C,A>) 8593 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash. 8594 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check 8595 root-dir is converted to forward slash in generic pathname. 8596 * testsuite/27_io/filesystem/path/generic/utf.cc: New test. 8597 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test. 8598 8599 PR libstdc++/58605 8600 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization): 8601 Define. 8602 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>) 8603 (__atomic_float): Add default member initializer for C++20. 8604 * include/std/atomic (atomic): Likewise. 8605 (atomic::atomic()): Remove noexcept-specifier on default constructor. 8606 * include/std/version (__cpp_lib_atomic_value_initialization): Define. 8607 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line 8608 number. 8609 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise. 8610 * testsuite/29_atomics/atomic/cons/value_init.cc: New test. 8611 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test. 8612 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust 8613 expected result for is_trivially_default_constructible. 8614 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise. 8615 * testsuite/29_atomics/atomic_float/value_init.cc: New test. 8616 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise. 8617 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise. 8618 * testsuite/29_atomics/atomic_integral/cons/value_init.cc 8619 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust 8620 expected results for is_trivially_default_constructible. 8621 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add 8622 new test generator. 8623 86242020-01-10 Jonathan Wakely <jwakely@redhat.com> 8625 8626 * testsuite/util/testsuite_iterators.h: Improve comment. 8627 8628 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11 8629 initialization syntax. 8630 8631 PR libstdc++/92285 8632 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type 8633 of base class independent of __cplusplus value. 8634 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the 8635 type defined in the base class 8636 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test. 8637 * testsuite/24_iterators/istreambuf_iterator/requirements/ 8638 base_classes.cc: Adjust expected base class for C++98. 8639 86402020-01-09 Olivier Hainque <hainque@adacore.com> 8641 8642 * doc/xml/manual/appendix_contributing.xml: Document _C2 8643 as a reserved identifier, by VxWorks. 8644 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2. 8645 * include/bits/stl_multimap.h: Likewise. 8646 86472020-01-09 Jonathan Wakely <jwakely@redhat.com> 8648 8649 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==) 8650 (_ExtPtr_allocator::operator!=): Add missing const qualifiers. 8651 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add 8652 partial specialization to disambiguate the two constrained 8653 specializations. 8654 8655 * include/experimental/type_traits (experimental::is_pod_v): Disable 8656 -Wdeprecated-declarations warnings around reference to std::is_pod. 8657 * include/std/type_traits (is_pod_v): Likewise. 8658 * testsuite/18_support/max_align_t/requirements/2.cc: Also check 8659 is_standard_layout and is_trivial. Do not check is_pod for C++20. 8660 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc: 8661 Add -Wno-deprecated for C++20. 8662 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise. 8663 * testsuite/20_util/is_pod/value.cc: Likewise. 8664 * testsuite/experimental/type_traits/value.cc: Likewise. 8665 86662020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com> 8667 8668 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro. 8669 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20. 8670 * testuite/20_util/is_pod/deprecated-2a.cc: New test. 8671 86722020-01-09 Jonathan Wakely <jwakely@redhat.com> 8673 8674 PR libstdc++/93205 8675 * include/bits/random.h (operator>>): Check stream operation succeeds. 8676 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type 8677 typedefs. 8678 (operator>>): Remove redundant __istream_type typedefs. Check stream 8679 operations succeed. 8680 (__extract_params): New function to fill a vector from a stream. 8681 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line. 8682 8683 PR libstdc++/93208 8684 * config/abi/pre/gnu.ver: Add new exports. 8685 * include/std/memory_resource (memory_resource::~memory_resource()): 8686 Do not define inline. 8687 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise. 8688 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()): 8689 Define. 8690 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define. 8691 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test. 8692 86932020-01-09 Fran��ois Dumont <fdumont@gcc.gnu.org> 8694 8695 PR libstdc++/92124 8696 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New 8697 template alias. 8698 (_Hashtable<>::__fwd_value_for): New. 8699 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template 8700 parameter. 8701 (_Hashtable<>::_M_assign<>): Add _Ht template parameter. 8702 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt. 8703 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept 8704 with std::move. 8705 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt. 8706 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)): 8707 Adapt. 8708 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)): 8709 Adapt. 8710 * testsuite/23_containers/unordered_set/92124.cc: New. 8711 87122020-01-08 Jonathan Wakely <jwakely@redhat.com> 8713 8714 PR libstdc++/93201 8715 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more 8716 detailed error reporting for remove_all. Check result of recursive 8717 call before incrementing iterator. 8718 (remove_all(const path&), remove_all(const path&, error_code&)): Use 8719 do_remove_all. 8720 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check 8721 result of recursive call before incrementing iterator. 8722 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors 8723 are reported correctly. 8724 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise. 8725 87262020-01-07 Thomas Rodgers <trodgers@redhat.com> 8727 8728 * include/std/condition_variable 8729 (condition_variable_any::wait_on): Rename to match current draft 8730 standard. 8731 (condition_variable_any::wait_on_until): Likewise. 8732 (condition_variable_any::wait_on_for): Likewise. 8733 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: 8734 Adjust tests to account for renamed methods. 8735 87362020-01-07 Fran��ois Dumont <fdumont@gcc.gnu.org> 8737 8738 PR libstdc++/92124 8739 * include/bits/stl_tree.h 8740 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace 8741 std::move_if_noexcept by std::move. 8742 * testsuite/23_containers/map/92124.cc: New. 8743 * testsuite/23_containers/set/92124.cc: New. 8744 87452020-01-06 Jonathan Wakely <jwakely@redhat.com> 8746 8747 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254). 8748 (stop_source): Likewise (LWG 3362). 8749 * testsuite/30_threads/stop_token/stop_source.cc: Test equality 8750 comparisons. 8751 8752 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp) 8753 (lexicographical_compare_three_way): Do not depend on 8754 __cpp_lib_concepts. 8755 * include/std/version (__cpp_lib_three_way_comparison): Only define 8756 when __cpp_lib_concepts is defined. 8757 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. 8758 87592020-01-03 Jonathan Wakely <jwakely@redhat.com> 8760 8761 * include/bits/stl_algobase.h (lexicographical_compare_three_way): 8762 Only define four-argument overload when __cpp_lib_concepts is defined. 8763 87642020-01-01 John David Anglin <danglin@gcc.gnu.org> 8765 8766 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 8767 87682020-01-01 Jakub Jelinek <jakub@redhat.com> 8769 8770 Update copyright years. 8771 8772Copyright (C) 2020 Free Software Foundation, Inc. 8773 8774Copying and distribution of this file, with or without modification, 8775are permitted in any medium without royalty provided the copyright 8776notice and this notice are preserved. 8777