12021-04-08 Release Manager 2 3 * GCC 10.3.0 released. 4 52021-04-01 Jonathan Wakely <jwakely@redhat.com> 6 7 Backported from master: 8 2021-02-14 Jonathan Wakely <jwakely@redhat.com> 9 10 PR libstdc++/99096 11 * testsuite/util/testsuite_fs.h: Always include <unistd.h>. 12 132021-04-01 Jonathan Wakely <jwakely@redhat.com> 14 15 Backported from master: 16 2020-12-17 Jonathan Wakely <jwakely@redhat.com> 17 18 * config.h.in: Regenerate. 19 * config/os/djgpp/error_constants.h: Test POSIX errno macros 20 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. 21 * config/os/mingw32-w64/error_constants.h: Likewise. 22 * config/os/mingw32/error_constants.h: Likewise. 23 * configure: Regenerate. 24 252021-03-29 Jonathan Wakely <jwakely@redhat.com> 26 27 Backported from master: 28 2020-11-30 Jonathan Wakely <jwakely@redhat.com> 29 30 * testsuite/20_util/specialized_algorithms/pstl/*: Add 31 dg-timeout-factor. 32 * testsuite/25_algorithms/pstl/*: Likewise. 33 * testsuite/26_numerics/pstl/*: Likewise. 34 * testsuite/28_regex/*: Likewise. 35 362021-03-29 Jonathan Wakely <jwakely@redhat.com> 37 38 Backported from master: 39 2020-11-26 Jonathan Wakely <jwakely@redhat.com> 40 41 * testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc: 42 Add dg-timeout-factor directive. 43 * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: 44 Likewise. 45 * testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc: 46 Likewise. 47 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc: 48 Likewise. 49 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc: 50 Likewise. 51 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc: 52 Likewise. 53 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc: 54 Likewise. 55 * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc: 56 Likewise. 57 * testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise. 58 * testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc: 59 Likewise. 60 * testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc: 61 Likewise. 62 * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise. 63 642021-03-29 Jonathan Wakely <jwakely@redhat.com> 65 66 Backported from master: 67 2020-08-11 Jonathan Wakely <jwakely@redhat.com> 68 69 * include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using 70 #ifdef instead of #if. 71 (stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before 72 using __gthread_yield. 73 742021-03-29 Jonathan Wakely <jwakely@redhat.com> 75 76 Backported from master: 77 2020-06-19 Jonathan Wakely <jwakely@redhat.com> 78 79 PR libstdc++/95765 80 * include/bits/stl_algobase.h (__size_to_integer(float)) 81 (__size_to_integer(double), __size_to_integer(long double)) 82 (__size_to_integer(__float128)): Cast return type explicitly. 83 842021-03-29 Jonathan Wakely <jwakely@redhat.com> 85 86 Backported from master: 87 2020-11-25 Jonathan Wakely <jwakely@redhat.com> 88 89 * testsuite/17_intro/names.cc: Do not test 'v' on AIX. 90 912021-03-29 Jonathan Wakely <jwakely@redhat.com> 92 93 Backported from master: 94 2020-07-30 Jonathan Wakely <jwakely@redhat.com> 95 96 * include/bits/basic_string.h (size_type, difference_type): 97 Use allocator_traits to obtain the allocator's size_type and 98 difference_type. 99 1002021-03-29 Jonathan Wakely <jwakely@redhat.com> 101 102 Backported from master: 103 2020-09-01 Jonathan Wakely <jwakely@redhat.com> 104 105 * include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)): 106 New helper function for finding GCD of two positive intmax_t 107 values. 108 (duration::__divide): New helper alias for dividing one period 109 by another. 110 (duration::__is_harmonic): Use __divide not ratio_divide. 111 (duration(const duration<R2, P2>&)): Require the duration rep 112 types to be convertible. 113 * testsuite/20_util/duration/cons/dr2094.cc: New test. 114 * testsuite/20_util/duration/requirements/reduced_period.cc: 115 Fix definition of unused member functions in test type. 116 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: 117 Adjust expected errors. 118 1192021-03-29 Jonathan Wakely <jwakely@redhat.com> 120 121 Backported from master: 122 2020-08-27 Jonathan Wakely <jwakely@redhat.com> 123 124 * include/std/chrono (__duration_common_type): Ensure the 125 reduced ratio is used. Remove unused partial specialization 126 using __failure_type. 127 (common_type): Pass reduced ratios to __duration_common_type. 128 Add partial specializations for simple cases involving a single 129 duration or time_point type. 130 (duration::period): Use reduced ratio. 131 (duration::operator+(), duration::operator-()): Return duration 132 type using the reduced ratio. 133 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: 134 Adjust expected errors. 135 * testsuite/20_util/duration/requirements/reduced_period.cc: New test. 136 1372021-03-29 Jonathan Wakely <jwakely@redhat.com> 138 139 Backported from master: 140 2020-09-03 Jonathan Wakely <jwakely@redhat.com> 141 142 PR libstdc++/96592 143 * include/std/tuple (_TupleConstraints<true, T...>): Use 144 alternative is_constructible instead of std::is_constructible. 145 * testsuite/20_util/tuple/cons/96592.cc: New test. 146 1472021-03-29 Jonathan Wakely <jwakely@redhat.com> 148 149 Backported from master: 150 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 151 152 * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to 153 definition of aggregates in C++20. 154 * testsuite/20_util/optional/requirements.cc: Adjust for 155 defaulted comparisons in C++20. 156 1572021-03-29 Jonathan Wakely <jwakely@redhat.com> 158 159 Backported from master: 160 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 161 162 * testsuite/20_util/tuple/78939.cc: Suppress warnings about 163 deprecation of volatile-qualified structured bindings in C++20. 164 * testsuite/20_util/variable_templates_for_traits.cc: Likewise 165 for deprecation of is_pod in C++20 166 1672021-03-29 Jonathan Wakely <jwakely@redhat.com> 168 169 Backported from master: 170 2020-06-09 Jonathan Wakely <jwakely@redhat.com> 171 172 * include/std/optional (bad_optional_access): Define default 173 constructor and destructor as defaulted. 174 * testsuite/20_util/optional/bad_access.cc: New test. 175 1762021-03-29 Jonathan Wakely <jwakely@redhat.com> 177 178 Backported from master: 179 2020-06-04 Jonathan Wakely <jwakely@redhat.com> 180 181 * include/bits/ranges_algobase.h (__copy_n_fn): Only call 182 ranges::copy for positive values. 183 * include/bits/stl_algo.h (copy_n): Convert Size argument to an 184 integral type and only call __copy_n for positive values. 185 * testsuite/util/testsuite_iterators.h 186 (random_access_iterator_wrapper::operator+=): Fix range check for 187 negative values. 188 (output_container, input_container, forward_container) 189 (bidirectional_container, random_access_container): New alias 190 templates. 191 * testsuite/25_algorithms/copy_n/5.cc: New test. 192 1932021-03-29 Jonathan Wakely <jwakely@redhat.com> 194 195 Backported from master: 196 2020-06-16 Jonathan Wakely <jwakely@redhat.com> 197 198 * include/std/atomic (atomic): Add static assertions. 199 * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test. 200 2012021-03-29 Jonathan Wakely <jwakely@redhat.com> 202 203 Backported from master: 204 2020-06-09 Jonathan Wakely <jwakely@redhat.com> 205 206 * include/bits/stl_iterator.h (move_iterator::operator=): Define. 207 * testsuite/24_iterators/move_iterator/dr3265.cc: New test. 208 2092021-03-29 Paul Keir <paul.keir@uws.ac.uk> 210 211 Backported from master: 212 2020-06-15 Paul Keir <paul.keir@uws.ac.uk> 213 214 * include/bits/char_traits.h (char_traits::move): constexpr move with 215 overlap was using copy_backward incorrectly. 216 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: 217 New test. 218 2192021-03-29 Jonathan Wakely <jwakely@redhat.com> 220 221 Backported from master: 222 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 223 224 * testsuite/20_util/time_point_cast/rounding.cc: Remove 225 duplicate dg-do directive and add c++17 effective target. 226 2272021-03-29 Jonathan Wakely <jwakely@redhat.com> 228 229 Backported from master: 230 2020-08-11 Jonathan Wakely <jwakely@redhat.com> 231 232 * testsuite/30_threads/thread/cons/84535.cc: Use a custom 233 namespace. 234 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise. 235 2362021-03-29 Jonathan Wakely <jwakely@redhat.com> 237 238 Backported from master: 239 2020-11-26 Jonathan Wakely <jwakely@redhat.com> 240 241 * testsuite/lib/libstdc++.exp (libstdc++_init): Only set 242 tool_timeout if it hasn't been set by the user already. 243 2442021-03-29 Moritz Sichert <sichert@in.tum.de> 245 246 Backported from master: 247 2021-03-23 Moritz Sichert <sichert@in.tum.de> 248 249 * include/std/ranges (reverse_view::begin, reverse_view::end): 250 Qualify make_reverse_iterator calls to avoid ADL. 251 * testsuite/std/ranges/adaptors/reverse.cc: Test that 252 views::reverse works when make_reverse_iterator is defined 253 in an associated namespace. 254 2552021-03-29 Jonathan Wakely <jwakely@redhat.com> 256 257 Backported from master: 258 2021-03-22 Jonathan Wakely <jwakely@redhat.com> 259 260 * include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])): 261 Add missing 'noexcept' as per LWG 2280. 262 (rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list<T>)) 263 (rend(initializer_list<T>)): Add 'noexcept' as per LWG 3537. 264 * testsuite/24_iterators/range_access/range_access.cc: Check for 265 expected noexcept specifiers. Check result types of generic 266 std::begin and std::end overloads. 267 * testsuite/24_iterators/range_access/range_access_cpp14.cc: 268 Check for expected noexcept specifiers. 269 * testsuite/24_iterators/range_access/range_access_cpp17.cc: 270 Likewise. 271 2722021-03-29 Jonathan Wakely <jwakely@redhat.com> 273 274 Backported from master: 275 2021-03-11 Jonathan Wakely <jwakely@redhat.com> 276 277 PR libstdc++/99537 278 * include/std/stop_token (_Stop_state_t::_M_release_ownership): 279 Use acq_rel memory ordering. 280 2812021-03-29 Jonathan Wakely <jwakely@redhat.com> 282 283 Backported from master: 284 2021-03-11 Jonathan Wakely <jwakely@redhat.com> 285 286 PR libstdc++/99533 287 * src/c++17/fs_dir.cc (recursive_directory_iterator): Use new 288 helper function to check for permission denied errors. 289 * src/filesystem/dir.cc (recursive_directory_iterator): 290 Likewise. 291 * src/filesystem/dir-common.h (is_permission_denied_error): New 292 helper function. 293 2942021-03-29 Jonathan Wakely <jwakely@redhat.com> 295 296 Backported from master: 297 2021-03-11 Jonathan Wakely <jwakely@redhat.com> 298 299 PR libstdc++/99536 300 * include/bits/random.h (normal_distribution): Use 301 default-initializer for _M_saved and _M_saved_available. 302 3032021-03-29 Jonathan Wakely <jwakely@redhat.com> 304 305 Backported from master: 306 2021-03-10 Jonathan Wakely <jwakely@redhat.com> 307 308 * include/bits/range_cmp.h (__eq_builtin_ptr_cmp): Remove. 309 (ranges::equal_to, ranges::not_equal_to): Do not constrain 310 with __eq_builtin_ptr_cmp. 311 (ranges::less, ranges::greater, ranges::less_equal) 312 (ranges::greater_equal): Do not constrain with 313 __less_builtin_ptr_cmp. 314 * libsupc++/compare (compare_three_way): Do not constrain with 315 __3way_builtin_ptr_cmp. 316 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to... 317 * testsuite/18_support/comparisons/object/lwg3530.cc: ...here. 318 * testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test. 319 3202021-03-29 Jonathan Wakely <jwakely@redhat.com> 321 322 Backported from master: 323 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 324 325 * doc/xml/manual/status_cxx2014.xml: Document implementation 326 specific properties of std::experimental::filesystem::rename. 327 * doc/xml/manual/status_cxx2017.xml: Document implementation 328 specific properties of std::filesystem::rename. 329 * doc/html/*: Regenerate. 330 * src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour 331 for directories on Windows. 332 * src/filesystem/ops-common.h (__gnu_posix::rename): Use 333 MoveFileExW on Windows. 334 * testsuite/27_io/filesystem/operations/rename.cc: New test. 335 * testsuite/experimental/filesystem/operations/rename.cc: New test. 336 3372021-03-29 Jonathan Wakely <jwakely@redhat.com> 338 339 Backported from master: 340 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 341 342 * testsuite/util/testsuite_fs.h (nonexistent_path): Add 343 random number to the path. 344 3452021-03-29 Jonathan Wakely <jwakely@redhat.com> 346 347 Backported from master: 348 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 349 350 * include/experimental/internet (address_v6::to_string): Include 351 scope ID in string. 352 (address_v6::loopback): Fix to be constexpr in C++14. 353 * testsuite/experimental/net/internet/address/v6/members.cc: 354 Test to_string() results. 355 3562021-03-29 Jonathan Wakely <jwakely@redhat.com> 357 358 Backported from master: 359 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 360 361 * include/experimental/internet (address_v6::any): Avoid using 362 memcpy in constexpr function. 363 (address_v6::loopback): Likewise. 364 (make_address_v6): Fix missing return statements on error paths. 365 * include/experimental/io_context: Avoid -Wdangling-else 366 warning. 367 * testsuite/experimental/net/internet/address/v4/members.cc: 368 Remove unused variables. 369 * testsuite/experimental/net/internet/address/v6/members.cc: 370 New test. 371 3722021-03-29 Jonathan Wakely <jwakely@redhat.com> 373 374 Backported from master: 375 2020-10-29 Jonathan Wakely <jwakely@redhat.com> 376 377 * testsuite/25_algorithms/all_of/constexpr.cc: Check result of 378 the algorithm. 379 * testsuite/25_algorithms/any_of/constexpr.cc: Likewise. 380 * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise. 381 * testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise. 382 * testsuite/25_algorithms/count/constexpr.cc: Likewise. 383 * testsuite/25_algorithms/equal/constexpr.cc: Likewise. 384 * testsuite/25_algorithms/equal_range/constexpr.cc: Likewise. 385 * testsuite/25_algorithms/fill/constexpr.cc: Likewise. 386 * testsuite/25_algorithms/find_end/constexpr.cc: Likewise. 387 * testsuite/25_algorithms/find_if/constexpr.cc: Likewise. 388 * testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise. 389 * testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise. 390 * testsuite/25_algorithms/is_sorted_until/constexpr.cc: 391 Likewise. 392 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: 393 Likewise. 394 * testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise. 395 * testsuite/25_algorithms/merge/constexpr.cc: Likewise. 396 * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise. 397 * testsuite/25_algorithms/none_of/constexpr.cc: Likewise. 398 * testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise. 399 * testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise. 400 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise. 401 * testsuite/25_algorithms/remove_if/constexpr.cc: Likewise. 402 * testsuite/25_algorithms/replace_if/constexpr.cc: Likewise. 403 * testsuite/25_algorithms/reverse/constexpr.cc: Likewise. 404 * testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise. 405 * testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise. 406 * testsuite/25_algorithms/search/constexpr.cc: Likewise. 407 * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise. 408 * testsuite/25_algorithms/set_intersection/constexpr.cc: 409 Likewise. 410 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: 411 Likewise. 412 * testsuite/25_algorithms/set_union/constexpr.cc: Likewise. 413 * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise. 414 * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise. 415 4162021-03-29 Jonathan Wakely <jwakely@redhat.com> 417 418 Backported from master: 419 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 420 421 PR libstdc++/99077 422 * src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)): 423 Change int parameter to error_code, to match std::ios_failure. 424 (__throw_ios_failure(const char*, int)): Construct error_code 425 from int parameter. 426 4272021-03-29 Jonathan Wakely <jwakely@redhat.com> 428 429 Backported from master: 430 2021-02-11 Jonathan Wakely <jwakely@redhat.com> 431 432 PR libstdc++/99058 433 * doc/xml/manual/status_cxx2011.xml: Document when support 434 became stable. 435 * doc/xml/manual/status_cxx2014.xml: Likewise. 436 * doc/xml/manual/status_cxx2017.xml: Likewise. 437 * doc/html/manual/status.html: Regenerate. 438 4392021-03-29 Jonathan Wakely <jwakely@redhat.com> 440 441 Backported from master: 442 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 443 444 PR libstdc++/88881 445 * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround. 446 4472021-03-29 Jonathan Wakely <jwakely@redhat.com> 448 449 Backported from master: 450 2021-02-10 Jonathan Wakely <jwakely@redhat.com> 451 452 PR libstdc++/88881 453 * src/c++17/fs_ops.cc (fs::status): Re-enable workaround. 454 4552021-03-29 Jonathan Wakely <jwakely@redhat.com> 456 457 Backported from master: 458 2021-02-10 Jonathan Wakely <jwakely@redhat.com> 459 460 * src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent) 461 (fs::remove): Use std::system_category() for error codes from 462 GetLastError(). 463 * src/filesystem/ops.cc (fs::create_hard_link, fs::remove): 464 Likewise. 465 4662021-03-29 Jonathan Wakely <jwakely@redhat.com> 467 468 Backported from master: 469 2021-02-10 Jonathan Wakely <jwakely@redhat.com> 470 471 * testsuite/27_io/filesystem/operations/proximate.cc: Fix typo 472 in __MINGW32__ macro name. 473 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. 474 * testsuite/27_io/filesystem/path/generation/proximate.cc: 475 Likewise. 476 * testsuite/27_io/filesystem/path/generation/relative.cc: 477 Likewise. 478 * testsuite/util/testsuite_fs.h: Likewise. 479 4802021-03-29 Jonathan Wakely <jwakely@redhat.com> 481 482 Backported from master: 483 2021-02-03 Jonathan Wakely <jwakely@redhat.com> 484 485 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: 486 Add comparison with same category and different values. 487 * testsuite/19_diagnostics/error_code/operators/less.cc: 488 Likewise. Fix comparison involving different categories. 489 * testsuite/19_diagnostics/error_code/operators/three_way.cc: 490 Likewise. 491 * testsuite/19_diagnostics/error_condition/operators/less.cc: 492 Add comment. 493 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: 494 Likewise. 495 4962021-03-29 Jonathan Wakely <jwakely@redhat.com> 497 498 Backported from master: 499 2020-12-16 Jonathan Wakely <jwakely@redhat.com> 500 501 PR libstdc++/98319 502 * include/experimental/random: Only define contents for C++14 503 and later. 504 * include/experimental/source_location: Likewise. 505 * include/experimental/utility: Likewise. 506 * testsuite/experimental/feat-lib-fund.cc: Include all LFTS 507 headers that are present. Allow test to run for all modes. 508 5092021-03-29 Jonathan Wakely <jwakely@redhat.com> 510 511 Backported from master: 512 2020-12-16 Jonathan Wakely <jwakely@redhat.com> 513 514 PR libstdc++/93151 515 * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove. 516 * configure.ac: Regenerate. 517 * config/os/generic/error_constants.h: Test POSIX errno macros 518 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. 519 * testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc: 520 Likewise. 521 * testsuite/19_diagnostics/headers/system_error/93151.cc: New 522 test. 523 5242021-03-29 Jonathan Wakely <jwakely@redhat.com> 525 526 Backported from master: 527 2020-12-10 Jonathan Wakely <jwakely@redhat.com> 528 529 PR libstdc++/98226 530 * include/std/bit (__countl_one, __countr_one): Remove redundant 531 branches. 532 5332021-03-29 Jonathan Wakely <jwakely@redhat.com> 534 535 Backported from master: 536 2020-11-09 Jonathan Wakely <jwakely@redhat.com> 537 538 * include/std/bit (__popcount): Remove redundant check for zero. 539 5402021-03-29 Jonathan Wakely <jwakely@redhat.com> 541 542 Backported from master: 543 2020-10-30 Jonathan Wakely <jwakely@redhat.com> 544 545 * include/std/ranges (enable_borrowed_view<take_view<T>>) 546 (enable_borrowed_view<drop_view<T>>) 547 (enable_borrowed_view<drop_while_view<T>>) 548 (enable_borrowed_view<reverse_view<T>>) 549 (enable_borrowed_view<common_view<T>>) 550 (enable_borrowed_view<elements_view<T>>): Add partial 551 specializations as per P2017R1. 552 * testsuite/std/ranges/adaptors/conditionally_borrowed.cc: 553 New test. 554 5552021-03-29 Jonathan Wakely <jwakely@redhat.com> 556 557 Backported from master: 558 2020-10-29 Jonathan Wakely <jwakely@redhat.com> 559 560 * include/std/ranges (subrange::subrange(R&&)): Use 561 direct-initialization instead of list-initialization, so a 562 potential narrowing conversion from ranges::size(r) to the 563 stored size isn't ill-formed. 564 5652021-03-29 Jonathan Wakely <jwakely@redhat.com> 566 567 Backported from master: 568 2020-10-08 Jonathan Wakely <jwakely@redhat.com> 569 570 PR libstdc++/82584 571 * include/bits/random.tcc 572 (discrete_distribution::param_type::_M_initialize) 573 (piecewise_constant_distribution::param_type::_M_initialize) 574 (piecewise_linear_distribution::param_type::_M_initialize): 575 Add assertions for positive sums.. 576 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error 577 line. 578 5792021-03-29 Jonathan Wakely <jwakely@redhat.com> 580 581 Backported from master: 582 2020-10-08 Jonathan Wakely <jwakely@redhat.com> 583 584 * include/bits/random.h (__detail::_Mod): Revert last change. 585 (__detail::__mod): Do not use _Mod for a==0 case. 586 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: 587 Check other cases with a==0. Also check runtime results. 588 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error 589 line. 590 5912021-03-29 Jonathan Wakely <jwakely@redhat.com> 592 593 Backported from master: 594 2020-10-07 Jonathan Wakely <jwakely@redhat.com> 595 596 * include/bits/random.h (__detail::_Mod): Avoid divide by zero. 597 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: 598 New test. 599 6002021-03-29 Jonathan Wakely <jwakely@redhat.com> 601 602 Backported from master: 603 2020-09-21 Jonathan Wakely <jwakely@redhat.com> 604 605 * include/std/ranges (drop_view::begin()): Adjust constraints 606 to match the correct condition for O(1) ranges::next (LWG 3482). 607 * testsuite/std/ranges/adaptors/drop.cc: Check that iterator is 608 cached for non-sized_range. 609 6102021-03-29 Jonathan Wakely <jwakely@redhat.com> 611 612 Backported from master: 613 2020-09-21 Jonathan Wakely <jwakely@redhat.com> 614 615 * include/std/ranges (transform_view, elements_view): Relax 616 constraints on operator- for iterators, as per LWG 3483. 617 * testsuite/std/ranges/adaptors/elements.cc: Check that we 618 can take the difference of two iterators from a non-random 619 access range. 620 * testsuite/std/ranges/adaptors/transform.cc: Likewise. 621 6222021-03-29 Jonathan Wakely <jwakely@redhat.com> 623 624 Backported from master: 625 2020-10-28 Jonathan Wakely <jwakely@redhat.com> 626 627 PR libstdc++/95592 628 * include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR) 629 (_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION): 630 Use elaborated-type-specifier and qualified-id to avoid 631 ambiguities with QNX system headers. 632 * testsuite/26_numerics/valarray/95592.cc: New test. 633 6342021-03-29 Jonathan Wakely <jwakely@redhat.com> 635 636 Backported from master: 637 2020-10-27 Jonathan Wakely <jwakely@redhat.com> 638 639 * include/bits/locale_conv.h (__str_codecvt_out_all): 640 Add cast to compare operands of the same signedness. 641 * include/bits/locale_facets_nonio.tcc 642 (time_get::_M_extract_wday_or_month): Likewise. 643 * include/bits/sstream.tcc (basic_stringbuf::overflow): 644 Likewise. 645 * include/tr1/legendre_function.tcc (__sph_legendre): Use 646 unsigned for loop variable. 647 6482021-03-29 Jonathan Wakely <jwakely@redhat.com> 649 650 Backported from master: 651 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 652 653 * include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all): 654 Add casts to compare types of the same signedness. 655 6562021-03-29 Jonathan Wakely <jwakely@redhat.com> 657 658 Backported from master: 659 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 660 661 * include/bits/ranges_algobase.h (__equal_fn): Remove unused 662 typedef. 663 6642021-03-29 Jonathan Wakely <jwakely@redhat.com> 665 666 Backported from master: 667 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 668 669 * include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&)) 670 (operator=(auto_ptr&&)): Add diagnostic pragmas to suppress 671 warnings for uses of std::auto_ptr. 672 * include/experimental/type_traits (is_literal_type_v): 673 Likewise, for use of std::is_literal_type. 674 * include/std/condition_variable (condition_variable_any::_Unlock): 675 Likewise, for use of std::uncaught_exception. 676 6772021-03-29 Jonathan Wakely <jwakely@redhat.com> 678 679 Backported from master: 680 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 681 682 * include/bits/fs_path.h (path::_List::type()): Avoid narrowing 683 conversion. 684 6852021-03-29 Jonathan Wakely <jwakely@redhat.com> 686 687 Backported from master: 688 2020-09-07 Jonathan Wakely <jwakely@redhat.com> 689 690 * include/std/ranges (__box): Simplify constraints as per LWG 3477. 691 6922021-03-29 Jonathan Wakely <jwakely@redhat.com> 693 694 Backported from master: 695 2020-08-24 Jonathan Wakely <jwakely@redhat.com> 696 697 * include/std/ranges (ranges::iota_view::size()): Perform all 698 calculations in the right unsigned types. 699 * testsuite/std/ranges/iota/size.cc: New test. 700 7012021-03-29 Jonathan Wakely <jwakely@redhat.com> 702 703 Backported from master: 704 2020-08-11 Jonathan Wakely <jwakely@redhat.com> 705 706 * include/experimental/executor (system_context::_M_run()): 707 Fix predicate. 708 (system_context::join()): Do not join unless joinable. 709 * testsuite/experimental/net/system_context/1.cc: New test. 710 7112021-03-29 Jonathan Wakely <jwakely@redhat.com> 712 713 Backported from master: 714 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 715 716 * include/bits/stl_iterator.h (inserter): Do not deduce 717 iterator type (LWG 561). 718 * testsuite/24_iterators/insert_iterator/dr561.cc: New test. 719 7202021-03-29 Jonathan Wakely <jwakely@redhat.com> 721 722 Backported from master: 723 2020-10-27 Jonathan Wakely <jwakely@redhat.com> 724 725 * include/bits/fs_path.h (path::_List::begin, path::_List::end): 726 Add noexcept to match definitions in src/c++17/fs_path.cc. 727 7282021-03-29 Jonathan Wakely <jwakely@redhat.com> 729 730 Backported from master: 731 2020-10-27 Jonathan Wakely <jwakely@redhat.com> 732 733 * src/c++17/fs_dir.cc (fs::directory_iterator::operator*): 734 Add noexcept. Do not throw on precondition violation. 735 7362021-03-19 Jakub Jelinek <jakub@redhat.com> 737 738 Backported from master: 739 2021-02-23 Jakub Jelinek <jakub@redhat.com> 740 741 PR libstdc++/99181 742 * testsuite/21_strings/char_traits/requirements/char/99181.cc: New 743 test. 744 7452021-03-19 Jakub Jelinek <jakub@redhat.com> 746 747 Backported from master: 748 2021-02-23 Jakub Jelinek <jakub@redhat.com> 749 750 PR libstdc++/99181 751 * include/bits/char_traits.h (char_traits<char>::compare): For 752 constexpr evaluation don't call 753 __gnu_cxx::char_traits<char_type>::compare but do the comparison loop 754 directly. 755 7562021-02-09 Jonathan Wakely <jwakely@redhat.com> 757 758 Backported from master: 759 2021-02-09 Jonathan Wakely <jwakely@redhat.com> 760 761 PR libstdc++/99021 762 * include/std/coroutine (coroutine_handle<P>::from_address): Add 763 noexcept. 764 7652021-01-13 Jonathan Wakely <jwakely@redhat.com> 766 767 PR libstdc++/98605 768 * include/std/mutex (call_once): Use NOLINT to suppress clang 769 analyzer warnings. 770 7712021-01-11 Jonathan Wakely <jwakely@redhat.com> 772 773 Backported from master: 774 2020-12-02 Jonathan Wakely <jwakely@redhat.com> 775 776 * python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the 777 name of the type and pass it to the iterator. 778 (StdPathPrinter): Likewise. 779 * testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test. 780 7812021-01-11 Jonathan Wakely <jwakely@redhat.com> 782 783 Backported from master: 784 2020-12-16 Jonathan Wakely <jwakely@redhat.com> 785 786 PR libstdc++/96083 787 * include/ext/throw_allocator.h: Use __has_builtin to check for 788 __builtin_sprintf support, and use std::sprintf if necessary. 789 7902021-01-11 Jonathan Wakely <jwakely@redhat.com> 791 792 Backported from master: 793 2020-12-02 Jonathan Wakely <jwakely@redhat.com> 794 795 PR libstdc++/65480 796 PR libstdc++/68735 797 * python/libstdcxx/v6/printers.py (function_pointer_to_name): 798 New helper function to get the name of a function from its 799 address. 800 (StdExpAnyPrinter.__init__): Use it. 801 8022021-01-11 Jonathan Wakely <jwakely@redhat.com> 803 804 Backported from master: 805 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 806 807 * testsuite/experimental/filesystem/filesystem_error/cons.cc: 808 Remove -std=gnu++17 option. 809 8102021-01-08 Iain Sandoe <iain@sandoe.co.uk> 811 812 Backported from master: 813 2020-07-17 Iain Sandoe <iain@sandoe.co.uk> 814 815 * include/std/coroutine: Mark the methods of the 816 trivial awaitables as constexpr. 817 8182021-01-03 Iain Sandoe <iain@sandoe.co.uk> 819 Jakub Jelinek <jakub@redhat.com> 820 821 PR target/97865 822 * configure: Regenerate. 823 8242020-12-03 Jonathan Wakely <jwakely@redhat.com> 825 826 Backported from master: 827 2020-12-03 Jonathan Wakely <jwakely@redhat.com> 828 829 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: 830 Update. 831 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: 832 Update. 833 8342020-12-01 Patrick Palka <ppalka@redhat.com> 835 836 Backported from master: 837 2020-10-12 Patrick Palka <ppalka@redhat.com> 838 839 PR libstdc++/95322 840 * include/std/ranges (take_view::_CI): Define this alias 841 template as per LWG 3449 and remove ... 842 (take_view::_Sentinel::_CI): ... this type alias. 843 (take_view::_Sentinel::operator==): Adjust use of _CI 844 accordingly. Define a second overload that accepts an iterator 845 of the opposite constness as per LWG 3449. 846 (take_while_view::_Sentinel::operator==): Likewise. 847 * testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449. 848 8492020-11-26 Jonathan Wakely <jwakely@redhat.com> 850 851 Backported from master: 852 2020-11-26 Jonathan Wakely <jwakely@redhat.com> 853 854 PR libstdc++/98001 855 * testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid 856 FILE* to constructor. 857 8582020-11-25 Jonathan Wakely <jwakely@redhat.com> 859 860 Backported from master: 861 2020-11-25 Jonathan Wakely <jwakely@redhat.com> 862 863 PR libstdc++/97935 864 * include/bits/iterator_concepts.h (__detail::__iter_without_category): 865 New helper concept. 866 (__iterator_traits::__cat): Use __detail::__iter_without_category. 867 * testsuite/24_iterators/associated_types/iterator.traits.cc: New test. 868 8692020-11-25 Jonathan Wakely <jwakely@redhat.com> 870 871 Backported from master: 872 2020-06-04 Jonathan Wakely <jwakely@redhat.com> 873 874 * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref) 875 (__detail::__cat, __detail::__diff): Move to class scope in the 876 relevant __iterator_traits specializations. 877 (__iterator_traits<>): Use nested class templates instead of ones from 878 namespace __detail. 879 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to 880 class scope in iterator_traits<common_iterator<I, S>>. 881 (iterator_traits<common_iterator<I, S>>): Use nested class template 882 instead of __detail::__common_iter_ptr. 883 8842020-11-24 Jonathan Wakely <jwakely@redhat.com> 885 886 Backported from master: 887 2020-10-02 Jonathan Wakely <jwakely@redhat.com> 888 889 * testsuite/29_atomics/atomic_float/value_init.cc: Use float 890 instead of double so that __atomic_load_8 isn't needed. 891 8922020-11-20 Jonathan Wakely <jwakely@redhat.com> 893 894 Backported from master: 895 2020-11-20 Jonathan Wakely <jwakely@redhat.com> 896 897 PR libstdc++/92546 898 * include/std/regex (pmr::smatch, pmr::wsmatch): Declare using 899 underlying __normal_iterator type, not nested typedef 900 basic_string::const_iterator. 901 9022020-11-20 Jonathan Wakely <jwakely@redhat.com> 903 904 PR libstdc++/97876 905 * include/std/stop_token (_Stop_state_t): Define default 906 constructor as user-provided not defaulted. 907 9082020-11-20 Jonathan Wakely <jwakely@redhat.com> 909 910 Backported from master: 911 2020-11-19 Jonathan Wakely <jwakely@redhat.com> 912 913 PR libstdc++/95989 914 * config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID): 915 Define new macro to get reliable thread ID. 916 * include/std/stop_token (_Stop_state_t::_M_request_stop): 917 Use new macro if it's defined. 918 (_Stop_state_t::_M_remove_callback): Likewise. 919 * include/std/thread (this_thread::get_id): Likewise. 920 * testsuite/30_threads/jthread/95989.cc: New test. 921 * testsuite/30_threads/this_thread/95989.cc: New test. 922 9232020-11-18 Patrick Palka <ppalka@redhat.com> 924 925 Backported from master: 926 2020-11-18 Patrick Palka <ppalka@redhat.com> 927 928 * include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify 929 local variable inner. 930 (join_view::_Iterator::operator->): Use _Inner_iter instead of 931 _Outer_iter in the function signature as per LWG 3500. 932 * testsuite/std/ranges/adaptors/join.cc (test08): Test it. 933 9342020-11-18 Jonathan Wakely <jwakely@redhat.com> 935 936 Backported from master: 937 2020-10-06 Jonathan Wakely <jwakely@redhat.com> 938 939 * include/std/ranges (join_view): Remove deduction guide. 940 (views::join): Add explicit template argument list to prevent 941 deducing the wrong type. 942 * testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474 943 here, from ... 944 * testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed. 945 9462020-11-18 Jonathan Wakely <jwakely@redhat.com> 947 948 Backported from master: 949 2020-08-24 Jonathan Wakely <jwakely@redhat.com> 950 951 * include/std/ranges (join_view): Add deduction guide (LWG 3474). 952 * testsuite/std/ranges/adaptors/join_lwg3474.cc: New test. 953 9542020-11-18 Jonathan Wakely <jwakely@redhat.com> 955 956 Backported from master: 957 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 958 959 * include/std/version (__cpp_lib_array_constexpr) 960 (__cpp_lib_constexpr_char_traits): Only define C++17 value when 961 compiling C++17. 962 9632020-11-18 Jonathan Wakely <jwakely@redhat.com> 964 965 Backported from master: 966 2020-06-15 Jonathan Wakely <jwakely@redhat.com> 967 968 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): 969 Update value for C++20. 970 * include/std/version (__cpp_lib_constexpr_char_traits): Likewise. 971 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc: 972 Update expected value. 973 9742020-11-18 Jonathan Wakely <jwakely@redhat.com> 975 976 Backported from master: 977 2020-11-17 Jonathan Wakely <jwakely@redhat.com> 978 979 PR libstdc++/97869 980 * include/precompiled/stdc++.h: Include <coroutine>. 981 * include/std/version (__cpp_lib_span): Check __cpp_lib_concepts 982 before defining. 983 9842020-11-17 Patrick Palka <ppalka@redhat.com> 985 986 Backported from master: 987 2020-11-17 Patrick Palka <ppalka@redhat.com> 988 989 PR libstdc++/97828 990 * include/bits/ranges_algo.h (__search_n_fn::operator()): Check 991 random_access_iterator before using the backtracking 992 implementation. When the backwards scan fails prematurely, 993 reset __remainder appropriately. 994 * testsuite/25_algorithms/search_n/97828.cc: New test. 995 9962020-11-16 Jonathan Wakely <jwakely@redhat.com> 997 998 Backported from master: 999 2020-11-13 Jonathan Wakely <jwakely@redhat.com> 1000 1001 PR libstdc++/93456 1002 * src/c++11/futex.cc (relative_timespec): Remove redundant check 1003 negative values. 1004 * testsuite/30_threads/future/members/93456.cc: New. 1005 10062020-11-16 Jonathan Wakely <jwakely@redhat.com> 1007 1008 Backported from master: 1009 2020-11-16 Jonathan Wakely <jwakely@redhat.com> 1010 1011 * src/c++11/futex.cc (relative_timespec): New function to 1012 create relative time from two absolute times. 1013 (__atomic_futex_unsigned_base::_M_futex_wait_until): Use 1014 relative_timespec. 1015 10162020-11-16 Jonathan Wakely <jwakely@redhat.com> 1017 1018 Backported from master: 1019 2020-11-12 Jonathan Wakely <jwakely@redhat.com> 1020 1021 * include/std/future (future::wait_for): Do not wait for 1022 durations less than or equal to zero. 1023 * testsuite/30_threads/future/members/poll.cc: New test. 1024 10252020-11-13 Jonathan Wakely <jwakely@redhat.com> 1026 1027 Backported from master: 1028 2020-11-13 Jonathan Wakely <jwakely@redhat.com> 1029 1030 PR libstdc++/97798 1031 * include/ext/numeric_traits.h (__glibcxx_signed) 1032 (__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove 1033 macros. 1034 (__is_integer_nonstrict::__width): Define new constant. 1035 (__numeric_traits_integer): Define constants in terms of each 1036 other and __is_integer_nonstrict::__width, rather than the 1037 removed macros. 1038 (_GLIBCXX_INT_N_TRAITS): Macro to define explicit 1039 specializations for non-standard integer types. 1040 10412020-11-13 Jonathan Wakely <jwakely@redhat.com> 1042 1043 PR libstdc++/96042 1044 * testsuite/std/ranges/iota/96042.cc: Only assert that the 1045 difference type is wider than long long if __int128 is 1046 supported. 1047 10482020-11-12 Jonathan Wakely <jwakely@redhat.com> 1049 1050 Backported from master: 1051 2020-08-20 Jonathan Wakely <jwakely@redhat.com> 1052 1053 * include/bits/iterator_concepts.h [__STRICT_ANSI__] 1054 (incrementable_traits<__int128>): Define specialization. 1055 (incrementable_traits<unsigned __int128>): Likewise. 1056 * testsuite/std/ranges/iota/96042.cc: Test iota_view with 1057 __int128. 1058 10592020-11-12 Jonathan Wakely <jwakely@redhat.com> 1060 1061 Backported from master: 1062 2020-08-19 Jonathan Wakely <jwakely@redhat.com> 1063 Patrick Palka <ppalka@redhat.com> 1064 1065 PR libstdc++/96042 1066 * include/bits/range_access.h (__detail::__to_unsigned_like): 1067 Do not use make_unsigned_t<T> in the return type, as it can 1068 result in an error before the integral<T> constraint is checked. 1069 [__STRICT_ANSI__]: Add overloads for 128-bit integer types. 1070 (__detail::__make_unsigned_like_t): Define as the return type 1071 of __to_unsigned_like. 1072 * testsuite/std/ranges/subrange/96042.cc: New test. 1073 10742020-11-12 Jonathan Wakely <jwakely@redhat.com> 1075 1076 Backported from master: 1077 2020-08-19 Jonathan Wakely <jwakely@redhat.com> 1078 1079 PR libstdc++/96042 1080 * include/ext/numeric_traits.h (__is_integer_nonstrict): New 1081 trait which is true for 128-bit integers even in strict modes. 1082 (__numeric_traits_integer, __numeric_traits): Use 1083 __is_integer_nonstrict instead of __is_integer. 1084 * include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__] 1085 (numeric_limits<__int128>, (numeric_limits<unsigned __int128>): 1086 Define. 1087 * testsuite/std/ranges/iota/96042.cc: New test. 1088 10892020-11-11 Paul Scharnofske <asynts@gmail.com> 1090 1091 Backported from master: 1092 2020-11-11 Paul Scharnofske <asynts@gmail.com> 1093 1094 * include/std/thread (jthread::operator=(jthread&&)): Transfer 1095 any existing state to a temporary that will request a stop and 1096 then join. 1097 * testsuite/30_threads/jthread/jthread.cc: Test move assignment. 1098 10992020-11-05 Jonathan Wakely <jwakely@redhat.com> 1100 1101 Backported from master: 1102 2020-11-05 Jonathan Wakely <jwakely@redhat.com> 1103 1104 PR libstdc++/96269 1105 * include/std/optional (operator==, operator!=, operator<) 1106 (operator>, operator<=, operator>=): Fix types used in 1107 SFINAE constraints. 1108 * testsuite/20_util/optional/relops/96269.cc: New test. 1109 11102020-11-05 Jonathan Wakely <jwakely@redhat.com> 1111 1112 Backported from master: 1113 2020-11-05 Jonathan Wakely <jwakely@redhat.com> 1114 1115 PR libstdc++/97731 1116 * src/filesystem/dir.cc (recursive_directory_iterator): Call the 1117 right overload of _Dir::advance. 1118 * testsuite/experimental/filesystem/iterators/97731.cc: New test. 1119 11202020-11-05 Jonathan Wakely <jwakely@redhat.com> 1121 1122 Backported from master: 1123 2020-10-10 Jonathan Wakely <jwakely@redhat.com> 1124 1125 PR libstdc++/97362 1126 * doc/html/manual/source_code_style.html: Regenerate. 1127 * doc/xml/manual/appendix_contributing.xml: Add __deref to 1128 BADNAMES. 1129 * include/debug/functions.h (_Irreflexive_checker::__deref): 1130 Rename to __ref. 1131 * testsuite/17_intro/badnames.cc: Check __deref. 1132 11332020-11-04 Jonathan Wakely <jwakely@redhat.com> 1134 1135 Backported from master: 1136 2020-11-04 Jonathan Wakely <jwakely@redhat.com> 1137 1138 PR libstdc++/92285 1139 * doc/xml/manual/evolution.xml: Document change to base class. 1140 * doc/html/manual/api.html: Regenerate. 1141 11422020-11-04 Jonathan Wakely <jwakely@redhat.com> 1143 1144 * doc/xml/manual/evolution.xml: Document new C++20 headers. 1145 * doc/html/*: Regenerate. 1146 11472020-11-04 Jonathan Wakely <jwakely@redhat.com> 1148 1149 Backported from master: 1150 2020-06-01 Jonathan Wakely <jwakely@redhat.com> 1151 1152 * doc/xml/manual/evolution.xml: Document deprecation of 1153 __is_nullptr_t and removal of std::allocator members. 1154 * doc/html/manual/api.html: Regenerate. 1155 11562020-11-04 Jonathan Wakely <jwakely@redhat.com> 1157 1158 Backported from master: 1159 2020-06-01 Jonathan Wakely <jwakely@redhat.com> 1160 1161 * doc/xml/manual/containers.xml: Replace <xref> with <link>. 1162 * doc/xml/manual/evolution.xml: Likewise. 1163 * doc/html/manual/api.html: Regenerate. 1164 * doc/html/manual/containers.html: Regenerate. 1165 11662020-10-29 Patrick Palka <ppalka@redhat.com> 1167 1168 Backported from master: 1169 2020-10-29 Patrick Palka <ppalka@redhat.com> 1170 1171 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: 1172 (test03): Fix initializing the vector vy with the array y of size 4. 1173 11742020-10-28 Patrick Palka <ppalka@redhat.com> 1175 1176 Backported from master: 1177 2020-10-23 Patrick Palka <ppalka@redhat.com> 1178 1179 * include/std/ranges (single_view::single_view): Mark the 1180 in place constructor explicit as per LWG 3428. 1181 (take_view): Remove the constraint on the deduction guide's 1182 template parameter as per LWG 3447. 1183 11842020-10-21 Patrick Palka <ppalka@redhat.com> 1185 1186 Backported from master: 1187 2020-09-22 Patrick Palka <ppalka@redhat.com> 1188 1189 * include/std/span (span::front): Remove static_assert. 1190 (span::back): Likewise. 1191 (span::operator[]): Likewise. 1192 * testsuite/23_containers/span/back_neg.cc: Rewrite to verify 1193 that we check the preconditions of back() only when it's called. 1194 * testsuite/23_containers/span/front_neg.cc: Likewise for 1195 front(). 1196 * testsuite/23_containers/span/index_op_neg.cc: Likewise for 1197 operator[]. 1198 11992020-10-21 Patrick Palka <ppalka@redhat.com> 1200 1201 Backported from master: 1202 2020-10-12 Patrick Palka <ppalka@redhat.com> 1203 1204 * include/std/ranges (take_while_view::begin): Constrain the 1205 const overload further as per LWG 3450. 1206 (take_while_view::end): Likewise. 1207 * testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG 1208 3450. 1209 12102020-10-21 Patrick Palka <ppalka@redhat.com> 1211 1212 Backported from master: 1213 2020-09-22 Patrick Palka <ppalka@redhat.com> 1214 1215 * include/bits/stl_algo.h (__sample): Exit early when the 1216 input range is empty. 1217 * testsuite/25_algorithms/sample/3.cc: New test. 1218 12192020-10-21 Patrick Palka <ppalka@redhat.com> 1220 1221 Backported from master: 1222 2020-09-22 Patrick Palka <ppalka@redhat.com> 1223 1224 * include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20. 1225 (search): Likewise for the overload that takes a searcher. 1226 * testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr 1227 std::for_each_n. 1228 * testsuite/25_algorithms/search/constexpr.cc: Test constexpr 1229 std::search overload that takes a searcher. 1230 12312020-10-21 Patrick Palka <ppalka@redhat.com> 1232 1233 Backported from master: 1234 2020-08-27 Patrick Palka <ppalka@redhat.com> 1235 1236 PR libstdc++/95322 1237 * include/std/ranges (transform_view::sentinel::__distance_from): 1238 Give this a deduced return type. 1239 (transform_view::sentinel::operator-): Adjust the return type so 1240 that it's based on the constness of the iterator rather than 1241 that of the sentinel. 1242 * testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488. 1243 12442020-10-21 Patrick Palka <ppalka@redhat.com> 1245 1246 Backported from master: 1247 2020-08-27 Patrick Palka <ppalka@redhat.com> 1248 1249 * include/std/ranges (elements_view::begin): Adjust constraints. 1250 (elements_view::end): Likewise. 1251 (elements_view::_Sentinel::operator==): Templatize to take both 1252 _Iterator<true> and _Iterator<false>. 1253 (elements_view::_Sentinel::operator-): Likewise. 1254 * testsuite/std/ranges/adaptors/elements.cc: Add testcase for 1255 the example from P1994R1. 1256 * testsuite/std/ranges/adaptors/lwg3406.cc: New test. 1257 12582020-10-21 Patrick Palka <ppalka@redhat.com> 1259 1260 Backported from master: 1261 2020-08-27 Patrick Palka <ppalka@redhat.com> 1262 1263 * include/std/ranges (elements_view::end): Replace these two 1264 overloads with four new overloads. 1265 (elements_view::_Iterator::operator==): Remove. 1266 (elements_view::_Iterator::operator-): Likewise. 1267 (elements_view::_Sentinel): Define. 1268 12692020-10-20 Jonathan Wakely <jwakely@redhat.com> 1270 1271 Backported from master: 1272 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 1273 1274 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): 1275 Use gdb.Type.strip_typedefs(). 1276 * testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in 1277 the emulated old type. 1278 12792020-10-20 Jonathan Wakely <jwakely@redhat.com> 1280 1281 Backported from master: 1282 2020-10-14 Jonathan Wakely <jwakely@redhat.com> 1283 1284 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] 1285 (basic_string(const _CharT*, const _Alloc&)): Constrain to 1286 require an allocator-like type to fix CTAD ambiguity (LWG 3706). 1287 Define inline. 1288 * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI] 1289 (basic_string(const _CharT*, const _Alloc&)): Remove non-inline 1290 definition. 1291 * testsuite/21_strings/basic_string/cons/char/deduction.cc: 1292 Remove dg-skip-if. 1293 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: 1294 Likewise. 1295 12962020-10-20 Jonathan Wakely <jwakely@redhat.com> 1297 1298 Backported from master: 1299 2020-10-14 Jonathan Wakely <jwakely@redhat.com> 1300 1301 * testsuite/21_strings/basic_string/allocator/char/minimal.cc: 1302 Do not require cxx11-abi effective target. 1303 * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc: 1304 Likewise. 1305 * testsuite/27_io/basic_fstream/cons/base.cc: Likewise. 1306 13072020-10-20 Jonathan Wakely <jwakely@redhat.com> 1308 1309 Backported from master: 1310 2020-10-08 Jonathan Wakely <jwakely@redhat.com> 1311 1312 * include/bits/ios_base.h (ios_base::failure): Add constructors 1313 takeing error_code argument. Add code() member function. 1314 * testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to 1315 run for the old ABI but do not check for derivation from 1316 std::system_error. 1317 * testsuite/27_io/ios_base/failure/error_code.cc: New test. 1318 13192020-10-20 Nuno Lopes <nuno.lopes@ist.utl.pt> 1320 1321 Backported from master: 1322 2020-10-13 Nuno Lopes <nuno.lopes@ist.utl.pt> 1323 1324 * include/bits/stl_algo.h (any_of): Fix incorrect description 1325 in comment. 1326 13272020-10-20 Jonathan Wakely <jwakely@redhat.com> 1328 1329 Backported from master: 1330 2020-10-12 Jonathan Wakely <jwakely@redhat.com> 1331 1332 * include/bits/stl_algobase.h (copy, move, copy_backward) 1333 (move_backward): Fix documentation for returned iterator. 1334 13352020-10-20 Jonathan Wakely <jwakely@redhat.com> 1336 1337 Backported from master: 1338 2020-09-24 Jonathan Wakely <jwakely@redhat.com> 1339 1340 * doc/xml/manual/configure.xml: Correct name of option. 1341 * doc/html/*: Regenerate. 1342 13432020-10-19 Jonathan Wakely <jwakely@redhat.com> 1344 1345 Backported from master: 1346 2020-09-21 Jonathan Wakely <jwakely@redhat.com> 1347 1348 PR libstdc++/97132 1349 * include/std/memory (assume_aligned): Do not use 1350 __builtin_assume_aligned during constant evaluation. 1351 * testsuite/20_util/assume_aligned/1.cc: Improve test. 1352 * testsuite/20_util/assume_aligned/97132.cc: New test. 1353 13542020-10-15 Jonathan Wakely <jwakely@redhat.com> 1355 1356 Backported from master: 1357 2020-10-15 Jonathan Wakely <jwakely@redhat.com> 1358 1359 * include/std/concepts: Fix typos in copyright notice. 1360 * include/std/ranges: Likewise. 1361 13622020-10-15 Jonathan Wakely <jwakely@redhat.com> 1363 1364 * doc/xml/manual/status_cxx2020.xml: Remove red background for 1365 completed feature. 1366 * doc/html/manual/status.html: Regenerate. 1367 13682020-10-13 Patrick Palka <ppalka@redhat.com> 1369 1370 Backported from master: 1371 2020-10-08 Patrick Palka <ppalka@redhat.com> 1372 1373 PR libstdc++/95788 1374 * include/bits/ranges_uninitialized.h: 1375 (__construct_at_fn::operator()): Rewrite in terms of 1376 std::construct_at. Declare it conditionally noexcept. Qualify 1377 calls to declval in its requires-clause. 1378 * testsuite/20_util/specialized_algorithms/construct_at/95788.cc: 1379 New test. 1380 13812020-10-08 Jonathan Wakely <jwakely@redhat.com> 1382 1383 Backported from master: 1384 2020-10-07 Jonathan Wakely <jwakely@redhat.com> 1385 1386 * include/bits/random.h (seed_seq(initializer_list<T>)): Rename 1387 parameter to use reserved name. 1388 * include/bits/ranges_algo.h (shift_left, shift_right): Rename 1389 template parameters to use reserved name. 1390 * testsuite/17_intro/names.cc: Check "il". Do not check "d" and 1391 "y" in C++20 mode. 1392 13932020-10-06 Patrick Palka <ppalka@redhat.com> 1394 1395 Backported from master: 1396 2020-10-02 Patrick Palka <ppalka@redhat.com> 1397 1398 * include/bits/stl_iterator.h (reverse_iterator::iter_move): 1399 Define for C++20 as per P0896. 1400 (reverse_iterator::iter_swap): Likewise. 1401 (move_iterator::operator*): Apply P0896 changes for C++20. 1402 (move_iterator::operator[]): Likewise. 1403 * testsuite/24_iterators/reverse_iterator/cust.cc: New test. 1404 14052020-09-22 Jonathan Wakely <jwakely@redhat.com> 1406 1407 Backported from master: 1408 2020-09-22 Jonathan Wakely <jwakely@redhat.com> 1409 1410 PR libstdc++/97167 1411 * src/c++17/fs_path.cc (path::_Parser::root_path()): Check 1412 for empty string before inspecting the first character. 1413 * testsuite/27_io/filesystem/path/append/source.cc: Append 1414 empty string_view to path. 1415 14162020-09-22 Jonathan Wakely <jwakely@redhat.com> 1417 1418 Backported from master: 1419 2020-09-22 Jonathan Wakely <jwakely@redhat.com> 1420 1421 PR libstdc++/96803 1422 * include/std/tuple 1423 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)): 1424 Use correct value category in __use_alloc call. 1425 * testsuite/20_util/tuple/cons/96803.cc: Check with constructors 1426 that require correct value category to be used. 1427 14282020-09-22 Jonathan Wakely <jwakely@redhat.com> 1429 1430 Backported from master: 1431 2020-08-26 Jonathan Wakely <jwakely@redhat.com> 1432 1433 PR libstdc++/96803 1434 * include/std/tuple 1435 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)): 1436 Replace parameter pack with a type parameter and a pack and pass 1437 the first type to __use_alloc. 1438 * testsuite/20_util/tuple/cons/96803.cc: New test. 1439 14402020-09-21 Jonathan Wakely <jwakely@redhat.com> 1441 1442 Backported from master: 1443 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 1444 1445 PR libstdc++/94681 1446 * src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead 1447 of calling ::lstat directly. 1448 * src/filesystem/ops.cc (read_symlink): Likewise. 1449 14502020-09-21 Jonathan Wakely <jwakely@redhat.com> 1451 1452 Backported from master: 1453 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 1454 1455 PR libstdc++/94681 1456 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on 1457 $enable_libstdcxx_filesystem_ts. 1458 * configure: Regenerate. 1459 14602020-09-21 Jonathan Wakely <jwakely@redhat.com> 1461 1462 Backported from master: 1463 2020-09-20 Jonathan Wakely <jwakely@redhat.com> 1464 1465 PR libstdc++/97101 1466 * include/std/functional (bind_front): Fix order of parameters 1467 in is_nothrow_constructible_v specialization. 1468 * testsuite/20_util/function_objects/bind_front/97101.cc: New test. 1469 14702020-09-21 Jonathan Wakely <jwakely@redhat.com> 1471 1472 Backported from master: 1473 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 1474 1475 PR libstdc++/94160 1476 * src/c++17/memory_resource.cc (munge_options): Round 1477 max_blocks_per_chunk to a multiple of four. 1478 (__pool_resource::_M_alloc_pools()): Simplify slightly. 1479 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: 1480 Check that valid pointers are returned when small values are 1481 used for max_blocks_per_chunk. 1482 14832020-09-03 Jonathan Wakely <jwakely@redhat.com> 1484 1485 Backported from master: 1486 2020-07-07 Jonathan Wakely <jwakely@redhat.com> 1487 1488 * include/Makefile.am: Remove bits/int_limits.h. 1489 * include/Makefile.in: Regenerate. 1490 * include/bits/int_limits.h: Removed. 1491 * include/bits/parse_numbers.h (_Select_int_base): Replace 1492 __int_limits with __int_traits. 1493 * include/bits/range_access.h (_SSize::operator()): Likewise. 1494 * include/ext/numeric_traits.h (__numeric_traits_integer): Add 1495 static assertion. 1496 (__int_traits): New alias template. 1497 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) 1498 (__countr_zero, __countr_one, __popcount, __bit_ceil) 1499 (__bit_floor, __bit_width) Replace __int_limits with 1500 __int_traits. 1501 * include/std/charconv (__to_chars_8, __from_chars_binary) 1502 (__from_chars_alpha_to_num, from_chars): Likewise. 1503 * include/std/memory_resource (polymorphic_allocator::allocate) 1504 (polymorphic_allocator::allocate_object): Likewise. 1505 * include/std/string_view (basic_string_view::_S_compare): 1506 Likewise. 1507 * include/std/utility (cmp_equal, cmp_less, in_range): Likewise. 1508 15092020-09-02 Jonathan Wakely <jwakely@redhat.com> 1510 1511 Backported from master: 1512 2020-08-28 Jonathan Wakely <jwakely@redhat.com> 1513 1514 PR libstdc++/92978 1515 * include/std/numeric (__abs_integral): Replace with ... 1516 (__detail::__absu): New function template that returns an 1517 unsigned type, guaranteeing it can represent the most 1518 negative signed value. 1519 (__detail::__gcd, __detail::__lcm): Require arguments to 1520 be unsigned and therefore already non-negative. 1521 (gcd, lcm): Convert arguments to absolute value as unsigned 1522 type before calling __detail::__gcd or __detail::__lcm. 1523 * include/experimental/numeric (gcd, lcm): Likewise. 1524 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected 1525 errors. 1526 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. 1527 * testsuite/26_numerics/gcd/92978.cc: New test. 1528 * testsuite/26_numerics/lcm/92978.cc: New test. 1529 * testsuite/experimental/numeric/92978.cc: New test. 1530 15312020-09-02 Jonathan Wakely <jwakely@redhat.com> 1532 1533 Backported from master: 1534 2020-09-02 Jonathan Wakely <jwakely@redhat.com> 1535 1536 PR libstdc++/96851 1537 * include/bits/cpp_type_traits.h (__is_memcmp_ordered): 1538 New trait that says if memcmp can be used for ordering. 1539 (__is_memcmp_ordered_with): Likewise, for two types. 1540 * include/bits/ranges_algo.h (__lexicographical_compare_fn): 1541 Use new traits instead of __is_byte and __numeric_traits. 1542 * include/bits/stl_algobase.h (__lexicographical_compare_aux1) 1543 (__is_byte_iter): Likewise. 1544 * include/std/array (operator<=>): Likewise. Only use memcmp 1545 when std::is_constant_evaluated() is false. 1546 * testsuite/23_containers/array/comparison_operators/96851.cc: 1547 New test. 1548 * testsuite/23_containers/array/tuple_interface/get_neg.cc: 1549 Adjust dg-error line numbers. 1550 15512020-09-02 Jonathan Wakely <jwakely@redhat.com> 1552 1553 * include/bits/stl_iterator.h (counted_iterator::operator++(int)): 1554 Use __throw_exception_again macro. 1555 15562020-08-26 Jonathan Wakely <jwakely@redhat.com> 1557 1558 Backported from master: 1559 2020-08-26 Jonathan Wakely <jwakely@redhat.com> 1560 1561 PR libstdc++/71960 1562 * include/experimental/string_view (basic_string_view): 1563 Enable debug assertions. 1564 * include/std/string_view (basic_string_view): 1565 Likewise. 1566 15672020-08-26 Jonathan Wakely <jwakely@redhat.com> 1568 1569 Backported from master: 1570 2020-08-24 Jonathan Wakely <jwakely@redhat.com> 1571 1572 PR libstdc++/96766 1573 * include/std/variant (_Variant_storage): Replace implicit 1574 conversions from size_t to __index_type with explicit casts. 1575 15762020-08-21 Jonathan Wakely <jwakely@redhat.com> 1577 1578 Backported from master: 1579 2020-08-21 Jonathan Wakely <jwakely@redhat.com> 1580 1581 PR libstdc++/96718 1582 * testsuite/25_algorithms/pstl/feature_test-2.cc: Require 1583 tbb-backend effective target. 1584 * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise. 1585 * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise. 1586 * testsuite/25_algorithms/pstl/feature_test.cc: Likewise. 1587 15882020-08-19 Jonathan Wakely <jwakely@redhat.com> 1589 1590 Backported from master: 1591 2020-08-19 Jonathan Wakely <jwakely@redhat.com> 1592 1593 * include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST): New 1594 macro for "use 'foo' instead" message in deprecated warnings. 1595 * include/bits/ios_base.h (io_state, open_mode, seek_dir) 1596 (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST. 1597 * include/std/streambuf (stossc): Replace C++11 attribute 1598 with _GLIBCXX_DEPRECATED_SUGGEST. 1599 * include/std/type_traits (__is_nullptr_t): Use 1600 _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED. 1601 * testsuite/27_io/types/1.cc: Check for deprecated warnings. 1602 Also check for io_state, open_mode and seek_dir typedefs. 1603 16042020-08-11 Jonathan Wakely <jwakely@redhat.com> 1605 1606 PR libstdc++/89760 1607 * testsuite/experimental/net/execution_context/make_service.cc: 1608 Add dg-require-gthreads. 1609 * testsuite/experimental/net/executor/1.cc: Likewise. 1610 * testsuite/experimental/net/headers.cc: Likewise. 1611 * testsuite/experimental/net/internet/address/v4/comparisons.cc: 1612 Likewise. 1613 * testsuite/experimental/net/internet/address/v4/cons.cc: 1614 Likewise. 1615 * testsuite/experimental/net/internet/address/v4/creation.cc: 1616 Likewise. 1617 * testsuite/experimental/net/internet/address/v4/members.cc: 1618 Likewise. 1619 * testsuite/experimental/net/internet/resolver/base.cc: 1620 Likewise. 1621 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: 1622 Likewise. 1623 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: 1624 Likewise. 1625 * testsuite/experimental/net/socket/basic_socket.cc: Likewise. 1626 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise. 1627 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise. 1628 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. 1629 16302020-08-10 Jonathan Wakely <jwakely@redhat.com> 1631 1632 Backported from master: 1633 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 1634 1635 PR libstdc++/95749 1636 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS] 1637 (stat_type): Change to __stat64. 1638 (stat): Use _wstat64. 1639 16402020-08-07 Jonathan Wakely <jwakely@redhat.com> 1641 1642 Backported from master: 1643 2020-08-07 Jonathan Wakely <jwakely@redhat.com> 1644 1645 PR libstdc++/96303 1646 * include/debug/bitset (bitset::operator==): Call _M_base() on 1647 right operand. 1648 (bitset::operator!=): Likewise, but don't define it at all when 1649 default comparisons are supported by the compiler. 1650 * testsuite/23_containers/bitset/operations/96303.cc: New test. 1651 16522020-08-06 Jonathan Wakely <jwakely@redhat.com> 1653 1654 Backported from master: 1655 2020-08-06 Jonathan Wakely <jwakely@redhat.com> 1656 1657 PR libstdc++/96484 1658 * src/c++17/fs_ops.cc (fs::read_symlink): Return an error 1659 immediately for non-symlinks. 1660 * src/filesystem/ops.cc (fs::read_symlink): Likewise. 1661 16622020-07-23 Release Manager 1663 1664 * GCC 10.2.0 released. 1665 16662020-07-09 Jonathan Wakely <jwakely@redhat.com> 1667 1668 Backported from master: 1669 2020-06-08 Jonathan Wakely <jwakely@redhat.com> 1670 1671 * include/bits/unique_ptr.h (operator<<): Define for C++20. 1672 * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test. 1673 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error 1674 line number. 1675 * testsuite/20_util/default_delete/void_neg.cc: Likewise. 1676 16772020-07-09 Jonathan Wakely <jwakely@redhat.com> 1678 1679 Backported from master: 1680 2020-05-27 Jonathan Wakely <jwakely@redhat.com> 1681 1682 PR libstdc++/95322 1683 * include/std/ranges (transform_view::_Sentinel): Allow hidden 1684 friends to work with _Iterator<true> and _Iterator<false>. 1685 (join_view::_Sentinel): Likewise. 1686 * testsuite/std/ranges/adaptors/95322.cc: New test. 1687 16882020-07-09 Jonathan Wakely <jwakely@redhat.com> 1689 1690 Backported from master: 1691 2020-05-04 Jonathan Wakely <jwakely@redhat.com> 1692 1693 PR libstdc++/94936 1694 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools): 1695 Add comment about single-threaded behaviour. 1696 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist 1697 class member access out of loop. 1698 (synchronized_pool_resource::synchronized_pool_resource()) 1699 (synchronized_pool_resource::~synchronized_pool_resource()) 1700 (synchronized_pool_resource::release()): Check __gthread_active_p 1701 before creating and/or deleting the thread-specific data key. 1702 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust 1703 assertions. 1704 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast 1705 path for single-threaded case. 1706 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)): 1707 Likewise. Return if unable to find a pool that owns the allocation. 1708 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc: 1709 New test. 1710 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New 1711 test. 1712 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New 1713 test. 1714 17152020-07-09 Jonathan Wakely <jwakely@redhat.com> 1716 1717 Backported from master: 1718 2020-05-19 Jonathan Wakely <jwakely@redhat.com> 1719 1720 PR libstdc++/94087 1721 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be 1722 passed in. 1723 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand 1724 fallback. 1725 (random_device::_M_init): Use __x86_rdseed_rdrand when both 1726 instructions are available. 1727 * testsuite/26_numerics/random/random_device/94087.cc: New test. 1728 17292020-07-02 Ville Voutilainen <ville.voutilainen@gmail.com> 1730 1731 Backported from master: 1732 2020-07-02 Ville Voutilainen <ville.voutilainen@gmail.com> 1733 1734 PR libstdc++/91807 1735 * include/std/variant 1736 (_Copy_assign_base::operator=(const _Copy_assign_base&): 1737 Do the move-assignment from a temporary so that the temporary 1738 is constructed with an explicit index. 1739 * testsuite/20_util/variant/91807.cc: New. 1740 17412020-07-02 Jonathan Wakely <jwakely.gcc@gmail.com> 1742 1743 Backported from master: 1744 2020-07-02 Jonathan Wakely <jwakely.gcc@gmail.com> 1745 1746 PR libstdc++/91153 1747 PR target/93224 1748 * testsuite/29_atomics/atomic_float/1.cc: Use different values 1749 for tests. 1750 * testsuite/29_atomics/atomic_ref/float.cc: Likewise. 1751 17522020-07-01 Jonathan Wakely <jwakely@redhat.com> 1753 1754 Backported from master: 1755 2020-06-16 Jonathan Wakely <jwakely@redhat.com> 1756 1757 PR libstdc++/95282 1758 * include/bits/atomic_base.h (__atomic_impl::load): Add 1759 const-qualifier to parameter so that _Tp is deduced as the 1760 non-const type, and use _Val to get the unqualified type. 1761 (__atomic_impl::exchange): Use the _Val alias to remove 1762 volatile from the reinterpret_cast result type. 1763 * testsuite/29_atomics/atomic_float/95282.cc: New test. 1764 17652020-07-01 Jonathan Wakely <jwakely@redhat.com> 1766 1767 Backported from master: 1768 2020-07-01 Jonathan Wakely <jwakely@redhat.com> 1769 1770 PR libstdc++/94627 1771 * include/bits/regex.h (operator==, operator!=): Remove noexcept 1772 equality comparisons for match_results. 1773 * testsuite/28_regex/match_results/94627.cc: New test. 1774 17752020-06-29 Ville Voutilainen <ville.voutilainen@gmail.com> 1776 1777 Backported from master: 1778 2020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com> 1779 1780 PR libstdc++/95915 1781 * include/std/variant (_Uninitialized): 1782 Adjust the condition and the comment. 1783 * testsuite/20_util/variant/95915.cc: New. 1784 * testsuite/20_util/variant/compile.cc: Add new test. 1785 17862020-06-24 Jonathan Wakely <jwakely@redhat.com> 1787 1788 Backported from master: 1789 2020-06-24 Jonathan Wakely <jwakely@redhat.com> 1790 1791 * include/std/charconv (__from_chars_binary): Ignore leading zeros. 1792 * testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases, 1793 not just 10 and 16. 1794 * testsuite/20_util/from_chars/3.cc: New test. 1795 17962020-06-24 Jonathan Wakely <jwakely@redhat.com> 1797 1798 Backported from master: 1799 2020-06-24 Jonathan Wakely <jwakely@redhat.com> 1800 1801 * include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers. 1802 * include/std/charconv (__detail::__to_chars): Avoid 1803 -Wsign-compare warning. 1804 18052020-06-24 Jonathan Wakely <jwakely@redhat.com> 1806 1807 Backported from master: 1808 2020-06-24 Jonathan Wakely <jwakely@redhat.com> 1809 1810 PR libstdc++/95851 1811 * include/std/charconv (__to_chars_i): Check for zero-sized 1812 buffer unconditionally. 1813 * testsuite/20_util/to_chars/95851.cc: New test. 1814 18152020-06-22 Jason Merrill <jason@redhat.com> 1816 1817 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: 1818 Remove greedy_ops tests. 1819 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: 1820 Remove greedy_ops tests. 1821 18222020-06-11 Patrick Palka <ppalka@redhat.com> 1823 1824 PR libstdc++/95578 1825 * include/bits/ranges_algo.h (__lexicographical_compare_fn): 1826 Also check that the iterator and sentinel have the same type before 1827 applying the unwrapping optimization for __normal_iterator. 1828 Split the check into two, one for the first iterator/sentinel 1829 pair and another for second iterator/sentinel pair. Remove uses 1830 of __niter_base, and remove uses of std::move on a 1831 __normal_iterator. 1832 * include/bits/ranges_algobase.h (__equal_fn): Likewise. 1833 (__copy_or_move): Likewise. Perform similar adjustments for 1834 the reverse_iterator and move_iterator optimizations. Inline 1835 the checks into the if-constexprs, and use using-declarations to 1836 make them less visually noisy. Remove uses of __niter_wrap. 1837 (__copy_or_move_backward): Likewise. 1838 * testsuite/25_algorithms/copy/95578.cc: New test. 1839 * testsuite/25_algorithms/copy_backward/95578.cc: New test. 1840 * testsuite/25_algorithms/equal/95578.cc: New test. 1841 * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test. 1842 * testsuite/25_algorithms/move/95578.cc: New test. 1843 * testsuite/25_algorithms/move_backward/95578.cc: New test. 1844 18452020-05-28 Patrick Palka <ppalka@redhat.com> 1846 1847 PR libstdc++/95322 1848 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy): 1849 Remove and instead define it ... 1850 (common_iterator::_Proxy): ... here. 1851 (common_iterator::operator->): Use it. 1852 * testsuite/24_iterators/common_iterator/2.cc: New test. 1853 * testsuite/std/ranges/adaptors/95322.cc: New test. 1854 18552020-05-26 Alexandre Oliva <oliva@adacore.com> 1856 1857 PR libstdc++/77691 1858 * include/experimental/memory_resource 1859 (__resource_adaptor_imp::do_allocate): Handle max_align_t on 1860 x86-vxworks as on x86-solaris. 1861 (__resource_adaptor_imp::do_deallocate): Likewise. 1862 * testsuite/experimental/memory_resource/new_delete_resource.cc: 1863 Drop xfail. 1864 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris. 1865 (test03): Drop max-align test for char-aligned alloc. 1866 18672020-05-23 Jonathan Wakely <jwakely@redhat.com> 1868 1869 Backport from mainline 1870 2020-05-23 Jonathan Wakely <jwakely@redhat.com> 1871 1872 * include/bits/fs_path.h (__detail::_S_range_begin) 1873 (__detail::_S_range_end): Remove unintentional static specifiers. 1874 * include/experimental/bits/fs_path.h (__detail::_S_range_begin) 1875 (__detail::_S_range_end): Likewise. 1876 18772020-05-23 Jonathan Wakely <jwakely@redhat.com> 1878 1879 Backport from mainline 1880 2020-05-23 Jonathan Wakely <jwakely@redhat.com> 1881 1882 PR libstdc++/95289 1883 * include/debug/helper_functions.h (__get_distance): Only declare 1884 as a constexpr function for C++14 and up. 1885 * testsuite/25_algorithms/copy/debug/95289.cc: New test. 1886 18872020-05-21 Jonathan Wakely <jwakely@redhat.com> 1888 1889 Backport from mainline 1890 2020-05-21 Jonathan Wakely <jwakely@redhat.com> 1891 1892 * include/experimental/executor (use_future_t::use_future_t()): Fix 1893 incorrect noexcept-specifier. 1894 * include/experimental/internet (basic_resolver_results): Adjust 1895 whitespace. 1896 * include/experimental/socket (__basic_socket_impl::release): Add 1897 member function. 1898 (basic_socket(io_context&, const endpoint_type&)): Fix argument to 1899 target constructor. 1900 (basic_socket::release(), basic_socket::release(error_code&)): Add 1901 missing member functions. 1902 (basic_socket::is_open()): Add nodiscard attribute. 1903 (basic_socket::close(error_code&)): Pass argument to base function. 1904 (basic_socket_acceptor::release()) 1905 (basic_socket_acceptor::release(error_code&)): Add missing member 1906 functions. 1907 (basic_socket_acceptor::is_open()): Add nodiscard attribute. 1908 (basic_socket_streambuf::error()): Add noexcept. 1909 (basic_socket_iostream::error()): Likewise. 1910 * testsuite/experimental/net/socket/basic_socket.cc: New test. 1911 19122020-05-21 Jonathan Wakely <jwakely@redhat.com> 1913 1914 Backport from mainline 1915 2020-05-21 Jonathan Wakely <jwakely@redhat.com> 1916 1917 PR libstdc++/93983 1918 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator): 1919 Reorder constraints to avoid recursion when constructors use 1920 iterator_traits (LWG 3420). 1921 * testsuite/24_iterators/customization_points/lwg3420.cc: New test. 1922 19232020-05-12 Jonathan Wakely <jwakely@redhat.com> 1924 1925 Backport from mainline 1926 2020-05-04 Jonathan Wakely <jwakely@redhat.com> 1927 1928 PR libstdc++/94906 1929 * src/c++17/memory_resource.cc 1930 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift 1931 operands. 1932 1933 Backport from mainline 1934 2020-05-03 Jonathan Wakely <jwakely@redhat.com> 1935 1936 PR libstdc++/94933 1937 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types 1938 usable in constant expressions. 1939 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and 1940 non-scalars. 1941 19422020-05-07 Jonathan Wakely <jwakely@redhat.com> 1943 1944 Backport from mainline 1945 2020-05-01 Jonathan Wakely <jwakely@redhat.com> 1946 Patrick Palka <ppalka@redhat.com> 1947 1948 PR libstdc++/92894 1949 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove): 1950 Add trait to determine return type and an alias for it. 1951 (ranges::__cust_imove::_IMove::operator()): Use __result instead of 1952 deduced return type. 1953 * testsuite/24_iterators/customization_points/92894.cc: New test. 1954 * testsuite/24_iterators/indirect_callable/92894.cc: New test. 1955 19562020-05-07 Release Manager 1957 1958 * GCC 10.1.0 released. 1959 19602020-05-07 Eric Botcazou <ebotcazou@adacore.com> 1961 1962 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update. 1963 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise. 1964 19652020-05-06 H.J. Lu <hongjiu.lu@intel.com> 1966 1967 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 1968 19692020-05-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 1970 1971 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate. 1972 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: 1973 Likewise. 1974 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise. 1975 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt: 1976 Likewise. 1977 19782020-05-06 Jonathan Wakely <jwakely@redhat.com> 1979 1980 * doc/xml/manual/abi.xml (abi.versioning.history): Document library 1981 versions for GCC 9.[123] and 10.1 releases. 1982 * doc/html/*: Regenerate. 1983 19842020-05-06 Jakub Jelinek <jakub@redhat.com> 1985 1986 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. 1987 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. 1988 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update. 1989 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. 1990 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update. 1991 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. 1992 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. 1993 19942020-05-04 Jonathan Wakely <jwakely@redhat.com> 1995 1996 * doc/xml/faq.xml: Use working link for SGI STL FAQ. 1997 * doc/html/*: Regenerate. 1998 19992020-05-01 Jonathan Wakely <jwakely@redhat.com> 2000 2001 Backport from mainline 2002 2020-05-01 Jonathan Wakely <jwakely@redhat.com> 2003 2004 PR libstdc++/94901 2005 * include/std/type_traits (__is_complete_or_unbounded): Replace 2006 BADNAME _T with _Tp. 2007 * testsuite/17_intro/badnames.cc: New test. 2008 20092020-04-30 Jonathan Wakely <jwakely@redhat.com> 2010 2011 PR libstdc++/89510 2012 * include/bits/alloc_traits.h (allocator_traits::_S_construct) 2013 (allocator_traits::_S_destroy) 2014 (allocator_traits<allocator<T>>::construct): Use traits in 2015 noexcept-specifiers. 2016 * include/bits/allocator.h (allocator<void>::construct) 2017 (allocator<void>::destroy): Likewise. 2018 * include/ext/malloc_allocator.h (malloc_allocator::construct) 2019 (malloc_allocator::destroy): Likewise. 2020 * include/ext/new_allocator.h (new_allocator::construct) 2021 (new_allocator::destroy): Likewise. 2022 * testsuite/20_util/allocator/89510.cc: New test. 2023 * testsuite/ext/malloc_allocator/89510.cc: New test. 2024 * testsuite/ext/new_allocator/89510.cc: New test. 2025 20262020-04-29 Jonathan Wakely <jwakely@redhat.com> 2027 2028 PR libstdc++/94854 2029 * include/bits/basic_string.tcc: Update comment about explicit 2030 instantiations. 2031 20322020-04-28 Jonathan Wakely <jwakely@redhat.com> 2033 2034 PR libstdc++/91480 2035 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal): 2036 Remove non-standard macro. 2037 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define 2038 to indicate P1032R1 support. 2039 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise. 2040 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise. 2041 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise. 2042 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove. 2043 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view) 2044 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define. 2045 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check 2046 feature test macro. 2047 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise. 2048 * testsuite/21_strings/basic_string_view/operations/copy/char/ 2049 constexpr.cc: Likewise. 2050 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise. 2051 2052 PR libstdc++/94831 2053 * include/bits/alloc_traits.h (_S_construct): Restore placement 2054 new-expression for C++11/14/17 and call std::construct_at directly 2055 for C++20. 2056 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr 2057 function returning void. 2058 * testsuite/20_util/specialized_algorithms/ 2059 uninitialized_value_construct/94831.cc: New test. 2060 * testsuite/23_containers/vector/cons/94831.cc: New test. 2061 20622020-04-28 Patrick Palka <ppalka@redhat.com> 2063 2064 LWG 3433 subrange::advance(n) has UB when n < 0 2065 * include/std/ranges (subrange::prev): Fix typo. 2066 (subrange::advance): Handle a negative argument as per the proposed 2067 resolution of LWG 3433. 2068 * testsuite/std/ranges/subrange/lwg3433.cc: New test. 2069 20702020-04-28 Jonathan Wakely <jwakely@redhat.com> 2071 Iain Sandoe <iain@sandoe.co.uk> 2072 2073 PR c++/94759 2074 * include/std/coroutine: Implement handing for non- 2075 class coroutine return types. 2076 20772020-04-24 Jonathan Wakely <jwakely@redhat.com> 2078 2079 * include/experimental/executor (service_already_exists): Make default 2080 constructor public (LWG 3414). 2081 * testsuite/experimental/net/execution_context/make_service.cc: Check 2082 the service_already_exists can be default constructed. 2083 20842020-04-24 Kamlesh Kumar <kamleshbhalui@gmail.com> 2085 Jonathan Wakely <jwakely@redhat.com> 2086 2087 PR libstdc++/90415 2088 PR libstdc++/92156 2089 * include/std/any (any): Rename template parameters for consistency 2090 with the standard. 2091 (any::_Decay): Rename to _Decay_if_not_any. 2092 (any::any(T&&):: Remove is_constructible from constraints. Remove 2093 non-standard overload. 2094 (any::any(in_place_type_t<T>, Args&&...)) 2095 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...)) 2096 (any::emplace(Args&&...)) 2097 (any::emplace(initializer_list<U>, Args&&...)): 2098 Use decay_t instead of _Decay. 2099 * testsuite/20_util/any/cons/90415.cc: New test. 2100 * testsuite/20_util/any/cons/92156.cc: New Test. 2101 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives 2102 more robust. 2103 * testsuite/20_util/any/modifiers/92156.cc: New test. 2104 21052020-04-23 Jonathan Wakely <jwakely@redhat.com> 2106 2107 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table. 2108 * doc/html/*: Regenerate. 2109 2110 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert 2111 value for C++17 to 201803L because P0858R0 is supported for C++17. 2112 * include/std/version (__cpp_lib_array_constexpr): Likewise. 2113 * testsuite/23_containers/array/element_access/constexpr_c++17.cc: 2114 Check for value corresponding to P0031R0 features being tested. 2115 * testsuite/23_containers/array/requirements/constexpr_iter.cc: 2116 Check for value corresponding to P0858R0 features being tested. 2117 2118 * include/std/version (__cpp_lib_three_way_comparison): Define for 2119 freestanding builds. 2120 21212020-04-23 Thomas Rodgers <rodgert@appliantology.com> 2122 2123 * include/experimental/net/executor (system_context): Mark 2124 system_context::system_context() = delete. 2125 * testsuite/experimental/net/executor/1.cc: Add new 2126 test to check system_context is not default constructible. 2127 21282020-04-23 Iain Sandoe <iain@sandoe.co.uk> 2129 2130 * include/std/coroutine: Update the inline namespace to __n4861. 2131 Add the __cpp_lib_coroutine define, set to 201902L. 2132 * include/std/version: Add __cpp_lib_coroutine, set to 201902L. 2133 21342020-04-22 Jonathan Wakely <jwakely@redhat.com> 2135 2136 * include/std/execution (__cpp_lib_execution): Define to indicate 2137 support for P0024R2 and P1001R2. 2138 * include/std/version (__cpp_lib_execution): Define. 2139 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro 2140 defined by <algorithm>, move other tests to new tests ... 2141 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test. 2142 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test. 2143 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test. 2144 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test. 2145 2146 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define 2147 different values for C++17 and C++20, to indicate different feature 2148 sets. Update value for C++20 to indicate P1032R1 support. 2149 * include/std/version (__cpp_lib_array_constexpr): Likewise. 2150 * testsuite/23_containers/array/comparison_operators/constexpr.cc: 2151 Check feature test macro. 2152 * testsuite/23_containers/array/element_access/constexpr_c++17.cc: 2153 New test. 2154 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check 2155 feature test macro. 2156 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test 2157 in C++17 mode and check feature test macro. 2158 2159 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define 2160 here. 2161 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be 2162 defined by <utility>. 2163 2164 * include/std/functional (__cpp_lib_concepts): Update macro value to 2165 indicate P1964R2 support. 2166 * include/std/version (__cpp_lib_concepts): Likewise. 2167 * testsuite/std/concepts/1.cc: Adjust expected value. 2168 * testsuite/std/concepts/2.cc: Likewise. 2169 2170 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to 2171 __cpp_lib_constexpr_functional. 2172 * include/std/version (__cpp_lib_constexpr_invoke): Likewise. 2173 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust. 2174 2175 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to 2176 indicate P1006R1 support. 2177 (__cpp_lib_to_address): Define to indicate P0653R2 support. 2178 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate 2179 P1227R2 support. 2180 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate 2181 P0769R2 support. 2182 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate 2183 P0020R6 support. 2184 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate 2185 P1007R3 support. 2186 * include/std/memory_resource (__cpp_lib_polymorphic_allocator): 2187 Define to indicate P0339R6 support. 2188 * include/std/string_view (__cpp_lib_starts_ends_with): Define to 2189 indicate P0457R2 support. 2190 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define 2191 to indicate P0758R1 support. 2192 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support. 2193 (__cpp_lib_type_identity): Define to indicate P0887R1 support. 2194 * include/std/version (__cpp_lib_atomic_float) 2195 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref) 2196 (__cpp_lib_type_identity, __cpp_lib_assume_aligned) 2197 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator) 2198 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with) 2199 (__cpp_lib_to_address): Define. 2200 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. 2201 2202 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old 2203 macro. 2204 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion): 2205 Likewise. 2206 * include/std/version (__cpp_lib_map_insertion) 2207 (__cpp_lib_unordered_map_insertion): Remove. 2208 2209 * include/std/condition_variable (__cpp_lib_jthread): Remove 2210 redundant definition. 2211 * include/std/stop_token (__cpp_lib_jthread): Update macro value to 2212 indicate P1869R1 support. 2213 * include/std/version (__cpp_lib_jthread): Update value. 2214 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check 2215 for updated macro value. 2216 * testsuite/30_threads/condition_variable_any/stop_token/2.cc: 2217 Likewise. 2218 * testsuite/30_threads/jthread/1.cc: Likewise. 2219 * testsuite/30_threads/jthread/2.cc: Likewise. 2220 * testsuite/30_threads/stop_token/1.cc: Likewise. 2221 * testsuite/30_threads/stop_token/2.cc: Likewise. 2222 2223 * testsuite/21_strings/basic_string/erasure.cc: Check for 2224 __cpp_lib_erase_if macro. 2225 * testsuite/23_containers/deque/erasure.cc: Add header name to #error 2226 messages. 2227 * testsuite/23_containers/forward_list/erasure.cc: Likewise. 2228 * testsuite/23_containers/list/erasure.cc: Likewise. 2229 * testsuite/23_containers/map/erasure.cc: Likewise. 2230 * testsuite/23_containers/set/erasure.cc: Likewise. 2231 * testsuite/23_containers/unordered_map/erasure.cc: Likewise. 2232 * testsuite/23_containers/unordered_set/erasure.cc: Likewise. 2233 * testsuite/23_containers/vector/erasure.cc: Likewise. 2234 22352020-04-21 Jonathan Wakely <jwakely@redhat.com> 2236 2237 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way 2238 to define operator<=>. 2239 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test. 2240 2241 * doc/Makefile.am (xml_sources_manual): Add missing XML files. 2242 * doc/Makefile.in: Regenerate. 2243 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead 2244 of "this page". 2245 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections 2246 to the C++11 status table. 2247 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature 2248 proposals with table matching contents of the C++14 standard. 2249 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of 2250 the C++17 standard. 2251 * doc/html/*: Regenerate. 2252 2253 PR c++/94149 2254 * include/std/type_traits (__is_nt_constructible_impl): Add partial 2255 specializations for bounded arrays with non-empty initializers. 2256 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test. 2257 22582020-04-20 Thomas Rodgers <trodgers@redhat.com> 2259 2260 * testsuite/lib/libstdc++.exp: Add additional_flags= 2261 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when 2262 compiling with a newer Thread Building Blocks. 2263 22642020-04-20 Jonathan Wakely <jwakely@redhat.com> 2265 2266 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. 2267 2268 * testsuite/20_util/is_constructible/51185.cc: Make test class a 2269 non-aggregate so that the test verifies the same thing in all -std 2270 modes. 2271 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected 2272 results for some types when paren-init for aggregates is supported. 2273 2274 * include/std/version (__cpp_lib_three_way_comparison): Update value. 2275 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. 2276 (__detail::__synth3way): Add noexcept-specifier. 2277 2278 * include/bits/stl_map.h (map): Define operator<=> and remove 2279 operator< for C++20. 2280 * include/bits/stl_multimap.h (multimap): Likewise. 2281 * include/bits/stl_multiset.h (multiset): Likewise. 2282 * include/bits/stl_set.h (set): Likewise. 2283 * include/bits/stl_tree.h (_Rb_tree): Likewise. 2284 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant 2285 operator!= for C++20. 2286 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20. 2287 * include/debug/multimap.h (__gnu_debug::multimap): Likewise. 2288 * include/debug/multiset.h (__gnu_debug::multiset): Likewise. 2289 * include/debug/set.h (__gnu_debug::set): Likewise. 2290 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test. 2291 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test. 2292 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test. 2293 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test. 2294 22952020-04-20 Matthias Kretz <kretz@kde.org> 2296 2297 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose. 2298 22992020-04-19 Jonathan Wakely <jwakely@redhat.com> 2300 2301 * include/bits/stl_queue.h (queue): Define operator<=> for C++20. 2302 * include/bits/stl_stack.h (stack): Likewise. 2303 * testsuite/23_containers/queue/cmp_c++20.cc: New test. 2304 * testsuite/23_containers/stack/cmp_c++20.cc: New test. 2305 2306 * include/bits/unordered_map.h (unordered_map, unordered_multimap): 2307 Remove redundant operator!= for C++20. 2308 * include/bits/unordered_set.h (unordered_set, unordered_multiset): 2309 Likewise. 2310 * include/debug/unordered_map (unordered_map, unordered_multimap): 2311 Likewise. 2312 * include/debug/unordered_set (unordered_set, unordered_multiset): 2313 Likewise. 2314 2315 PR other/94629 2316 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix 2317 redundant assignment in constructor. 2318 23192020-04-18 Jonathan Wakely <jwakely@redhat.com> 2320 2321 * include/std/chrono (duration, time_point): Define operator<=> and 2322 remove redundant operator!= for C++20. 2323 * testsuite/20_util/duration/comparison_operators/three_way.cc: New 2324 test. 2325 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New 2326 test. 2327 2328 * testsuite/util/native_type/native_priority_queue.hpp: Use 2329 allocator_traits to rebind allocator. 2330 23312020-04-17 Jonathan Wakely <jwakely@redhat.com> 2332 2333 * include/bits/forward_list.h (forward_list): Define operator<=> and 2334 remove redundant comparison operators for C++20. 2335 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise. 2336 * include/bits/stl_deque.h (deque): Likewise. 2337 * include/bits/stl_iterator.h (__normal_iterator): Likewise. 2338 * include/bits/stl_list.h (list): Likewise. 2339 * include/bits/stl_vector.h (vector): Likewise. 2340 * include/debug/deque (__gnu_debug::deque): Likewise. 2341 * include/debug/forward_list (__gnu_debug::forward_list): Likewise. 2342 * include/debug/list (__gnu_debug::list): Likewise. 2343 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator): 2344 Likewise. 2345 * include/debug/vector (__gnu_debug::vector): Likewise. 2346 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define 2347 operator<=> for C++20. 2348 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test. 2349 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test. 2350 * testsuite/23_containers/list/cmp_c++20.cc: New test. 2351 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test. 2352 * testsuite/23_containers/vector/cmp_c++20.cc: New test. 2353 2354 * include/bits/basic_string.h (basic_string): Define operator<=> and 2355 remove redundant comparison operators for C++20. 2356 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits): 2357 Add comparison_category members. 2358 (__detail::__char_traits_cmp_cat): New helper to get comparison 2359 category from char traits class. 2360 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not 2361 define for C++20. 2362 (sub_match): Define operator<=> and remove redundant comparison 2363 operators for C++20. 2364 (match_results): Remove redundant operator!= for C++20. 2365 * include/std/string_view (basic_string_view): Define operator<=> and 2366 remove redundant comparison operators for C++20. 2367 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New 2368 test. 2369 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc: 2370 New test. 2371 * testsuite/21_strings/basic_string_view/operations/copy/char/ 2372 constexpr.cc: Initialize variable. 2373 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ 2374 constexpr.cc: Likewise. 2375 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add 2376 dg-do directive and remove comments showing incorrect signatures. 2377 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: 2378 Likewise. 2379 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc: 2380 New test. 2381 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc: 2382 New test. 2383 * testsuite/28_regex/sub_match/compare_c++20.cc: New test. 2384 23852020-04-16 Jonathan Wakely <jwakely@redhat.com> 2386 2387 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove 2388 name of unused parameter. 2389 23902020-04-15 Jonathan Wakely <jwakely@redhat.com> 2391 2392 * include/bits/fs_dir.h (file_status): Define operator== for C++20. 2393 (directory_entry): Define operator<=> and remove redundant comparison 2394 operators for C++20. 2395 * include/bits/fs_fwd.h (space_info): Define operator== for C++20. 2396 * include/bits/fs_path.h (path): Define operator<=> and remove 2397 redundant comparison operators for C++20. 2398 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment. 2399 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. 2400 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise. 2401 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise. 2402 2403 * include/bits/allocator.h (operator!=): Do not define for C++20. 2404 * include/bits/locale_classes.h (operator!=): Likewise. 2405 * include/bits/std_function.h (operator==(nullptr_t, const function&)) 2406 (operator!=(const function&, nullptr_t)) 2407 (operator!=(nullptr_t, const function&)): Likewise. 2408 * include/ext/bitmap_allocator.h (operator!=): Likewise. 2409 * include/ext/debug_allocator.h (operator!=): Likewise. 2410 * include/ext/extptr_allocator.h (operator!=): Likewise. 2411 * include/ext/malloc_allocator.h (operator!=): Likewise. 2412 * include/ext/mt_allocator.h (operator!=): Likewise. 2413 * include/ext/new_allocator.h (operator!=): Likewise. 2414 * include/ext/pool_allocator.h (operator!=): Likewise. 2415 * include/ext/throw_allocator.h (operator!=): Likewise. 2416 * include/std/bitset (bitset::operator!=): Likewise. 2417 * include/std/memory_resource (operator!=): Likewise. 2418 * include/std/scoped_allocator (operator!=): Likewise. 2419 2420 * include/std/typeindex (operator<=>): Define for C++20. 2421 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test. 2422 24232020-04-14 Jonathan Wakely <jwakely@redhat.com> 2424 2425 * libsupc++/compare (compare_three_way): Fix constraint so that 2426 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with. 2427 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: 2428 New test. 2429 2430 PR libstdc++/94562 2431 * include/bits/shared_ptr.h (operator<=>): Define for C++20. 2432 * include/bits/shared_ptr_base.h (operator<=>): Likewise. 2433 * include/bits/unique_ptr.h (operator<=>): Add inline specifier. 2434 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test. 2435 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect 2436 std::less<A*> to be used when comparing std::shared_ptr<A> objects in 2437 C++20. 2438 2439 PR libstdc++/94565 2440 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor. 2441 * testsuite/18_support/comparisons/categories/94565.cc: New test. 2442 24432020-04-13 Iain Sandoe <iain@sandoe.co.uk> 2444 2445 * include/std/coroutine: Update coroutines builtin define, 2446 per n4861. 2447 24482020-04-09 Jonathan Wakely <jwakely@redhat.com> 2449 2450 * libsupc++/compare (compare_three_way): Fix noexcept-specifier. 2451 (strong_order, weak_order, partial_order): Replace uses of <=> with 2452 compare_three_way function object (LWG 3324). 2453 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add 2454 equality operator so that X satisfies three_way_comparable. 2455 * testsuite/18_support/comparisons/algorithms/strong_order.cc: 2456 Likewise. 2457 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise. 2458 2459 * include/bits/unique_ptr.h (operator<=>): Define for C++20. 2460 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line. 2461 * testsuite/20_util/default_delete/void_neg.cc: Likewise. 2462 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test. 2463 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test. 2464 24652020-04-08 Jonathan Wakely <jwakely@redhat.com> 2466 2467 * include/bits/slice_array.h (operator==(const slice&, const slice&)): 2468 Define for C++20. 2469 * include/std/complex (operator==(const T&, const complex<T>&)) 2470 (operator!=(const complex<T>&, const complex<T>&)) 2471 (operator!=(const complex<T>&, const T&)) 2472 (operator!=(const T&, const complex<T>&)): Do not declare for C++20. 2473 * testsuite/26_numerics/slice/compare.cc: New test. 2474 2475 * include/std/charconv (to_chars_result, from_chars_result): Add 2476 defaulted equality comparisons for C++20. 2477 * testsuite/20_util/from_chars/compare.cc: New test. 2478 * testsuite/20_util/to_chars/compare.cc: New test. 2479 24802020-04-07 Jonathan Wakely <jwakely@redhat.com> 2481 2482 PR libstdc++/94520 2483 * include/std/charconv (__integer_to_chars_result_type) 2484 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to 2485 allow use in C++14. 2486 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace 2487 use of std::string_view with std::string. 2488 * testsuite/20_util/from_chars/2.cc: Likewise. 2489 * testsuite/20_util/to_chars/1.cc: Likewise. 2490 * testsuite/20_util/to_chars/2.cc: Likewise. 2491 24922020-04-06 Jonathan Wakely <jwakely@redhat.com> 2493 2494 PR libstdc++/94498 2495 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it 2496 usable in constant expressions for C++20. 2497 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add 2498 _GLIBCXX20_CONSTEXPR. 2499 (std::char_traits<char>, std::char_traits<wchar_t>) 2500 (std::char_traits<char8_t>): Make move, copy and assign usable in 2501 constant expressions for C++20. 2502 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move 2503 and copy usable in constant expressions for C++20. 2504 * include/std/string_view (basic_string_view::copy): Add 2505 _GLIBCXX20_CONSTEXPR. 2506 * testsuite/21_strings/basic_string_view/operations/copy/char/ 2507 constexpr.cc: New test. 2508 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ 2509 constexpr.cc: New test. 2510 25112020-04-05 Gerald Pfeifer <gerald@pfeifer.com> 2512 2513 * doc/xml/manual/appendix_contributing.xml: Refer to Git 2514 documentation instead of Subversion. Switch to https. 2515 * doc/html/manual/appendix_contributing.html: Regenerate. 2516 25172020-04-03 Jonathan Wakely <jwakely@redhat.com> 2518 2519 PR libstdc++/93960 2520 * include/bits/ptr_traits.h (__to_address): Add special case for debug 2521 iterators, to avoid dereferenceable check. 2522 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. 2523 * testsuite/20_util/to_address/debug.cc: New test. 2524 25252020-04-01 Andrea Corallo <andrea.corallo@arm.com> 2526 2527 * testsuite/experimental/net/execution_context/use_service.cc: 2528 Require pthread and gthreads. 2529 25302020-04-01 Gerald Pfeifer <gerald@pfeifer.com> 2531 2532 * doc/xml/manual/appendix_free.xml: Move "free books" list from 2533 fsf.org to gnu.org. 2534 * doc/html/manual/appendix_free.html: Regenerate. 2535 25362020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com> 2537 2538 Library-side tests for parenthesized aggregate init 2539 2540 PR c++/92878 2541 PR c++/92947 2542 2543 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New. 2544 * testsuite/20_util/any/assign/92878_92947.cc: Likewise. 2545 * testsuite/20_util/any/cons/92878_92947.cc: Likewise. 2546 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise. 2547 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise. 2548 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise. 2549 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise. 2550 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise. 2551 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc: 2552 Likewise. 2553 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise. 2554 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise. 2555 * testsuite/20_util/variant/92878_92947.cc: Likewise. 2556 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc: 2557 Likewise. 2558 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc: 2559 Likewise. 2560 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc: 2561 Likewise. 2562 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc: 2563 Likewise. 2564 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc: 2565 Likewise. 2566 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc: 2567 Likewise. 2568 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise. 2569 * testsuite/23_containers/queue/92878_92947.cc: Likewise. 2570 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc: 2571 Likewise. 2572 * testsuite/23_containers/stack/92878_92947.cc: Likewise. 2573 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc: 2574 Likewise. 2575 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc: 2576 Likewise. 2577 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc: 2578 Likewise. 2579 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc: 2580 Likewise. 2581 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc: 2582 Likewise. 2583 25842020-03-28 Jonathan Wakely <jwakely@redhat.com> 2585 2586 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account 2587 for changes due to parenthesized aggregate-initialization in C++20. 2588 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash 2589 with std::chrono::sys_time in C++20. 2590 2591 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause 2592 to constrain C++20 versions of comparison operators. Fix backwards 2593 logic of relational operators. 2594 (move_iterator): Use requires-clause to constrain comparison operators 2595 in C++20. Do not declare non-standard same-type overloads for C++20. 2596 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result 2597 of comparisons and check using greedy_ops type. 2598 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise. 2599 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant 2600 main function from compile-only test. 2601 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise. 2602 26032020-03-27 Jonathan Wakely <jwakely@redhat.com> 2604 2605 * include/bits/range_cmp.h (__cpp_lib_ranges): Define. 2606 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that 2607 C++20 concepts are required. 2608 * include/bits/stl_iterator_base_types.h: Likewise. 2609 * include/std/concepts: Likewise. 2610 * include/std/version: Likewise. 2611 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test 2612 macro. 2613 2614 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept) 2615 (reverse_iterator::iterator_category): Define for C++20. 2616 (reverse_iterator): Define comparison operators correctly for C++20. 2617 (__normal_iterator): Add constraints to comparison operators for C++20. 2618 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new 2619 overload for input iterators. 2620 (move_iterator): Add constraints to comparison operators for C++20. 2621 Define operator<=> for C++20. 2622 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test. 2623 * testsuite/24_iterators/move_iterator/move_only.cc: New test. 2624 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test. 2625 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test. 2626 2627 * include/bits/iterator_concepts.h (__detail::__decay_copy) 2628 (__detail::__member_begin, __detail::__adl_begin): Move here from 2629 <bits/range_access.h>. 2630 (__detail::__ranges_begin, __detail::__range_iter_t): Define. 2631 * bits/range_access.h (__cust_access::__decay_copy) 2632 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to 2633 <bits/iterator_concepts.h>. 2634 (ranges::iterator_t): Use __detail::__range_iter_t. 2635 * include/bits/stl_iterator.h (back_insert_iterator): Simplify 2636 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members. 2637 (front_insert_iterator): Likewise. 2638 (insert_iterator): Implement changes from P0896R4 for C++20. 2639 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test. 2640 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test. 2641 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust 2642 for inclusion in synopsis_c++20.cc which expects different signatures 2643 for some function templates. 2644 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test. 2645 2646 * include/std/type_traits (__is_array_convertible): Move definition 2647 to immediately after is_convertible. 2648 26492020-03-26 Jonathan Wakely <jwakely@redhat.com> 2650 2651 * include/std/chrono (chrono::days, chrono::weeks, chrono::years) 2652 (chrono::months, chrono::sys_days, chrono::local_t) 2653 (chrono::local_time, chrono::local_seconds, chrono::local_days): 2654 Define for C++20. 2655 (chrono::time_point): Add missing static assert. 2656 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test. 2657 * testsuite/std/time/clock/file/overview.cc: New test. 2658 * testsuite/std/time/clock/file/members.cc: New test. 2659 * testsuite/std/time/syn_c++20.cc: New test. 2660 26612020-03-25 Mike Crowe <mac@mcrowe.com> 2662 2663 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New 2664 test. 2665 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New 2666 test. 2667 26682020-03-25 Jonathan Wakely <jwakely@redhat.com> 2669 2670 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ... 2671 * include/std/chrono (filesystem::__file_clock): Here. 2672 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys): 2673 Define public member functions for C++20. 2674 (is_clock, is_clock_v): Define traits for C++20. 2675 * include/std/condition_variable (condition_variable::wait_until): Add 2676 check for valid clock. 2677 * include/std/future (_State_baseV2::wait_until): Likewise. 2678 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise. 2679 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until): 2680 Likewise. 2681 * include/std/thread (this_thread::sleep_until): Likewise. 2682 * testsuite/30_threads/condition_variable/members/2.cc: Qualify 2683 slow_clock with new namespace. 2684 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New 2685 test. 2686 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc: 2687 New test. 2688 * testsuite/30_threads/future/members/clock_neg.cc: New test. 2689 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc: 2690 Qualify slow_clock with new namespace. 2691 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/ 2692 clock_neg.cc: New test. 2693 * testsuite/30_threads/shared_future/members/clock_neg.cc: New 2694 test. 2695 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test. 2696 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc: 2697 New test. 2698 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify 2699 slow_clock with new namespace. 2700 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise. 2701 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New 2702 test. 2703 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test. 2704 * testsuite/std/time/traits/is_clock.cc: New test. 2705 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test 2706 namespace. 2707 27082020-03-21 Jonathan Wakely <jwakely@redhat.com> 2709 2710 PR libstdc++/93245 2711 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()): 2712 * testsuite/experimental/filesystem/path/generic/generic_string.cc: 2713 Improve test coverage. 2714 2715 PR libstdc++/94242 2716 * include/bits/fs_path.h (path::_S_str_convert): Replace first 2717 parameter with basic_string_view so that strings with different 2718 allocators can be accepted. 2719 (path::generic_string<C,T,A>()): Use basic_string object that uses the 2720 right allocator type. 2721 * testsuite/27_io/filesystem/path/generic/94242.cc: New test. 2722 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve 2723 test coverage. 2724 27252020-03-18 Jonathan Wakely <jwakely@redhat.com> 2726 2727 PR libstdc++/94033 2728 * include/std/type_traits (__is_nt_default_constructible_atom): Remove. 2729 (__is_nt_default_constructible_impl): Remove. 2730 (__is_nothrow_default_constructible_impl): Remove. 2731 (__is_nt_constructible_impl): Add bool template parameter. Adjust 2732 partial specializations. 2733 (__is_nothrow_constructible_impl): Replace class template with alias 2734 template. 2735 (is_nothrow_default_constructible): Derive from alias template 2736 __is_nothrow_constructible_impl instead of 2737 __is_nothrow_default_constructible_impl. 2738 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test. 2739 2740 * include/std/stop_token (stop_token::_Stop_state_ref): Define 2741 comparison operators explicitly if the compiler won't synthesize them. 2742 2743 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check 2744 __cpp_lib_concepts before using iter_reference_t. 2745 * include/bits/stream_iterator.h (istream_iterator): Check 2746 __cpp_lib_concepts before using default_sentinel_t. 2747 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise. 2748 2749 PR libstdc++/94203 2750 * include/experimental/executor (executor::executor(Executor)): Call 2751 make_shared directly instead of _M_create. Create _Tgt1 object. 2752 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)): 2753 Call allocate_shared directly instead of _M_create. Create _Tgt2 2754 object. 2755 (executor::target_type): Add cast needed for new _Tgt interface. 2756 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func. 2757 (executor::_Tgt): Define the same interface whether RTTI is enabled or 2758 not. 2759 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use 2760 std::type_info in the interface. 2761 (executor::_Tgt::_M_func): Add data member. 2762 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates. 2763 (executor::_Tgt1::_S_func): Define function to access target without 2764 depending on RTTI. 2765 (executor::_M_create): Remove. 2766 (operator==, operator!=): Simplify comparisons for executor. 2767 * include/experimental/socket (is_error_code_enum<socket_errc>): 2768 Define specialization before use. 2769 * testsuite/experimental/net/executor/1.cc: New test. 2770 27712020-03-16 Jonathan Wakely <jwakely@redhat.com> 2772 2773 PR libstdc++/94199 2774 * include/experimental/executor (service_already_exists): Add default 2775 constructor. Declare make_service to be a friend. 2776 * testsuite/experimental/net/execution_context/make_service.cc: New 2777 test. 2778 27792020-03-12 Jonathan Wakely <jwakely@redhat.com> 2780 2781 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass 2782 a null pointer to functions with nonnull(1) attribute. 2783 27842020-03-11 Patrick Palka <ppalka@redhat.com> 2785 2786 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix, 2787 'address' -> 'std::__addressof'. 2788 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of 2789 a non-forward input_range. 2790 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make 2791 default constructor protected instead of deleted, like with 2792 input_iterator_wrapper. 2793 (test_range::iterator): Add comment explaining that this type is used 2794 only when the underlying wrapper is input_iterator_wrapper or 2795 output_iterator_wrapper. Remove delegating defaulted constructor so 2796 that the inherited default constructor is used instead. 2797 2798 LWG 3286 ranges::size is not required to be valid after a call to 2799 ranges::begin on an input range 2800 * include/std/ranges (subrange::subrange): Split single-argument 2801 constructor into two, one constrained by _S_store_size and another by 2802 !_S_store_size. 2803 (take_view::begin): Call size() before calling ranges::begin(_M_base). 2804 * testsuite/std/ranges/adaptors/lwg3286.cc: New test. 2805 * testsuite/std/ranges/subrange/lwg3286.cc: New test. 2806 28072020-03-10 Jonathan Wakely <jwakely@redhat.com> 2808 2809 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current 2810 instead of _M_current. 2811 (split_view::_OuterIter::operator++): Likewise. 2812 2813 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove. 2814 (transform_view::_Iterator::operator*): Add noexcept-specifier. 2815 (transform_view::_Iterator::iter_move): Inline __iter_move body here. 2816 (split_view::_OuterIter::__current): Add noexcept. 2817 (split_view::_InnerIter::__iter_swap): Remove. 2818 (split_view::_InnerIter::__iter_move): Remove. 2819 (split_view::_InnerIter::_M_i_current): New accessors. 2820 (split_view::_InnerIter::__at_end): Use _M_i_current(). 2821 (split_view::_InnerIter::operator*): Likewise. 2822 (split_view::_InnerIter::operator++): Likewise. 2823 (iter_move(const _InnerIter&)): Likewise. 2824 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise. 2825 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier 2826 for iter_move and iter_swap on split_view's inner iterator. 2827 2828 PR c++/94117 2829 * include/std/ranges (ranges::transform_view::_Iterator::iter_move): 2830 Change expression in noexcept-specifier to match function body. 2831 2832 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add 2833 comment explaining multiple dg-do directives. 2834 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive 2835 so test is run as well as compiled. 2836 28372020-03-09 Jonathan Wakely <jwakely@redhat.com> 2838 2839 PR libstdc++/94063 2840 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to 2841 handle concatenations that change the type of the first component. 2842 (path::operator+=(basic_string_view<value_type>)): Likewise. 2843 * testsuite/27_io/filesystem/path/concat/94063.cc: New test. 2844 28452020-03-06 Patrick Palka <ppalka@redhat.com> 2846 2847 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend 2848 join_view::_Sentinel<!_Const>. 2849 * testsuite/std/ranges/adaptors/join.cc: Augment test. 2850 2851 PR libstdc++/93978 2852 * include/bits/range_access.h (__cust_access::_Empty::operator()): 2853 Declare return type to be bool instead of auto. 2854 * testsuite/std/ranges/adaptors/93978.cc: New test. 2855 28562020-03-06 Jonathan Wakely <jwakely@redhat.com> 2857 2858 PR libstdc++/94069 2859 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER] 2860 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect 2861 second argument to __glibcxx_rwlock_init. 2862 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test. 2863 2864 PR libstdc++/93244 2865 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust 2866 test to not fail due to PR 94063. 2867 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise. 2868 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise. 2869 28702020-03-06 Andreas Krebbel <krebbel@linux.ibm.com> 2871 2872 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it 2873 would match ENOSYS. 2874 28752020-03-05 Jonathan Wakely <jwakely@redhat.com> 2876 2877 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable. 2878 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo. 2879 * testsuite/experimental/filesystem/operations/copy.cc: Likewise. 2880 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type 2881 for return value, and in comparison. 2882 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise. 2883 2884 PR libstdc++/94051 2885 * include/std/string_view: Include <bits/ostream_insert.h>. 2886 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test. 2887 28882020-03-04 Jonathan Wakely <jwakely@redhat.com> 2889 2890 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment. 2891 28922020-03-04 Patrick Palka <ppalka@redhat.com> 2893 2894 PR libstdc++/94017 2895 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine 2896 condition for when to use memset, making sure to additionally check that 2897 the output pointer's value type is a non-volatile byte type. Instead of 2898 requiring that the fill type is a byte type, just require that it's an 2899 integral type. 2900 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc: 2901 New test. 2902 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc: 2903 New test. 2904 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was 2905 blocked by PR 94017. 2906 * testsuite/25_algorithms/fill/94017.cc: New test. 2907 * testsuite/25_algorithms/fill_n/94017.cc: New test. 2908 2909 LWG 3355 The memory algorithms should support move-only input iterators 2910 introduced by P1207 2911 * include/bits/ranges_uninitialized.h 2912 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting 2913 to copy __ifirst, which could be a move-only input iterator. Use 2914 operator- instead of ranges::distance to compute distance from a sized 2915 sentinel. 2916 (__uninitialized_copy_n_fn::operator()): Likewise. 2917 (__uninitialized_move_fn::operator()): Likewise. 2918 (__uninitialized_move_n_fn::operator()): Likewise. 2919 (__uninitialized_destroy_fn::operator()): Use std::move to avoid 2920 attempting to copy __first. 2921 (__uninitialized_destroy_n_fn::operator()): Likewise. 2922 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: 2923 Augment test. 2924 * .../specialized_algorithms/uninitialized_copy/constrained.cc: 2925 Likewise. 2926 * .../specialized_algorithms/uninitialized_move/constrained.cc: 2927 Likewise. 2928 2929 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make 2930 protected instead of private. 2931 (test_sized_range_sized_sent): New. 2932 2933 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy): 2934 New testsuite iterator. 2935 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it. 2936 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise. 2937 2938 * include/bits/ranges_uninitialized.h 2939 (uninitialized_copy_fn::operator()): Pass a reference type as the first 2940 argument to is_nothrow_assignable_v. 2941 (uninitialized_copy_fn::operator()): Likewise. 2942 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result 2943 with the input iterator stripped of its move_iterator. 2944 (uninitialized_move_n_fn::operator()): Likewise. 2945 (uninitialized_fill_fn::operator()): Pass a reference type as the first 2946 argument to is_nothrow_assignable_v. 2947 (uninitialized_fill_n_fn::operator()): Likewise. 2948 29492020-03-03 Jonathan Wakely <jwakely@redhat.com> 2950 2951 PR libstdc++/94013 2952 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New 2953 traits to control when to use memmove and memcmp optimizations. 2954 (__is_nonvolatile_trivially_copyable): New helper trait. 2955 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not 2956 use memcmp optimization with volatile data. 2957 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable. 2958 (__copy_or_move, __copy_or_move_backward): Use __memcpyable. 2959 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable. 2960 (__copy_move_backward_a2): Likewise. 2961 (__equal_aux1): Use __memcmpable. 2962 (__lexicographical_compare_aux): Do not use memcmp optimization with 2963 volatile data. 2964 * testsuite/25_algorithms/copy/94013.cc: New test. 2965 * testsuite/25_algorithms/copy_backward/94013.cc: New test. 2966 * testsuite/25_algorithms/equal/94013.cc: New test. 2967 * testsuite/25_algorithms/fill/94013.cc: New test. 2968 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test. 2969 * testsuite/25_algorithms/move/94013.cc: New test. 2970 * testsuite/25_algorithms/move_backward/94013.cc: New test. 2971 2972 * include/bits/stl_algobase.h (lexicographical_compare_three_way): 2973 Avoid redundant iterator comparisons (LWG 3410). 2974 29752020-03-02 Jonathan Wakely <jwakely@redhat.com> 2976 2977 PR libstdc++/93972 2978 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to 2979 differ. 2980 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test. 2981 2982 * include/std/ranges (__detail::__maybe_empty_t): Rename to 2983 __maybe_present_t. 2984 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name. 2985 2986 * include/bits/ranges_algo.h (shift_right): Add 'typename' to 2987 dependent type. 2988 29892020-03-01 H.J. Lu <hongjiu.lu@intel.com> 2990 2991 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 2992 29932020-02-29 John David Anglin <danglin@gcc.gnu.org> 2994 2995 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*. 2996 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise. 2997 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise. 2998 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise. 2999 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise. 3000 3001 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: 3002 Add libatomic option. 3003 * testsuite/30_threads/jthread/jthread.cc: Likewise. 3004 30052020-02-29 François Dumont <fdumont@gcc.gnu.org> 3006 3007 * include/bits/stl_algo.h 3008 (__find_if, __count_if, __is_permutation, std::is_permutation): Move... 3009 * include/bits/stl_algobase.h: ...here. 3010 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include. 3011 30122020-02-29 John David Anglin <danglin@gcc.gnu.org> 3013 3014 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic 3015 option. 3016 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: 3017 Likewise. 3018 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise. 3019 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise. 3020 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise. 3021 * testsuite/30_threads/stop_token/stop_source.cc: Likewise. 3022 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise. 3023 * testsuite/30_threads/stop_token/stop_token.cc: Likewise. 3024 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: 3025 Likewise. 3026 3027 PR libstdc++/92906 3028 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 3029 30302020-02-28 Patrick Palka <ppalka@redhat.com> 3031 3032 PR libstdc++/93972 3033 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): 3034 Fix condition for when to use memcmp, making it consistent with the 3035 corresponding condition used in std::lexicographical_compare. 3036 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test. 3037 3038 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for 3039 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to 3040 existing signatures for C++2a. 3041 30422020-02-28 Jonathan Wakely <jwakely@redhat.com> 3043 3044 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run 3045 test instead of just compiling it. 3046 30472020-02-28 Patrick Palka <ppalka@redhat.com> 3048 3049 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false 3050 whenever the underlying range models common_range. 3051 3052 * include/std/ranges (__detail::_CachedPosition): New struct. 3053 (views::filter_view::_S_needs_cached_begin): New member variable. 3054 (views::filter_view::_M_cached_begin): New member variable. 3055 (views::filter_view::begin): Use _M_cached_begin to cache its 3056 result. 3057 (views::drop_view::_S_needs_cached_begin): New static member variable. 3058 (views::drop_view::_M_cached_begin): New member variable. 3059 (views::drop_view::begin): Use _M_cached_begin to cache its result 3060 when _S_needs_cached_begin. 3061 (views::drop_while_view::_M_cached_begin): New member variable. 3062 (views::drop_while_view::begin): Use _M_cached_begin to cache its 3063 result. 3064 (views::reverse_view::_S_needs_cached_begin): New static member 3065 variable. 3066 (views::reverse_view::_M_cached_begin): New member variable. 3067 (views::reverse_view::begin): Use _M_cached_begin to cache its result 3068 when _S_needs_cached_begin. 3069 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that 3070 drop_view::begin caches its result. 3071 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check 3072 that drop_while_view::begin caches its result. 3073 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that 3074 filter_view::begin caches its result. 3075 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that 3076 reverse_view::begin caches its result. 3077 30782020-02-28 Jonathan Wakely <jwakely@redhat.com> 3079 3080 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for 3081 filesystems that silently truncate timestamps. 3082 * testsuite/experimental/filesystem/operations/last_write_time.cc: 3083 Likewise. 3084 3085 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable 3086 -Wstringop-overflow warnings. 3087 30882020-02-27 Jonathan Wakely <jwakely@redhat.com> 3089 3090 * testsuite/lib/libstdc++.exp (v3_target_compile): Add 3091 -fdiagnostics-urls=never to options. 3092 30932020-02-27 Patrick Palka <ppalka@redhat.com> 3094 3095 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend 3096 _Iterator<!_Const>. 3097 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>. 3098 (take_view::_Sentinel<_Const>): Likewise. 3099 (take_while_view::_Sentinel<_Const>): Likewise. 3100 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>. 3101 * testsuite/std/ranges/adaptors/split.cc: Augment test. 3102 * testsuite/std/ranges/adaptors/take.cc: Augment test. 3103 * testsuite/std/ranges/adaptors/take_while.cc: Augment test. 3104 * testsuite/std/ranges/adaptors/transform.cc: Augment test. 3105 3106 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the 3107 base() of a vector<>::iterator is a pointer. 3108 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise. 3109 * testsuite/25_algorithms/move/constrained.cc: Likewise. 3110 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise. 3111 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data() 3112 instead of &foo[0]. 3113 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise. 3114 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise. 3115 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise. 3116 * testsuite/25_algorithms/sort/constrained.cc: Likewise. 3117 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise. 3118 31192020-02-27 Jonathan Wakely <jwakely@redhat.com> 3120 3121 * include/debug/array (operator<=>): Define for C++20. 3122 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: 3123 Adjust dg-error line numbers. 3124 * testsuite/23_containers/array/tuple_interface/ 3125 tuple_element_debug_neg.cc: Likewise. 3126 3127 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before 3128 defining _GLIBCXX_ASSERTIONS. 3129 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise. 3130 * testsuite/23_containers/span/first_assert_neg.cc: Likewise. 3131 * testsuite/23_containers/span/front_assert_neg.cc: Likewise. 3132 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise. 3133 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise. 3134 * testsuite/23_containers/span/last_assert_neg.cc: Likewise. 3135 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise. 3136 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise. 3137 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise. 3138 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise. 3139 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise. 3140 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise. 3141 3142 * include/debug/string (__gnu_debug::basic_string::insert): Fix for 3143 C++98 where the member function of the base class returns void. 3144 3145 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add 3146 equality comparisons that support value-initialized iterators. 3147 3148 * include/bits/boost_concept_check.h (__function_requires): Add 3149 _GLIBCXX14_CONSTEXPR. 3150 * testsuite/25_algorithms/min/concept_checks.cc: New test. 3151 31522020-02-26 Patrick Palka <ppalka@redhat.com> 3153 3154 PR libstdc++/93936 3155 * include/std/ranges (split_view::_InnerIter::operator==): Compare 3156 the operands' _M_i rather than their _M_i.current(). 3157 * testsuite/std/ranges/adaptors/split.cc: Augment test. 3158 3159 P1645R1 constexpr for <numeric> algorithms 3160 * include/bits/stl_numeric.h (iota, accumulate, inner_product, 3161 partial_sum, adjacent_difference): Make conditionally constexpr for 3162 C++20. 3163 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature 3164 test macro. 3165 (reduce, transform_reduce, exclusive_scan, inclusive_scan, 3166 transform_exclusive_scan, transform_inclusive_scan): Make conditionally 3167 constexpr for C++20. 3168 * include/std/version (__cpp_lib_constexpr_numeric): Define. 3169 * testsuite/26_numerics/accumulate/constexpr.cc: New test. 3170 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise. 3171 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise. 3172 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise. 3173 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise. 3174 * testsuite/26_numerics/iota/constexpr.cc: Likewise. 3175 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise. 3176 * testsuite/26_numerics/reduce/constexpr.cc: Likewise. 3177 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise. 3178 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise. 3179 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise. 3180 31812020-02-26 Jonathan Wakely <jwakely@redhat.com> 3182 3183 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare 3184 variables in smaller scope and avoid calling ranges::distance when we 3185 know they are pointers. Remove statically-unreachable use of 3186 __builtin_unreachable(). 3187 * include/bits/stl_algobase.h (__lexicographical_compare::__lc): 3188 Define inline. 3189 3190 * include/std/ranges (__detail::__maybe_empty_t): Define new helper 3191 alias. 3192 (__detail::__maybe_const_t): Likewise. 3193 (__adaptor::_RangeAdaptor): Use __maybe_empty_t. 3194 (transform_view, take_view, take_while_view, elements_view): Use 3195 __maybe_const_t. 3196 (join_view, split_view): Use both. 3197 31982020-02-25 Patrick Palka <ppalka@redhat.com> 3199 3200 LWG 3397 basic_istream_view::iterator should not provide 3201 iterator_category 3202 * include/std/ranges (basic_istream_view:_Iterator::iterator_category): 3203 Rename to ... 3204 (basic_istream_view:_Iterator::iterator_concept): ... this. 3205 * testsuite/std/ranges/istream_view.cc: Augment test. 3206 3207 LWG 3325 Constrain return type of transformation function for 3208 transform_view 3209 * include/std/ranges (transform_view): Constrain the return type of the 3210 transformation function as per LWG 3325. 3211 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test. 3212 3213 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained 3214 * include/std/ranges (join_view::_Iterator::operator--): Require that 3215 range_reference_t<_Base> models common_range. 3216 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test. 3217 3218 LWG 3301 transform_view::_Iterator has incorrect iterator_category 3219 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust 3220 determination of iterator_category as per LWG 3301. 3221 * testsuite/std/ranges/adaptors/transform.cc: Augment test. 3222 3223 LWG 3292 iota_view is under-constrained 3224 * include/std/ranges (iota_view): Require that _Winc models semiregular 3225 as per LWG 3292. 3226 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test. 3227 32282020-02-25 Jonathan Wakely <jwakely@redhat.com> 3229 3230 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove 3231 during constant evaluation. Call __builtin_memmove directly instead of 3232 __memmove. 3233 (__copy_or_move_backward): Likewise. 3234 * include/bits/stl_algobase.h (__memmove): Remove. 3235 (__copy_move<M, true, random_access_iterator_tag>::__copy_m) 3236 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m): 3237 Use __builtin_memmove directly instead of __memmove. 3238 (__copy_move_a2): Do not use memmove during constant evaluation. 3239 (__copy_move_backward_a2): Use _IsMove constant to select correct 3240 __copy_move_backward specialization. 3241 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies 3242 begin turned into moves during constant evaluation. 3243 3244 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of 3245 previous commit. 3246 3247 PR libstdc++/93872 3248 * include/bits/stl_algobase.h (__memmove): Cast away const before 3249 doing move assignment. 3250 * testsuite/25_algorithms/move/93872.cc: New test. 3251 * testsuite/25_algorithms/move_backward/93872.cc: New test. 3252 32532020-02-24 Patrick Palka <ppalka@redhat.com> 3254 3255 PR libstdc++/93884 3256 * include/bits/ranges_algobase.h (__copy_or_move, 3257 __copy_or_move_backward): Don't inspect the iter_value_t of the output 3258 iterator, instead inspect its iterator_traits directly. 3259 * include/bits/stl_iterator.h (back_insert_iterator::container): 3260 Conditionally initialize. 3261 (back_insert_iterator::difference_type): Conditionally define. 3262 (back_insert_iterator::back_insert_iterator): Conditionally define this 3263 default constructor. 3264 (front_insert_iterator::container): Conditionally initialize. 3265 (front_insert_iterator::difference_type): Conditionally define. 3266 (front_insert_iterator::front_insert_iterator): Conditionally define 3267 this default constructor. 3268 * 24_iterators/back_insert_iterator/pr93884.cc: New test. 3269 * 24_iterators/front_insert_iterator/pr93884.cc: New test. 3270 3271 P0769R2 Add shift to <algorithm> 3272 * include/bits/ranges_algo.h (shift_left, shift_right): New. 3273 * testsuite/25_algorithms/shift_left/1.cc: New test. 3274 * testsuite/25_algorithms/shift_right/1.cc: New test. 3275 32762020-02-24 Jonathan Wakely <jwakely@redhat.com> 3277 3278 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): 3279 Make noexcept-specifier conditional. 3280 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check 3281 noexcept-specifier. 3282 3283 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): 3284 Add constructor. 3285 (operator==(istream_iterator, default_sentinel_t)): Add operator. 3286 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20. 3287 * include/bits/streambuf_iterator.h 3288 (istreambuf_iterator(default_sentinel_t)): Add constructor. 3289 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator. 3290 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: 3291 New test. 3292 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test. 3293 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc: 3294 New test. 3295 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. 3296 3297 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove. 3298 (ranges::enable_view): Simplify (LWG 3326). 3299 * include/bits/range_access.h (ranges::enable_view): Declare. 3300 * include/bits/regex.h (__enable_view_impl): Remove partial 3301 specialization. 3302 * include/bits/stl_multiset.h (__enable_view_impl): Likewise. 3303 * include/bits/stl_set.h (__enable_view_impl): Likewise. 3304 * include/bits/unordered_set.h (__enable_view_impl): Likewise. 3305 * include/debug/multiset.h (__enable_view_impl): Likewise. 3306 * include/debug/set.h (__enable_view_impl): Likewise. 3307 * include/debug/unordered_set (__enable_view_impl): Likewise. 3308 * include/experimental/string_view (ranges::enable_view): Define 3309 partial specialization. 3310 * include/std/span (ranges::enable_view): Likewise. 3311 * include/std/string_view (ranges::enable_view): Likewise. 3312 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept. 3313 33142020-02-21 Jonathan Wakely <jwakely@redhat.com> 3315 3316 * include/std/optional (operator<=>(optional<T>, optional<U>)) 3317 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)): 3318 Define for C++20. 3319 * include/std/tuple (__tuple_cmp): New helper function for <=>. 3320 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20. 3321 * include/std/variant (operator<=>(variant<T...>, variant<T...>)) 3322 (operator<=>(monostate, monostate)): Define for C++20. 3323 * testsuite/20_util/optional/relops/three_way.cc: New test. 3324 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test. 3325 * testsuite/20_util/variant/89851.cc: Move to ... 3326 * testsuite/20_util/variant/relops/89851.cc: ... here. 3327 * testsuite/20_util/variant/90008.cc: Move to ... 3328 * testsuite/20_util/variant/relops/90008.cc: ... here. 3329 * testsuite/20_util/variant/relops/three_way.cc: New test. 3330 33312020-02-20 Patrick Palka <ppalka@redhat.com> 3332 3333 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility 3334 function. 3335 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use 3336 __maybe_refwrap to capture lvalue references by reference, and then use 3337 unwrap_reference_t to forward the by-reference captures as references. 3338 * testsuite/std/ranges/adaptors/split.cc: Augment test. 3339 * testsuite/std/ranges/adaptors/split_neg.cc: New test. 3340 3341 * include/std/ranges (iota_view): Forward declare _Sentinel. 3342 (iota_view::_Iterator): Befriend _Sentinel. 3343 (iota_view::_Sentinel::_M_equal): New member function. 3344 (iota_view::_Sentinel::operator==): Use it. 3345 (views::_Iota::operator()): Forward __f using the correct type. 3346 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota 3347 with integers of different signedness, to appease iota_view's deduction 3348 guide. 3349 * testsuite/std/ranges/iota/iota_view.cc: Augment test. 3350 33512020-02-20 Jonathan Wakely <jwakely@redhat.com> 3352 3353 * include/bits/range_access.h (ranges::begin): Reject array of 3354 incomplete type. 3355 (ranges::end, ranges::size): Require arrays to be bounded. 3356 (ranges::data): Require lvalue or borrowed_range. 3357 (ranges::iterator_t): Remove constraint. 3358 * testsuite/std/ranges/access/begin.cc: Do not check array of 3359 incomplete type. 3360 * testsuite/std/ranges/access/begin_neg.cc: New test. 3361 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error. 3362 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error. 3363 * testsuite/std/ranges/access/ssize.cc: Do not check array of 3364 incomplete type. 3365 3366 * include/std/system_error (error_category::operator<=>) 3367 (operator<=>(const error_code&, const error_code&)) 3368 (operator<=>(const error_condition&, const error_condition&)): Define 3369 for C++20. 3370 * testsuite/19_diagnostics/error_category/operators/less.cc: New test. 3371 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New 3372 test. 3373 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove 3374 incorrect comment. 3375 * testsuite/19_diagnostics/error_code/operators/less.cc: New test. 3376 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove 3377 incorrect comment. 3378 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test. 3379 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove 3380 incorrect comment. 3381 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test. 3382 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc: 3383 Remove incorrect comment. 3384 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New 3385 test. 3386 3387 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20. 3388 3389 * include/std/thread (thread::id::operator<=>): Define for C++20. 3390 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of 3391 functions in namespace std. 3392 * testsuite/30_threads/thread/id/operators_c++20.cc: New test. 3393 33942020-02-19 Patrick Palka <ppalka@redhat.com> 3395 3396 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the 3397 null terminator of the underlying string as part of the test_range. 3398 (main): Call test03. 3399 34002020-02-19 Jonathan Wakely <jwakely@redhat.com> 3401 3402 * include/bits/stl_iterator.h (common_iterator): Add copyable<I> 3403 requirement (LWG 3385). 3404 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust 3405 expected declaration. 3406 3407 * include/std/ranges (take_while_view, drop_view, drop_while_view) 3408 (elements_view:_Iterator): Initialize data members (LWG 3364). 3409 3410 * libsupc++/compare (three_way_comparable): Remove always-false check 3411 that should have been removed with weak_equality (P1959R0). 3412 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360). 3413 3414 * include/std/concepts (__detail::__partially_ordered_with): Move here 3415 from <compare>. 3416 (totally_ordered, totally_ordered_with): Use __partially_ordered_with 3417 to simplify definition (LWG 3331). 3418 * libsupc++/compare (__detail::__partially_ordered_with): Move to 3419 <concepts>. 3420 3421 * include/std/concepts (totally_ordered_with): Remove redundant 3422 requirement (LWG 3329). 3423 3424 * include/std/ranges (__detail::__convertible_to_non_slicing): New 3425 helper concept. 3426 (__detail::__pair_like_convertible_to): Remove. 3427 (__detail::__pair_like_convertible_from): Add requirements for 3428 non-slicing conversions. 3429 (subrange): Constrain constructors with __convertible_to_non_slicing. 3430 Remove constructors from pair-like types. Add new deduction guide. 3431 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test. 3432 3433 * include/bits/iterator_concepts.h (iter_move): Add declaration to 3434 prevent unqualified lookup finding a suitable declaration (LWG 3247). 3435 3436 * include/std/memory_resource (polymorphic_allocator::allocate) 3437 (polymorphic_allocator::allocate_object): Change type of exception to 3438 bad_array_new_length (LWG 3237). 3439 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test. 3440 3441 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348). 3442 * include/std/version (__cpp_lib_unwrap_ref): Likewise. 3443 * testsuite/20_util/unwrap_reference/1.cc: Check macro. 3444 * testsuite/20_util/unwrap_reference/3.cc: New test. 3445 3446 * include/std/numeric (midpoint(T8, T*)): Do not check for complete 3447 type during overload resolution, use static assert instead (LWG 3200). 3448 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with 3449 incomplete type. 3450 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test. 3451 3452 * include/std/span (span(T (&)[N])): Use non-deduced context to 3453 prevent first parameter from interfering with class template argument 3454 deduction (LWG 3369). 3455 * testsuite/23_containers/span/deduction.cc: Add missing 'const'. 3456 * testsuite/23_containers/span/lwg3255.cc: Check for construction from 3457 rvalues. 3458 3459 * include/std/span (span::const_iterator, span::const_reverse_iterator) 3460 (span::cbegin(), span::cend(), span::crbegin(), span::crend()): 3461 Remove (LWG 3320). 3462 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin 3463 and cend. 3464 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: 3465 Likewise. 3466 * testsuite/20_util/specialized_algorithms/uninitialized_copy/ 3467 constrained.cc: Likewise. 3468 * testsuite/20_util/specialized_algorithms/ 3469 uninitialized_default_construct/constrained.cc: Likewise. 3470 * testsuite/20_util/specialized_algorithms/uninitialized_fill/ 3471 constrained.cc: Likewise. 3472 * testsuite/20_util/specialized_algorithms/uninitialized_move/ 3473 constrained.cc: Likewise. 3474 * testsuite/20_util/specialized_algorithms/ 3475 uninitialized_value_construct/constrained.cc: Likewise. 3476 3477 * include/bits/range_access.h (range_size_t): Define alias template. 3478 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335). 3479 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name. 3480 3481 * include/std/ranges (filter_view, transform_view, take_view) 3482 (join_view, split_view, reverse_view): Remove commented-out converting 3483 constructors (LWG 3280). 3484 3485 * include/std/memory (uninitialized_construct_using_allocator): Use 3486 std::construct_at (LWG 3321). 3487 3488 * include/std/memory_resource (polymorphic_allocator::allocate_bytes) 3489 (polymorphic_allocator::allocate_object) 3490 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304). 3491 3492 LWG 3379. "safe" in several library names is misleading 3493 * include/bits/range_access.h (enable_safe_range): Rename to 3494 enable_borrowed_range. 3495 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range. 3496 (safe_range): Rename to borrowed_range. 3497 * include/bits/ranges_algo.h: Adjust to use new names. 3498 * include/bits/ranges_algobase.h: Likewise. 3499 * include/bits/ranges_uninitialized.h: Likewise. 3500 * include/std/ranges: Likewise. 3501 (safe_iterator_t): Rename to borrowed_iterator_t. 3502 (safe_subrange_t): Rename to borrowed_subrange_t. 3503 * include/std/span: Adjust to use new names. 3504 * include/std/string_view: Likewise. 3505 * include/experimental/string_view: Likewise. 3506 * testsuite/std/ranges/access/begin.cc: Likewise. 3507 * testsuite/std/ranges/access/cbegin.cc: Likewise. 3508 * testsuite/std/ranges/access/cdata.cc: Likewise. 3509 * testsuite/std/ranges/access/cend.cc: Likewise. 3510 * testsuite/std/ranges/access/crbegin.cc: Likewise. 3511 * testsuite/std/ranges/access/crend.cc: Likewise. 3512 * testsuite/std/ranges/access/data.cc: Likewise. 3513 * testsuite/std/ranges/access/end.cc: Likewise. 3514 * testsuite/std/ranges/access/rbegin.cc: Likewise. 3515 * testsuite/std/ranges/access/rend.cc: Likewise. 3516 * testsuite/std/ranges/safe_range.cc: Likewise. 3517 * testsuite/std/ranges/safe_range_types.cc: Likewise. 3518 * testsuite/util/testsuite_iterators.h: Likewise. 3519 3520 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>) 3521 (tuple_element<1, const subrange<I, S, K>>): Add partial 3522 specializations (LWG 3398). 3523 * testsuite/std/ranges/subrange/tuple_like.cc: New test. 3524 3525 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) 3526 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn) 3527 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool. 3528 35292020-02-18 Patrick Palka <ppalka@redhat.com> 3530 3531 P1983R0 Wording for GB301, US296, US292, US291, and US283 3532 * include/std/ranges (filter_view::pred): New member function. 3533 (join_view::_Iterator::_Iterator): Remove now-redundant comment since 3534 P1983R0 fixes the highlighted issue in the same way. 3535 (join_view::_Iterator<_Const>): Add friend 3536 join_view::_Iterator<!_Const>. 3537 (join_view::_M_inner): Remove mutable specifier, effectively reverting 3538 the proposed wording changes of P3278. 3539 (join_view::begin): Refine the condition for when to return a const 3540 iterator. 3541 (split_view::_OuterIter::_OuterIter): Adjust constraints. 3542 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred 3543 exists and works. 3544 35452020-02-18 Jonathan Wakely <jwakely@redhat.com> 3546 3547 PR libstdc++/93818 3548 * include/std/ranges (_RangeAdaptor): Add deduction guide. 3549 (filter_view::_Iterator): Add alias _Vp_iter and use in place of 3550 iterator_t<_Vp>. 3551 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'. 3552 (transform_view::_Iterator): Add alias _Base_iter and use in place of 3553 iterator_t<_Base>. 3554 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'. 3555 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases. 3556 (join_view::_Iterator::_S_iter_cat()): Add 'typename'. 3557 (split_view::_InnerIter::_S_iter_cat()): Likewise. 3558 3559 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid 3560 assumption that long is wider than int. 3561 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise. 3562 * testsuite/20_util/integer_comparisons/less.cc: Likewise. 3563 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise. 3564 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise. 3565 3566 P1976R2 Fixed-size span construction from dynamic range 3567 * include/std/span (__cpp_lib_span): Update value. 3568 (span(It, size_type), span(It, End)): Make conditionally explicit. Add 3569 assertion. 3570 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax 3571 constraints. 3572 (span::first<Count>(), span::last<Count>()): Use explicit type in 3573 return statement. 3574 (as_bytes, as_writable_bytes): Likewise. 3575 * include/std/version (__cpp_lib_span): Update value. 3576 * testsuite/23_containers/span/1.cc: Check new value. 3577 * testsuite/23_containers/span/2.cc: Check new value. 3578 * testsuite/23_containers/span/explicit.cc: New test. 3579 3580 * include/std/span (span::__is_compatible_array): Simplify alias 3581 template by using requires-clause. 3582 (span::__is_compatible_ref): New alias template for constraining 3583 constructors. 3584 (span::__is_compatible_iterator, span::__is_compatible_range): Remove. 3585 (span(It, size_type), span(It, End)): Use __is_compatible_ref. 3586 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove 3587 redundant parentheses. 3588 (span(R&&)): Add missing constraints. 3589 3590 * include/std/span (span): Reorder members and rename template 3591 parameters to match declarations in the C++2a working paper. 3592 3593 P2116R0 Remove tuple-like protocol support from fixed-extent span 3594 * include/std/span (get, tuple_size, tuple_element): Remove. 3595 * testsuite/23_containers/span/everything.cc: Remove checks for 3596 tuple-like API. 3597 * testsuite/23_containers/span/get_neg.cc: Remove. 3598 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove. 3599 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove. 3600 * testsuite/23_containers/span/tuple_size_neg.cc: Remove. 3601 36022020-02-17 Patrick Palka <ppalka@redhat.com> 3603 3604 P2106R0 Alternative wording for GB315 and GB316 3605 * include/bits/ranges_algo.h (in_fun_result): New. 3606 (for_each_result, for_each_n_result): Change into an alias of 3607 in_fun_result. 3608 (in_in_result): New. 3609 (mismatch_result): Change into an alias of in_in_result. 3610 (copy_if_result): Change into an alias of in_out_result. 3611 (swap_ranges_result): Change into an alias of in_in_result. 3612 (unary_transform_result): Change into an alias of in_out_result. 3613 (in_in_out_result): New. 3614 (binary_transform_result): Change into an alias of in_in_out_result. 3615 (replace_copy_result, replace_copy_if_result, remove_copy_if_result, 3616 remove_copy_result, unique_copy_result, reverse_copy_result, 3617 rotate_copy_result, partial_sort_copy_result): Change into an alias of 3618 in_out_result. 3619 (in_out_out_result): New. 3620 (partition_copy_result, merge_result): Change into an alias of 3621 in_out_out_result. 3622 (set_union_result, set_intersection_result): Change into an alias of 3623 in_in_out_result. 3624 (set_difference_result): Change into an alias of in_out_result. 3625 (set_symmetric_difference): Change into an alias of in_in_out_result. 3626 (min_max_result): New. 3627 (minmax_result, minmax_element_result): Change into an alias of 3628 min_max_result. 3629 (in_found_result): New. 3630 (next_permutation_result, prev_permutation_result): Change into an alias 3631 of in_found_result. 3632 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()): 3633 Adjust following changes to next_permutation_result and 3634 prev_permutation_result. 3635 * include/bits/ranges_algobase.h (in_out_result): New. 3636 (copy_result, move_result, move_backward_result, copy_backward_result, 3637 copy_n_result): Change into an alias of in_out_result. 3638 * include/bits/ranges_uninitialized.h (uninitialized_copy_result, 3639 uninitialized_copy_n_result, uninitialized_move_result, 3640 uninitialized_move_n_result): Likewise. 3641 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of 3642 structured bindings. 3643 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise. 3644 3645 P1243R4 Rangify new algorithms 3646 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn, 3647 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New. 3648 * testsuite/25_algorithms/clamp/constrained.cc: New test. 3649 * testsuite/25_algorithms/for_each/constrained.cc: Augment test. 3650 * testsuite/25_algorithms/sample/constrained.cc: New test. 3651 36522020-02-17 Jonathan Wakely <jwakely@redhat.com> 3653 3654 P1964R2 Wording for boolean-testable 3655 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) 3656 (__adjacent_find_fn): Cast result of predicate to bool. 3657 * include/std/concepts (__boolean): Remove. 3658 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add 3659 new helper concepts. 3660 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with) 3661 (predicate): Use __boolean_testable instead of boolean. 3662 * libsupc++/compare (__detail::__partially_ordered, _Synth3way): 3663 Likewise. 3664 3665 P1970R2 Consistency for size() functions: Add ranges::ssize 3666 * include/bits/range_access.h (_SSize, ssize): Define for C++20. 3667 * testsuite/std/ranges/access/ssize.cc: New test. 3668 3669 P1956R1 On the names of low-level bit manipulation functions 3670 * include/bits/hashtable_policy.h: Update comment. 3671 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename. 3672 (ispow2, ceil2, floor2, log2p1): Likewise. 3673 (__cpp_lib_int_pow2): Add feature test macro. 3674 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1. 3675 * include/std/memory (assume_aligned): Adjust use of ispow2. 3676 * include/std/version (__cpp_lib_int_pow2): Add. 3677 * libsupc++/new_opa.cc: Adjust use of __ispow2. 3678 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1. 3679 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2. 3680 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ... 3681 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here. 3682 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ... 3683 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here. 3684 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ... 3685 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here. 3686 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ... 3687 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here. 3688 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ... 3689 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here. 3690 3691 * include/std/charconv: Add comment. 3692 3693 PR libstdc++/92546 (partial) 3694 * include/bits/random.h (uniform_random_bit_generator): Move definition 3695 to <bits/uniform_int_dist.h>. 3696 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead 3697 of <bits/random.h>. 3698 * include/bits/ranges_algobase.h: Do not include <cmath>. 3699 * include/bits/uniform_int_dist.h (uniform_random_bit_generator): 3700 Move here. 3701 * include/std/ranges: Do not include <limits>. 3702 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. 3703 3704 PR libstdc++/92546 (partial) 3705 * include/Makefile.am: Add new header. 3706 * include/Makefile.in: Regenerate. 3707 * include/bits/int_limits.h: New header. 3708 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace 3709 numeric_limits with __detail::__int_limits. 3710 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) 3711 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1): 3712 Likewise. 3713 * include/std/charconv (__to_chars_8, __from_chars_binary) 3714 (__from_chars_alpha_to_num, from_chars): Likewise. 3715 * include/std/memory_resource (polymorphic_allocator::allocate) 3716 (polymorphic_allocator::allocate_object): Likewise. 3717 * include/std/string_view (basic_string_view::_S_compare): Likewise. 3718 * include/std/utility (in_range): Likewise. 3719 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for 3720 extra error about incomplete type __int_limits<bool>. 3721 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>. 3722 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise. 3723 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise. 3724 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise. 3725 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise. 3726 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise. 3727 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise. 3728 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise. 3729 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise. 3730 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise. 3731 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise. 3732 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise. 3733 3734 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update 3735 value for partial_ordering::unordered. 3736 3737 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add 3738 const-qualified expression variations. 3739 * include/std/concepts (copyable): Likewise. 3740 3741 * include/std/type_traits (__is_standard_integer): New helper trait. 3742 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater) 3743 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20. 3744 * include/std/version (__cpp_lib_integer_comparison_functions): Define. 3745 * testsuite/20_util/integer_comparisons/1.cc: New test. 3746 * testsuite/20_util/integer_comparisons/2.cc: New test. 3747 * testsuite/20_util/integer_comparisons/equal.cc: New test. 3748 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test. 3749 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test. 3750 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test. 3751 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test. 3752 * testsuite/20_util/integer_comparisons/in_range.cc: New test. 3753 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test. 3754 * testsuite/20_util/integer_comparisons/less.cc: New test. 3755 * testsuite/20_util/integer_comparisons/less_equal.cc: New test. 3756 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test. 3757 * testsuite/20_util/integer_comparisons/less_neg.cc: New test. 3758 * testsuite/20_util/integer_comparisons/not_equal.cc: New test. 3759 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test. 3760 37612020-02-16 Patrick Palka <ppalka@redhat.com> 3762 3763 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): 3764 Move code after an early exit constexpr if to under an else branch. 3765 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise. 3766 37672020-02-15 Patrick Palka <ppalka@redhat.com> 3768 3769 * include/bits/ranges_algo.h: Adjust whitespace and formatting. 3770 * include/bits/ranges_algobase.h: Likewise. 3771 * include/bits/ranges_uninitialized.h: Likewise. 3772 3773 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of, 3774 binary_search, copy_if, count, count_if, equal_range, find, find_end, 3775 find_first_of, find_if, find_if_not, for_each, generate, generate_n, 3776 includes, inplace_merge, is_heap, is_heap_until, is_partitioned, 3777 is_permutation, is_sorted, is_sorted_until, lexicographical_compare, 3778 lower_bound, make_heap, max, max_element, merge, min, min_element, 3779 minmax, minmax_element, mismatch, next_permutation, none_of, 3780 nth_element, partial_sort, partial_sort_copy, partition, partition_copy, 3781 partition_point, pop_heap, prev_permutation, push_heap, remove, 3782 remove_copy, remove_copy_if, remove_if, replace, replace_copy, 3783 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy, 3784 search, search_n, set_difference, set_intersection, 3785 set_symmetric_difference, set_union, shuffle, sort, sort_heap, 3786 stable_partition, stable_sort, swap_ranges, transform, unique, 3787 unique_copy, upper_bound): Convert into function objects. 3788 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n, 3789 fill, move_backward, copy_backward): Likewise. 3790 * include/bits/ranges_uninitialized.h (uninitialized_default_construct, 3791 uninitialized_default_construct_n, uninitialized_value_construct, 3792 uninitialized_value_construct_n, uninitialized_copy, 3793 uninitialized_copy_n, uninitialized_move, uninitialized_move_n, 3794 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at, 3795 destroy, destroy_n): Likewise. 3796 3797 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ... 3798 (ranges::find_end): ... here. 3799 (ranges::__lexicographical_compare): Fold into ... 3800 (ranges::lexicographical_compare): ... here. 3801 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ... 3802 (ranges::equal): ... here. 3803 38042020-02-15 Jonathan Wakely <jwakely@redhat.com> 3805 3806 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L. 3807 * include/std/deque: Likewise. 3808 * include/std/forward_list: Likewise. 3809 * include/std/list: Likewise. 3810 * include/std/string: Likewise. 3811 * include/std/vector: Likewise. 3812 * include/std/version: Likewise. 3813 * testsuite/23_containers/deque/erasure.cc: Test for new value. 3814 * testsuite/23_containers/forward_list/erasure.cc: Likewise. 3815 * testsuite/23_containers/list/erasure.cc: Likewise. 3816 * testsuite/23_containers/map/erasure.cc: Likewise. 3817 * testsuite/23_containers/set/erasure.cc: Likewise. 3818 * testsuite/23_containers/unordered_map/erasure.cc: Likewise. 3819 * testsuite/23_containers/unordered_set/erasure.cc: Likewise. 3820 * testsuite/23_containers/vector/erasure.cc: Likewise. 3821 38222020-02-15 Jonathan Wakely <jwakely@redhat.com> 3823 3824 * include/bits/random.h (uniform_random_bit_generator): Require min() 3825 and max() to be constant expressions and min() to be less than max(). 3826 * testsuite/26_numerics/random/concept.cc: Check additional cases. 3827 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. 3828 38292020-02-13 Patrick Palka <ppalka@redhat.com> 3830 3831 * include/Makefile.am: Add <bits/ranges_uninitialized.h>. 3832 * include/Makefile.in: Regenerate. 3833 * include/bits/ranges_uninitialized.h: New header. 3834 * include/std/memory: Include it. 3835 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New 3836 test. 3837 * .../uninitialized_copy/constrained.cc: New test. 3838 * .../uninitialized_default_construct/constrained.cc: New test. 3839 * .../uninitialized_fill/constrained.cc: New test. 3840 * .../uninitialized_move/constrained.cc: New test. 3841 * .../uninitialized_value_construct/constrained.cc: New test. 3842 3843 * include/Makefile.am: Add bits/ranges_algobase.h 3844 * include/Makefile.in: Regenerate. 3845 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor 3846 existing #includes. 3847 (__detail::__is_normal_iterator, __detail::is_reverse_iterator, 3848 __detail::__is_move_iterator, copy_result, move_result, 3849 __equal, equal, copy_result, move_result, move_backward_result, 3850 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy, 3851 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n, 3852 fill): Split out into ... 3853 * bits/range_algobase.h: ... this new header. 3854 38552020-02-12 Patrick Palka <ppalka@redhat.com> 3856 3857 LWG 3389 and LWG 3390 3858 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when 3859 constructing the move_iterator with __i. 3860 (counted_iterator::counted_iterator): Use std::move when initializing 3861 M_current with __i. 3862 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test. 3863 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test. 3864 38652020-02-12 Sandra Loosemore <sandra@codesourcery.com> 3866 3867 PR libstdc++/79193 3868 PR libstdc++/88999 3869 3870 * configure: Regenerated. 3871 38722020-02-12 François Dumont <fdumont@gcc.gnu.org> 3873 3874 * include/bits/hashtable.h 3875 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add 3876 missing std namespace qualification to forward call. 3877 38782020-02-09 Jonathan Wakely <jwakely@redhat.com> 3879 3880 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix 3881 comment. 3882 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise. 3883 3884 * include/std/ranges: Fix non-ASCII characters in comment. 3885 3886 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require 3887 equality comparison to be valid and return bool. 3888 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison. 3889 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check 3890 type with ambiguous conversion to fundamental types. 3891 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise. 3892 38932020-02-07 Jonathan Wakely <jwakely@redhat.com> 3894 3895 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t): 3896 Use remove_cvref_t. 3897 (readable_traits): Rename to indirectly_readable_traits. 3898 (readable): Rename to indirectly_readable. 3899 (writable): Rename to indirectly_writable. 3900 (__detail::__iter_exchange_move): Do not use remove_reference_t. 3901 (indirectly_swappable): Adjust requires expression parameter types. 3902 expression. 3903 * include/bits/ranges_algo.h (ranges::transform, ranges::replace) 3904 (ranges::replace_if, ranges::generate_n, ranges::generate) 3905 (ranges::remove): Use new name for writable. 3906 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow): 3907 Use new name for readable. 3908 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use 3909 new name for readable_traits. 3910 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise. 3911 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for 3912 new definition of indirectly_readable. 3913 3914 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change 3915 to take parameters of common_iterator, instead of the common_iterator 3916 type itself. Fix argument for __common_iter_has_arrow constraint. 3917 (iterator_traits<common_iterator<I, S>>::pointer): Adjust. 3918 39192020-02-07 Jonathan Wakely <jwakely@redhat.com> 3920 3921 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body 3922 warning. 3923 (basic_istream_view::_Iterator::operator++()): Add missing return. 3924 39252020-02-07 Patrick Palka <ppalka@redhat.com> 3926 3927 * include/bits/ranges_algo.h: Remove extraneous &&. 3928 3929 * include/std/ranges (ranges::__detail::__stream_extractable, 3930 ranges::basic_istream_view, ranges::istream_view): Define. 3931 * testsuite/std/ranges/istream_view: New test. 3932 3933 Implement C++20 range adaptors 3934 * include/std/ranges: Include <bits/refwrap.h> and <tuple>. 3935 (subrange::_S_store_size): Mark as const instead of constexpr to 3936 avoid what seems to be a bug in GCC. 3937 (__detail::__box): Give it defaulted copy and move constructors. 3938 (ranges::views::_Single::operator()): Mark constexpr. 3939 (ranges::views::_Iota::operator()): Mark constexpr. 3940 (__detail::Empty): Define. 3941 (ranges::views::__closure::_RangeAdaptor, 3942 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view, 3943 ranges::views::all, ranges::__detail::find_if, 3944 ranges::__detail::find_if_not, ranges::__detail::mismatch, 3945 ranges::detail::min, filter_view, ranges::views::filter, transform_view, 3946 ranges::views::transform, take_view, ranges::views::take, 3947 take_while_view, ranges::views::take_while, drop_view, 3948 ranges::views::drop, join_view, ranges::views::join, 3949 __detail::require_constant, __detail::tiny_range, split_view, 3950 ranges::views::split, ranges::views::_Counted, ranges::views::counted, 3951 common_view, ranges::views::common, reverse_view, 3952 ranges::views::reverse, 3953 ranges::views::__detail::__is_reversible_subrange, 3954 ranges::views::__detail::__is_reverse_view, reverse_view, 3955 ranges::views::reverse, __detail::__has_tuple_element, elements_view, 3956 ranges::views::elements, ranges::views::keys, ranges::views::values): 3957 Define. 3958 (views): Alias for ranges::views. 3959 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>, 3960 tuple_element<1, ranges::subrange>): New partial specializations. 3961 * testsuite/std/ranges/adaptors/all.cc: New test. 3962 * testsuite/std/ranges/adaptors/common.cc: Likewise. 3963 * testsuite/std/ranges/adaptors/counted.cc: Likewise. 3964 * testsuite/std/ranges/adaptors/drop.cc: Likewise. 3965 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise. 3966 * testsuite/std/ranges/adaptors/elements.cc: Likewise. 3967 * testsuite/std/ranges/adaptors/filter.cc: Likewise. 3968 * testsuite/std/ranges/adaptors/join.cc: Likewise. 3969 * testsuite/std/ranges/adaptors/reverse.cc: Likewise. 3970 * testsuite/std/ranges/adaptors/split.cc: Likewise. 3971 * testsuite/std/ranges/adaptors/take.cc: Likewise. 3972 * testsuite/std/ranges/adaptors/take_while.cc: Likewise. 3973 * testsuite/std/ranges/adaptors/transform.cc: Likewise. 3974 39752020-02-07 Jonathan Wakely <jwakely@redhat.com> 3976 3977 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying 3978 type of enumerations and comparison category types. 3979 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type. 3980 (__cmp_cat::_Ncmp::unordered): Change value to 2. 3981 (partial_ordering::_M_value, weak_ordering::_M_value) 3982 (strong_ordering::_M_value): Change type to __cmp_cat::type. 3983 (partial_ordering::_M_is_ordered): Remove data member. 3984 (partial_ordering): Use second bit of _M_value for unordered. Adjust 3985 comparison operators. 3986 (weak_ordering::operator partial_ordering): Simplify to remove 3987 branches. 3988 (operator<=>(unspecified, weak_ordering)): Likewise. 3989 (strong_ordering::operator partial_ordering): Likewise. 3990 (strong_ordering::operator weak_ordering): Likewise. 3991 (operator<=>(unspecified, strong_ordering)): Likewise. 3992 * testsuite/18_support/comparisons/categories/partialord.cc: New test. 3993 * testsuite/18_support/comparisons/categories/strongord.cc: New test. 3994 * testsuite/18_support/comparisons/categories/weakord.cc: New test. 3995 3996 * include/std/ranges (iota_view::_Iterator): Fix typo in name of 3997 __cpp_lib_three_way_comparison macro and use deduced return type for 3998 operator<=>. 3999 * testsuite/std/ranges/iota/iterator.cc: New test. 4000 40012020-02-07 Patrick Palka <ppalka@redhat.com> 4002 Jonathan Wakely <jwakely@redhat.com> 4003 4004 Implement C++20 constrained algorithms 4005 * include/Makefile.am: Add new header. 4006 * include/Makefile.in: Regenerate. 4007 * include/std/algorithm: Include <bits/ranges_algo.h>. 4008 * include/bits/ranges_algo.h: New file. 4009 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test. 4010 * testsuite/25_algorithms/all_of/constrained.cc: New test. 4011 * testsuite/25_algorithms/any_of/constrained.cc: New test. 4012 * testsuite/25_algorithms/binary_search/constrained.cc: New test. 4013 * testsuite/25_algorithms/copy/constrained.cc: New test. 4014 * testsuite/25_algorithms/copy_backward/constrained.cc: New test. 4015 * testsuite/25_algorithms/copy_if/constrained.cc: New test. 4016 * testsuite/25_algorithms/copy_n/constrained.cc: New test. 4017 * testsuite/25_algorithms/count/constrained.cc: New test. 4018 * testsuite/25_algorithms/count_if/constrained.cc: New test. 4019 * testsuite/25_algorithms/equal/constrained.cc: New test. 4020 * testsuite/25_algorithms/equal_range/constrained.cc: New test. 4021 * testsuite/25_algorithms/fill/constrained.cc: New test. 4022 * testsuite/25_algorithms/fill_n/constrained.cc: New test. 4023 * testsuite/25_algorithms/find/constrained.cc: New test. 4024 * testsuite/25_algorithms/find_end/constrained.cc: New test. 4025 * testsuite/25_algorithms/find_first_of/constrained.cc: New test. 4026 * testsuite/25_algorithms/find_if/constrained.cc: New test. 4027 * testsuite/25_algorithms/find_if_not/constrained.cc: New test. 4028 * testsuite/25_algorithms/for_each/constrained.cc: New test. 4029 * testsuite/25_algorithms/generate/constrained.cc: New test. 4030 * testsuite/25_algorithms/generate_n/constrained.cc: New test. 4031 * testsuite/25_algorithms/heap/constrained.cc: New test. 4032 * testsuite/25_algorithms/includes/constrained.cc: New test. 4033 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test. 4034 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test. 4035 * testsuite/25_algorithms/is_permutation/constrained.cc: New test. 4036 * testsuite/25_algorithms/is_sorted/constrained.cc: New test. 4037 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test. 4038 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New 4039 test. 4040 * testsuite/25_algorithms/lower_bound/constrained.cc: New test. 4041 * testsuite/25_algorithms/max/constrained.cc: New test. 4042 * testsuite/25_algorithms/max_element/constrained.cc: New test. 4043 * testsuite/25_algorithms/merge/constrained.cc: New test. 4044 * testsuite/25_algorithms/min/constrained.cc: New test. 4045 * testsuite/25_algorithms/min_element/constrained.cc: New test. 4046 * testsuite/25_algorithms/minmax/constrained.cc: New test. 4047 * testsuite/25_algorithms/minmax_element/constrained.cc: New test. 4048 * testsuite/25_algorithms/mismatch/constrained.cc: New test. 4049 * testsuite/25_algorithms/move/constrained.cc: New test. 4050 * testsuite/25_algorithms/move_backward/constrained.cc: New test. 4051 * testsuite/25_algorithms/next_permutation/constrained.cc: New test. 4052 * testsuite/25_algorithms/none_of/constrained.cc: New test. 4053 * testsuite/25_algorithms/nth_element/constrained.cc: New test. 4054 * testsuite/25_algorithms/partial_sort/constrained.cc: New test. 4055 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test. 4056 * testsuite/25_algorithms/partition/constrained.cc: New test. 4057 * testsuite/25_algorithms/partition_copy/constrained.cc: New test. 4058 * testsuite/25_algorithms/partition_point/constrained.cc: New test. 4059 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test. 4060 * testsuite/25_algorithms/remove/constrained.cc: New test. 4061 * testsuite/25_algorithms/remove_copy/constrained.cc: New test. 4062 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test. 4063 * testsuite/25_algorithms/remove_if/constrained.cc: New test. 4064 * testsuite/25_algorithms/replace/constrained.cc: New test. 4065 * testsuite/25_algorithms/replace_copy/constrained.cc: New test. 4066 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test. 4067 * testsuite/25_algorithms/replace_if/constrained.cc: New test. 4068 * testsuite/25_algorithms/reverse/constrained.cc: New test. 4069 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test. 4070 * testsuite/25_algorithms/rotate/constrained.cc: New test. 4071 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test. 4072 * testsuite/25_algorithms/search/constrained.cc: New test. 4073 * testsuite/25_algorithms/search_n/constrained.cc: New test. 4074 * testsuite/25_algorithms/set_difference/constrained.cc: New test. 4075 * testsuite/25_algorithms/set_intersection/constrained.cc: New test. 4076 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New 4077 test. 4078 * testsuite/25_algorithms/set_union/constrained.cc: New test. 4079 * testsuite/25_algorithms/shuffle/constrained.cc: New test. 4080 * testsuite/25_algorithms/sort/constrained.cc: New test. 4081 * testsuite/25_algorithms/stable_partition/constrained.cc: New test. 4082 * testsuite/25_algorithms/stable_sort/constrained.cc: New test. 4083 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test. 4084 * testsuite/25_algorithms/transform/constrained.cc: New test. 4085 * testsuite/25_algorithms/unique/constrained.cc: New test. 4086 * testsuite/25_algorithms/unique_copy/constrained.cc: New test. 4087 * testsuite/25_algorithms/upper_bound/constrained.cc: New test. 4088 40892020-02-06 Jonathan Wakely <jwakely@redhat.com> 4090 4091 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR 4092 number in comment. Fix indentation. 4093 4094 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove 4095 redundant _GLIBCXX20_CONSTEXPR. 4096 4097 * include/std/ranges (viewable_range): Replace decay_t with 4098 remove_cvref_t (LWG 3375). 4099 41002020-02-05 Jonathan Wakely <jwakely@redhat.com> 4101 4102 * include/bits/iterator_concepts.h (iter_reference_t) 4103 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t): 4104 Remove workarounds for PR c++/67704. 4105 * testsuite/24_iterators/aliases.cc: New test. 4106 41072020-02-05 Patrick Palka <ppalka@redhat.com> 4108 4109 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i 4110 when initializing _M_current. 4111 (move_iterator::base): Split into two overloads differing in 4112 ref-qualifiers as in P1207R4 for C++20. 4113 41142020-02-04 Jonathan Wakely <jwakely@redhat.com> 4115 4116 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after 4117 use. 4118 4119 PR libstdc++/93562 4120 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define. 4121 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it. 4122 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test. 4123 41242020-02-01 Andrew Burgess <andrew.burgess@embecosm.com> 4125 4126 * configure: Regenerate. 4127 41282020-01-31 Patrick Palka <ppalka@redhat.com> 4129 4130 * testsuite/24_iterators/range_operations/distance.cc: Do not assume 4131 test_range::end() returns the same type as test_range::begin(). 4132 * testsuite/24_iterators/range_operations/next.cc: Likewise. 4133 * testsuite/24_iterators/range_operations/prev.cc: Likewise. 4134 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end): 4135 Always return a sentinel<I>. 4136 41372020-01-29 Jonathan Wakely <jwakely@redhat.com> 4138 4139 PR libstdc++/92895 4140 * include/std/stop_token (stop_token::stop_possible()): Call new 4141 _M_stop_possible() function. 4142 (stop_token::stop_requested()): Do not use stop_possible(). 4143 (stop_token::binary_semaphore): New class, as temporary stand-in for 4144 std::binary_semaphore. 4145 (stop_token::_Stop_cb::_M_callback): Add noexcept to type. 4146 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done): 4147 New data members for symchronization with stop_callback destruction. 4148 (stop_token::_Stop_cb::_Stop_cb): Make non-template. 4149 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute): 4150 Remove. 4151 (stop_token::_Stop_cb::_M_run): New member function. 4152 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx): 4153 Remove. 4154 (stop_token::_Stop_state::_M_owners): New data member to track 4155 reference count for ownership. 4156 (stop_token::_Stop_state::_M_value): New data member combining a 4157 spinlock, the stop requested flag, and the reference count for 4158 associated stop_source objects. 4159 (stop_token::_Stop_state::_M_requester): New data member for 4160 synchronization with stop_callback destruction. 4161 (stop_token::_Stop_state::_M_stop_possible()): New member function. 4162 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit 4163 of _M_value. 4164 (stop_token::_Stop_state::_M_add_owner) 4165 (stop_token::_Stop_state::_M_release_ownership) 4166 (stop_token::_Stop_state::_M_add_ssrc) 4167 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for 4168 updating reference counts. 4169 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) 4170 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) 4171 (stop_token::_Stop_state::_M_try_lock) 4172 (stop_token::_Stop_state::_M_try_lock_and_stop) 4173 (stop_token::_Stop_state::_M_do_try_lock): New member functions for 4174 managing spinlock. 4175 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to 4176 read and update state. Release lock while running callbacks. Use new 4177 data members to synchronize with callback destruction. 4178 (stop_token::_Stop_state::_M_remove_callback): Likewise. 4179 (stop_token::_Stop_state::_M_register_callback): Use atomic operations 4180 to read and update state. 4181 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state, 4182 replacing shared_ptr. 4183 (stop_source::stop_source(const stop_source&)): Update reference count. 4184 (stop_source::operator=(const stop_source&)): Likewise. 4185 (stop_source::~stop_source()): Likewise. 4186 (stop_source::stop_source(stop_source&&)): Define as defaulted. 4187 (stop_source::operator=(stop_source&&)): Establish postcondition on 4188 parameter. 4189 (stop_callback): Enforce preconditions on template parameter. Replace 4190 base class with data member of new _Cb_impl type. 4191 (stop_callback::stop_callback(const stop_token&, Cb&&)) 4192 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race. 4193 (stop_callback::_Cb_impl): New type wrapping _Callback member and 4194 defining the _S_execute member function. 4195 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New 4196 test. 4197 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test. 4198 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test. 4199 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc: 4200 New test. 4201 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New 4202 test. 4203 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test. 4204 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test. 4205 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New 4206 test. 4207 4208 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use 4209 three_way_comparable_with. 4210 (__detail::__3way_cmp_with): Remove workaround for fixed bug. 4211 (compare_three_way::operator()): Remove redundant constraint from 4212 requires-clause. 4213 (__detail::_Synth3way::operator()): Use three_way_comparable_with 4214 instead of workaround. 4215 * testsuite/18_support/comparisons/object/93479.cc: Prune extra 4216 output due to simplified constraints on compare_three_way::operator(). 4217 4218 PR libstdc++/93479 4219 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid. 4220 * testsuite/18_support/comparisons/object/93479.cc: New test. 4221 4222 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end() 4223 returns the same type as test_range::begin(). Add comments. 4224 * testsuite/std/ranges/access/rbegin.cc: Likewise. 4225 * testsuite/std/ranges/access/rend.cc: Likewise. 4226 * testsuite/std/ranges/range.cc: Do not assume the sentinel for 4227 test_range is the same as its iterator type. 4228 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add 4229 operator- overloads to satisfy sized_sentinel_for when the iterator 4230 satisfies random_access_iterator. 4231 42322020-01-28 Jonathan Wakely <jwakely@redhat.com> 4233 4234 PR libstdc++/93470 4235 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict 4236 static assertion to object types. 4237 4238 PR libstdc++/93325 4239 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for 4240 clock_gettime instead of explicit glibc version check. 4241 * configure: Regenerate. 4242 42432020-01-28 Martin Liska <mliska@suse.cz> 4244 4245 PR libstdc++/93478 4246 * include/std/atomic: Fix typo. 4247 * include/std/optional: Likewise. 4248 42492020-01-27 Andrew Burgess <andrew.burgess@embecosm.com> 4250 4251 * configure: Regenerate. 4252 42532020-01-27 Jonathan Wakely <jwakely@redhat.com> 4254 4255 PR libstdc++/93426 4256 * include/std/span (span): Fix deduction guide. 4257 * testsuite/23_containers/span/deduction.cc: New test. 4258 42592020-01-24 Jonathan Wakely <jwakely@redhat.com> 4260 4261 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type. 4262 (__cmp_cat::_Ord::equivalent): Add enumerator. 4263 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less 4264 and greater. 4265 (partial_ordering, weak_ordering, strong_ordering): Remove 4266 constructors taking __cmp_cat::_Eq parameters. Use renamed 4267 enumerators. 4268 42692020-01-24 Maciej W. Rozycki <macro@wdc.com> 4270 4271 * acinclude.m4: Handle `--with-toolexeclibdir='. 4272 * Makefile.in: Regenerate. 4273 * aclocal.m4: Regenerate. 4274 * configure: Regenerate. 4275 * doc/Makefile.in: Regenerate. 4276 * include/Makefile.in: Regenerate. 4277 * libsupc++/Makefile.in: Regenerate. 4278 * po/Makefile.in: Regenerate. 4279 * python/Makefile.in: Regenerate. 4280 * src/Makefile.in: Regenerate. 4281 * src/c++11/Makefile.in: Regenerate. 4282 * src/c++17/Makefile.in: Regenerate. 4283 * src/c++98/Makefile.in: Regenerate. 4284 * src/filesystem/Makefile.in: Regenerate. 4285 * testsuite/Makefile.in: Regenerate. 4286 42872020-01-23 Alexandre Oliva <oliva@adacore.com> 4288 4289 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros. 4290 * configure: Rebuild. 4291 4292 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t. 4293 42942020-01-23 Jonathan Wakely <jwakely@redhat.com> 4295 4296 PR libstdc++/91947 4297 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify 4298 rule. 4299 * include/Makefile.in: Regenerate. 4300 43012020-01-20 Jonathan Wakely <jwakely@redhat.com> 4302 4303 * doc/xml/faq.xml: Fix grammar. 4304 * doc/xml/manual/appendix_contributing.xml: Improve instructions. 4305 * doc/xml/manual/spine.xml: Update copyright years. 4306 * doc/html/*: Regenerate. 4307 43082020-01-19 Eric S. Raymond <esr@thyrsus.com> 4309 4310 * doc/xml/faq.xml: Update for SVN -> Git transition. 4311 * doc/xml/manual/appendix_contributing.xml: Likewise. 4312 * doc/xml/manual/status_cxx1998.xml: Likewise. 4313 * doc/xml/manual/status_cxx2011.xml: Likewise. 4314 * doc/xml/manual/status_cxx2014.xml: Likewise. 4315 * doc/xml/manual/status_cxx2017.xml: Likewise. 4316 * doc/xml/manual/status_cxx2020.xml: Likewise. 4317 * doc/xml/manual/status_cxxtr1.xml: Likewise. 4318 * doc/xml/manual/status_cxxtr24733.xml: Likewise. 4319 43202020-01-18 Iain Sandoe <iain@sandoe.co.uk> 4321 4322 * include/Makefile.am: Add coroutine to the std set. 4323 * include/Makefile.in: Regenerated. 4324 * include/std/coroutine: New file. 4325 43262020-01-17 Jonathan Wakely <jwakely@redhat.com> 4327 4328 PR libstdc++/92376 4329 * include/bits/c++config: Only do PSTL config when the header is 4330 present, to fix freestanding. 4331 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation 4332 functions if they were detected by configure. 4333 43342020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de> 4335 Matthew Bauer <mjbauer95@gmail.com> 4336 Jonathan Wakely <jwakely@redhat.com> 4337 4338 PR bootstrap/64271 (partial) 4339 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type 4340 to unsigned short. 4341 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit) 4342 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync 4343 definitions with NetBSD upstream. 4344 (ctype_base::blank): Use _CTYPE_BL. 4345 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove 4346 Declaration. 4347 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_. 4348 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char 4349 parameters to unsigned char. 4350 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise. 4351 43522020-01-16 François Dumont <fdumont@gcc.gnu.org> 4353 4354 PR libstdc++/91263 4355 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend. 4356 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>. 4357 (_Equality_base): Remove. 4358 (_Equality<>::_M_equal): Review implementation. Use 4359 std::is_permutation. 4360 * testsuite/23_containers/unordered_multiset/operators/1.cc 4361 (Hash, Equal, test02, test03): New. 4362 * testsuite/23_containers/unordered_set/operators/1.cc 4363 (Hash, Equal, test02, test03): New. 4364 43652020-01-15 Jonathan Wakely <jwakely@redhat.com> 4366 4367 PR libstdc++/93267 4368 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type): 4369 Move here from <bits/range_access.h> and define using __int128 when 4370 available. 4371 (__is_integer_like, __is_signed_integer_like): Move here from 4372 <bits/range_access.h>. 4373 (weakly_incrementable): Use __is_signed_integer_like. 4374 * include/bits/range_access.h (__max_diff_type, __max_size_type) 4375 (__is_integer_like, __is_signed_integer_like): Move to 4376 <bits/iterator_concepts.h>. 4377 (__make_unsigned_like_t): Move here from <ranges>. 4378 * include/std/ranges (__make_unsigned_like_t): Move to 4379 <bits/range_access.h>. 4380 (iota_view): Replace using-directive with using-declarations. 4381 * testsuite/std/ranges/iota/93267.cc: New test. 4382 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory. 4383 43842020-01-13 Jonathan Wakely <jwakely@redhat.com> 4385 4386 PR libstdc++/93244 4387 * include/bits/fs_path.h (path::generic_string<C,A>) 4388 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash. 4389 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check 4390 root-dir is converted to forward slash in generic pathname. 4391 * testsuite/27_io/filesystem/path/generic/utf.cc: New test. 4392 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test. 4393 4394 PR libstdc++/58605 4395 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization): 4396 Define. 4397 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>) 4398 (__atomic_float): Add default member initializer for C++20. 4399 * include/std/atomic (atomic): Likewise. 4400 (atomic::atomic()): Remove noexcept-specifier on default constructor. 4401 * include/std/version (__cpp_lib_atomic_value_initialization): Define. 4402 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line 4403 number. 4404 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise. 4405 * testsuite/29_atomics/atomic/cons/value_init.cc: New test. 4406 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test. 4407 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust 4408 expected result for is_trivially_default_constructible. 4409 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise. 4410 * testsuite/29_atomics/atomic_float/value_init.cc: New test. 4411 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise. 4412 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise. 4413 * testsuite/29_atomics/atomic_integral/cons/value_init.cc 4414 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust 4415 expected results for is_trivially_default_constructible. 4416 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add 4417 new test generator. 4418 44192020-01-10 Jonathan Wakely <jwakely@redhat.com> 4420 4421 * testsuite/util/testsuite_iterators.h: Improve comment. 4422 4423 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11 4424 initialization syntax. 4425 4426 PR libstdc++/92285 4427 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type 4428 of base class independent of __cplusplus value. 4429 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the 4430 type defined in the base class 4431 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test. 4432 * testsuite/24_iterators/istreambuf_iterator/requirements/ 4433 base_classes.cc: Adjust expected base class for C++98. 4434 44352020-01-09 Olivier Hainque <hainque@adacore.com> 4436 4437 * doc/xml/manual/appendix_contributing.xml: Document _C2 4438 as a reserved identifier, by VxWorks. 4439 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2. 4440 * include/bits/stl_multimap.h: Likewise. 4441 44422020-01-09 Jonathan Wakely <jwakely@redhat.com> 4443 4444 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==) 4445 (_ExtPtr_allocator::operator!=): Add missing const qualifiers. 4446 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add 4447 partial specialization to disambiguate the two constrained 4448 specializations. 4449 4450 * include/experimental/type_traits (experimental::is_pod_v): Disable 4451 -Wdeprecated-declarations warnings around reference to std::is_pod. 4452 * include/std/type_traits (is_pod_v): Likewise. 4453 * testsuite/18_support/max_align_t/requirements/2.cc: Also check 4454 is_standard_layout and is_trivial. Do not check is_pod for C++20. 4455 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc: 4456 Add -Wno-deprecated for C++20. 4457 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise. 4458 * testsuite/20_util/is_pod/value.cc: Likewise. 4459 * testsuite/experimental/type_traits/value.cc: Likewise. 4460 44612020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com> 4462 4463 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro. 4464 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20. 4465 * testuite/20_util/is_pod/deprecated-2a.cc: New test. 4466 44672020-01-09 Jonathan Wakely <jwakely@redhat.com> 4468 4469 PR libstdc++/93205 4470 * include/bits/random.h (operator>>): Check stream operation succeeds. 4471 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type 4472 typedefs. 4473 (operator>>): Remove redundant __istream_type typedefs. Check stream 4474 operations succeed. 4475 (__extract_params): New function to fill a vector from a stream. 4476 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line. 4477 4478 PR libstdc++/93208 4479 * config/abi/pre/gnu.ver: Add new exports. 4480 * include/std/memory_resource (memory_resource::~memory_resource()): 4481 Do not define inline. 4482 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise. 4483 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()): 4484 Define. 4485 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define. 4486 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test. 4487 44882020-01-09 François Dumont <fdumont@gcc.gnu.org> 4489 4490 PR libstdc++/92124 4491 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New 4492 template alias. 4493 (_Hashtable<>::__fwd_value_for): New. 4494 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template 4495 parameter. 4496 (_Hashtable<>::_M_assign<>): Add _Ht template parameter. 4497 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt. 4498 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept 4499 with std::move. 4500 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt. 4501 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)): 4502 Adapt. 4503 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)): 4504 Adapt. 4505 * testsuite/23_containers/unordered_set/92124.cc: New. 4506 45072020-01-08 Jonathan Wakely <jwakely@redhat.com> 4508 4509 PR libstdc++/93201 4510 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more 4511 detailed error reporting for remove_all. Check result of recursive 4512 call before incrementing iterator. 4513 (remove_all(const path&), remove_all(const path&, error_code&)): Use 4514 do_remove_all. 4515 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check 4516 result of recursive call before incrementing iterator. 4517 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors 4518 are reported correctly. 4519 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise. 4520 45212020-01-07 Thomas Rodgers <trodgers@redhat.com> 4522 4523 * include/std/condition_variable 4524 (condition_variable_any::wait_on): Rename to match current draft 4525 standard. 4526 (condition_variable_any::wait_on_until): Likewise. 4527 (condition_variable_any::wait_on_for): Likewise. 4528 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: 4529 Adjust tests to account for renamed methods. 4530 45312020-01-07 François Dumont <fdumont@gcc.gnu.org> 4532 4533 PR libstdc++/92124 4534 * include/bits/stl_tree.h 4535 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace 4536 std::move_if_noexcept by std::move. 4537 * testsuite/23_containers/map/92124.cc: New. 4538 * testsuite/23_containers/set/92124.cc: New. 4539 45402020-01-06 Jonathan Wakely <jwakely@redhat.com> 4541 4542 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254). 4543 (stop_source): Likewise (LWG 3362). 4544 * testsuite/30_threads/stop_token/stop_source.cc: Test equality 4545 comparisons. 4546 4547 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp) 4548 (lexicographical_compare_three_way): Do not depend on 4549 __cpp_lib_concepts. 4550 * include/std/version (__cpp_lib_three_way_comparison): Only define 4551 when __cpp_lib_concepts is defined. 4552 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. 4553 45542020-01-03 Jonathan Wakely <jwakely@redhat.com> 4555 4556 * include/bits/stl_algobase.h (lexicographical_compare_three_way): 4557 Only define four-argument overload when __cpp_lib_concepts is defined. 4558 45592020-01-01 John David Anglin <danglin@gcc.gnu.org> 4560 4561 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 4562 45632020-01-01 Jakub Jelinek <jakub@redhat.com> 4564 4565 Update copyright years. 4566 4567Copyright (C) 2020 Free Software Foundation, Inc. 4568 4569Copying and distribution of this file, with or without modification, 4570are permitted in any medium without royalty provided the copyright 4571notice and this notice are preserved. 4572