ChangeLog revision 1.1.1.20 1 2021-04-08 Release Manager
2
3 * GCC 10.3.0 released.
4
5 2021-04-01 Jonathan Wakely <jwakely (a] redhat.com>
6
7 Backported from master:
8 2021-02-14 Jonathan Wakely <jwakely (a] redhat.com>
9
10 PR libstdc++/99096
11 * testsuite/util/testsuite_fs.h: Always include <unistd.h>.
12
13 2021-04-01 Jonathan Wakely <jwakely (a] redhat.com>
14
15 Backported from master:
16 2020-12-17 Jonathan Wakely <jwakely (a] 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
25 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
26
27 Backported from master:
28 2020-11-30 Jonathan Wakely <jwakely (a] 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
36 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
37
38 Backported from master:
39 2020-11-26 Jonathan Wakely <jwakely (a] 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
64 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
65
66 Backported from master:
67 2020-08-11 Jonathan Wakely <jwakely (a] 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
74 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
75
76 Backported from master:
77 2020-06-19 Jonathan Wakely <jwakely (a] 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
84 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
85
86 Backported from master:
87 2020-11-25 Jonathan Wakely <jwakely (a] redhat.com>
88
89 * testsuite/17_intro/names.cc: Do not test 'v' on AIX.
90
91 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
92
93 Backported from master:
94 2020-07-30 Jonathan Wakely <jwakely (a] 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
100 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
101
102 Backported from master:
103 2020-09-01 Jonathan Wakely <jwakely (a] 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
119 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
120
121 Backported from master:
122 2020-08-27 Jonathan Wakely <jwakely (a] 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
137 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
138
139 Backported from master:
140 2020-09-03 Jonathan Wakely <jwakely (a] 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
147 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
148
149 Backported from master:
150 2020-07-31 Jonathan Wakely <jwakely (a] 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
157 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
158
159 Backported from master:
160 2020-07-31 Jonathan Wakely <jwakely (a] 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
167 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
168
169 Backported from master:
170 2020-06-09 Jonathan Wakely <jwakely (a] 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
176 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
177
178 Backported from master:
179 2020-06-04 Jonathan Wakely <jwakely (a] 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
193 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
194
195 Backported from master:
196 2020-06-16 Jonathan Wakely <jwakely (a] redhat.com>
197
198 * include/std/atomic (atomic): Add static assertions.
199 * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
200
201 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
202
203 Backported from master:
204 2020-06-09 Jonathan Wakely <jwakely (a] redhat.com>
205
206 * include/bits/stl_iterator.h (move_iterator::operator=): Define.
207 * testsuite/24_iterators/move_iterator/dr3265.cc: New test.
208
209 2021-03-29 Paul Keir <paul.keir (a] uws.ac.uk>
210
211 Backported from master:
212 2020-06-15 Paul Keir <paul.keir (a] 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
219 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
220
221 Backported from master:
222 2020-07-31 Jonathan Wakely <jwakely (a] 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
227 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
228
229 Backported from master:
230 2020-08-11 Jonathan Wakely <jwakely (a] 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
236 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
237
238 Backported from master:
239 2020-11-26 Jonathan Wakely <jwakely (a] 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
244 2021-03-29 Moritz Sichert <sichert (a] in.tum.de>
245
246 Backported from master:
247 2021-03-23 Moritz Sichert <sichert (a] 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
255 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
256
257 Backported from master:
258 2021-03-22 Jonathan Wakely <jwakely (a] 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
272 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
273
274 Backported from master:
275 2021-03-11 Jonathan Wakely <jwakely (a] 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
281 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
282
283 Backported from master:
284 2021-03-11 Jonathan Wakely <jwakely (a] 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
294 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
295
296 Backported from master:
297 2021-03-11 Jonathan Wakely <jwakely (a] 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
303 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
304
305 Backported from master:
306 2021-03-10 Jonathan Wakely <jwakely (a] 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
320 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
321
322 Backported from master:
323 2021-02-12 Jonathan Wakely <jwakely (a] 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
337 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
338
339 Backported from master:
340 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
341
342 * testsuite/util/testsuite_fs.h (nonexistent_path): Add
343 random number to the path.
344
345 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
346
347 Backported from master:
348 2021-02-12 Jonathan Wakely <jwakely (a] 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
356 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
357
358 Backported from master:
359 2021-02-12 Jonathan Wakely <jwakely (a] 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
372 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
373
374 Backported from master:
375 2020-10-29 Jonathan Wakely <jwakely (a] 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
416 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
417
418 Backported from master:
419 2021-02-12 Jonathan Wakely <jwakely (a] 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
427 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
428
429 Backported from master:
430 2021-02-11 Jonathan Wakely <jwakely (a] 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
439 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
440
441 Backported from master:
442 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
443
444 PR libstdc++/88881
445 * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround.
446
447 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
448
449 Backported from master:
450 2021-02-10 Jonathan Wakely <jwakely (a] redhat.com>
451
452 PR libstdc++/88881
453 * src/c++17/fs_ops.cc (fs::status): Re-enable workaround.
454
455 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
456
457 Backported from master:
458 2021-02-10 Jonathan Wakely <jwakely (a] 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
466 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
467
468 Backported from master:
469 2021-02-10 Jonathan Wakely <jwakely (a] 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
480 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
481
482 Backported from master:
483 2021-02-03 Jonathan Wakely <jwakely (a] 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
496 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
497
498 Backported from master:
499 2020-12-16 Jonathan Wakely <jwakely (a] 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
509 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
510
511 Backported from master:
512 2020-12-16 Jonathan Wakely <jwakely (a] 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
524 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
525
526 Backported from master:
527 2020-12-10 Jonathan Wakely <jwakely (a] redhat.com>
528
529 PR libstdc++/98226
530 * include/std/bit (__countl_one, __countr_one): Remove redundant
531 branches.
532
533 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
534
535 Backported from master:
536 2020-11-09 Jonathan Wakely <jwakely (a] redhat.com>
537
538 * include/std/bit (__popcount): Remove redundant check for zero.
539
540 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
541
542 Backported from master:
543 2020-10-30 Jonathan Wakely <jwakely (a] 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
555 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
556
557 Backported from master:
558 2020-10-29 Jonathan Wakely <jwakely (a] 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
565 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
566
567 Backported from master:
568 2020-10-08 Jonathan Wakely <jwakely (a] 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
579 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
580
581 Backported from master:
582 2020-10-08 Jonathan Wakely <jwakely (a] 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
591 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
592
593 Backported from master:
594 2020-10-07 Jonathan Wakely <jwakely (a] 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
600 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
601
602 Backported from master:
603 2020-09-21 Jonathan Wakely <jwakely (a] 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
610 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
611
612 Backported from master:
613 2020-09-21 Jonathan Wakely <jwakely (a] 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
622 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
623
624 Backported from master:
625 2020-10-28 Jonathan Wakely <jwakely (a] 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
634 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
635
636 Backported from master:
637 2020-10-27 Jonathan Wakely <jwakely (a] 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
648 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
649
650 Backported from master:
651 2020-09-10 Jonathan Wakely <jwakely (a] 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
656 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
657
658 Backported from master:
659 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
660
661 * include/bits/ranges_algobase.h (__equal_fn): Remove unused
662 typedef.
663
664 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
665
666 Backported from master:
667 2020-09-10 Jonathan Wakely <jwakely (a] 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
677 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
678
679 Backported from master:
680 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
681
682 * include/bits/fs_path.h (path::_List::type()): Avoid narrowing
683 conversion.
684
685 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
686
687 Backported from master:
688 2020-09-07 Jonathan Wakely <jwakely (a] redhat.com>
689
690 * include/std/ranges (__box): Simplify constraints as per LWG 3477.
691
692 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
693
694 Backported from master:
695 2020-08-24 Jonathan Wakely <jwakely (a] 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
701 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
702
703 Backported from master:
704 2020-08-11 Jonathan Wakely <jwakely (a] 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
711 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
712
713 Backported from master:
714 2020-08-10 Jonathan Wakely <jwakely (a] 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
720 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
721
722 Backported from master:
723 2020-10-27 Jonathan Wakely <jwakely (a] 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
728 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
729
730 Backported from master:
731 2020-10-27 Jonathan Wakely <jwakely (a] redhat.com>
732
733 * src/c++17/fs_dir.cc (fs::directory_iterator::operator*):
734 Add noexcept. Do not throw on precondition violation.
735
736 2021-03-19 Jakub Jelinek <jakub (a] redhat.com>
737
738 Backported from master:
739 2021-02-23 Jakub Jelinek <jakub (a] redhat.com>
740
741 PR libstdc++/99181
742 * testsuite/21_strings/char_traits/requirements/char/99181.cc: New
743 test.
744
745 2021-03-19 Jakub Jelinek <jakub (a] redhat.com>
746
747 Backported from master:
748 2021-02-23 Jakub Jelinek <jakub (a] 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
756 2021-02-09 Jonathan Wakely <jwakely (a] redhat.com>
757
758 Backported from master:
759 2021-02-09 Jonathan Wakely <jwakely (a] redhat.com>
760
761 PR libstdc++/99021
762 * include/std/coroutine (coroutine_handle<P>::from_address): Add
763 noexcept.
764
765 2021-01-13 Jonathan Wakely <jwakely (a] redhat.com>
766
767 PR libstdc++/98605
768 * include/std/mutex (call_once): Use NOLINT to suppress clang
769 analyzer warnings.
770
771 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
772
773 Backported from master:
774 2020-12-02 Jonathan Wakely <jwakely (a] 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
781 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
782
783 Backported from master:
784 2020-12-16 Jonathan Wakely <jwakely (a] 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
790 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
791
792 Backported from master:
793 2020-12-02 Jonathan Wakely <jwakely (a] 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
802 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
803
804 Backported from master:
805 2020-07-31 Jonathan Wakely <jwakely (a] redhat.com>
806
807 * testsuite/experimental/filesystem/filesystem_error/cons.cc:
808 Remove -std=gnu++17 option.
809
810 2021-01-08 Iain Sandoe <iain (a] sandoe.co.uk>
811
812 Backported from master:
813 2020-07-17 Iain Sandoe <iain (a] sandoe.co.uk>
814
815 * include/std/coroutine: Mark the methods of the
816 trivial awaitables as constexpr.
817
818 2021-01-03 Iain Sandoe <iain (a] sandoe.co.uk>
819 Jakub Jelinek <jakub (a] redhat.com>
820
821 PR target/97865
822 * configure: Regenerate.
823
824 2020-12-03 Jonathan Wakely <jwakely (a] redhat.com>
825
826 Backported from master:
827 2020-12-03 Jonathan Wakely <jwakely (a] 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
834 2020-12-01 Patrick Palka <ppalka (a] redhat.com>
835
836 Backported from master:
837 2020-10-12 Patrick Palka <ppalka (a] 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
849 2020-11-26 Jonathan Wakely <jwakely (a] redhat.com>
850
851 Backported from master:
852 2020-11-26 Jonathan Wakely <jwakely (a] redhat.com>
853
854 PR libstdc++/98001
855 * testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid
856 FILE* to constructor.
857
858 2020-11-25 Jonathan Wakely <jwakely (a] redhat.com>
859
860 Backported from master:
861 2020-11-25 Jonathan Wakely <jwakely (a] 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
869 2020-11-25 Jonathan Wakely <jwakely (a] redhat.com>
870
871 Backported from master:
872 2020-06-04 Jonathan Wakely <jwakely (a] 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
884 2020-11-24 Jonathan Wakely <jwakely (a] redhat.com>
885
886 Backported from master:
887 2020-10-02 Jonathan Wakely <jwakely (a] 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
892 2020-11-20 Jonathan Wakely <jwakely (a] redhat.com>
893
894 Backported from master:
895 2020-11-20 Jonathan Wakely <jwakely (a] 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
902 2020-11-20 Jonathan Wakely <jwakely (a] 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
908 2020-11-20 Jonathan Wakely <jwakely (a] redhat.com>
909
910 Backported from master:
911 2020-11-19 Jonathan Wakely <jwakely (a] 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
923 2020-11-18 Patrick Palka <ppalka (a] redhat.com>
924
925 Backported from master:
926 2020-11-18 Patrick Palka <ppalka (a] 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
934 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
935
936 Backported from master:
937 2020-10-06 Jonathan Wakely <jwakely (a] 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
946 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
947
948 Backported from master:
949 2020-08-24 Jonathan Wakely <jwakely (a] 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
954 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
955
956 Backported from master:
957 2020-09-10 Jonathan Wakely <jwakely (a] 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
963 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
964
965 Backported from master:
966 2020-06-15 Jonathan Wakely <jwakely (a] 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
974 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
975
976 Backported from master:
977 2020-11-17 Jonathan Wakely <jwakely (a] 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
984 2020-11-17 Patrick Palka <ppalka (a] redhat.com>
985
986 Backported from master:
987 2020-11-17 Patrick Palka <ppalka (a] 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
996 2020-11-16 Jonathan Wakely <jwakely (a] redhat.com>
997
998 Backported from master:
999 2020-11-13 Jonathan Wakely <jwakely (a] 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
1006 2020-11-16 Jonathan Wakely <jwakely (a] redhat.com>
1007
1008 Backported from master:
1009 2020-11-16 Jonathan Wakely <jwakely (a] 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
1016 2020-11-16 Jonathan Wakely <jwakely (a] redhat.com>
1017
1018 Backported from master:
1019 2020-11-12 Jonathan Wakely <jwakely (a] 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
1025 2020-11-13 Jonathan Wakely <jwakely (a] redhat.com>
1026
1027 Backported from master:
1028 2020-11-13 Jonathan Wakely <jwakely (a] 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
1041 2020-11-13 Jonathan Wakely <jwakely (a] 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
1048 2020-11-12 Jonathan Wakely <jwakely (a] redhat.com>
1049
1050 Backported from master:
1051 2020-08-20 Jonathan Wakely <jwakely (a] 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
1059 2020-11-12 Jonathan Wakely <jwakely (a] redhat.com>
1060
1061 Backported from master:
1062 2020-08-19 Jonathan Wakely <jwakely (a] redhat.com>
1063 Patrick Palka <ppalka (a] 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
1074 2020-11-12 Jonathan Wakely <jwakely (a] redhat.com>
1075
1076 Backported from master:
1077 2020-08-19 Jonathan Wakely <jwakely (a] 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
1089 2020-11-11 Paul Scharnofske <asynts (a] gmail.com>
1090
1091 Backported from master:
1092 2020-11-11 Paul Scharnofske <asynts (a] 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
1099 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
1100
1101 Backported from master:
1102 2020-11-05 Jonathan Wakely <jwakely (a] 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
1110 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
1111
1112 Backported from master:
1113 2020-11-05 Jonathan Wakely <jwakely (a] 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
1120 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
1121
1122 Backported from master:
1123 2020-10-10 Jonathan Wakely <jwakely (a] 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
1133 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
1134
1135 Backported from master:
1136 2020-11-04 Jonathan Wakely <jwakely (a] 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
1142 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
1143
1144 * doc/xml/manual/evolution.xml: Document new C++20 headers.
1145 * doc/html/*: Regenerate.
1146
1147 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
1148
1149 Backported from master:
1150 2020-06-01 Jonathan Wakely <jwakely (a] 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
1156 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
1157
1158 Backported from master:
1159 2020-06-01 Jonathan Wakely <jwakely (a] 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
1166 2020-10-29 Patrick Palka <ppalka (a] redhat.com>
1167
1168 Backported from master:
1169 2020-10-29 Patrick Palka <ppalka (a] 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
1174 2020-10-28 Patrick Palka <ppalka (a] redhat.com>
1175
1176 Backported from master:
1177 2020-10-23 Patrick Palka <ppalka (a] 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
1184 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
1185
1186 Backported from master:
1187 2020-09-22 Patrick Palka <ppalka (a] 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
1199 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
1200
1201 Backported from master:
1202 2020-10-12 Patrick Palka <ppalka (a] 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
1210 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
1211
1212 Backported from master:
1213 2020-09-22 Patrick Palka <ppalka (a] 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
1219 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
1220
1221 Backported from master:
1222 2020-09-22 Patrick Palka <ppalka (a] 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
1231 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
1232
1233 Backported from master:
1234 2020-08-27 Patrick Palka <ppalka (a] 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
1244 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
1245
1246 Backported from master:
1247 2020-08-27 Patrick Palka <ppalka (a] 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
1258 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
1259
1260 Backported from master:
1261 2020-08-27 Patrick Palka <ppalka (a] 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
1269 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
1270
1271 Backported from master:
1272 2020-08-10 Jonathan Wakely <jwakely (a] 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
1279 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
1280
1281 Backported from master:
1282 2020-10-14 Jonathan Wakely <jwakely (a] 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
1296 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
1297
1298 Backported from master:
1299 2020-10-14 Jonathan Wakely <jwakely (a] 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
1307 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
1308
1309 Backported from master:
1310 2020-10-08 Jonathan Wakely <jwakely (a] 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
1319 2020-10-20 Nuno Lopes <nuno.lopes (a] ist.utl.pt>
1320
1321 Backported from master:
1322 2020-10-13 Nuno Lopes <nuno.lopes (a] ist.utl.pt>
1323
1324 * include/bits/stl_algo.h (any_of): Fix incorrect description
1325 in comment.
1326
1327 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
1328
1329 Backported from master:
1330 2020-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1331
1332 * include/bits/stl_algobase.h (copy, move, copy_backward)
1333 (move_backward): Fix documentation for returned iterator.
1334
1335 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
1336
1337 Backported from master:
1338 2020-09-24 Jonathan Wakely <jwakely (a] redhat.com>
1339
1340 * doc/xml/manual/configure.xml: Correct name of option.
1341 * doc/html/*: Regenerate.
1342
1343 2020-10-19 Jonathan Wakely <jwakely (a] redhat.com>
1344
1345 Backported from master:
1346 2020-09-21 Jonathan Wakely <jwakely (a] 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
1354 2020-10-15 Jonathan Wakely <jwakely (a] redhat.com>
1355
1356 Backported from master:
1357 2020-10-15 Jonathan Wakely <jwakely (a] redhat.com>
1358
1359 * include/std/concepts: Fix typos in copyright notice.
1360 * include/std/ranges: Likewise.
1361
1362 2020-10-15 Jonathan Wakely <jwakely (a] 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
1368 2020-10-13 Patrick Palka <ppalka (a] redhat.com>
1369
1370 Backported from master:
1371 2020-10-08 Patrick Palka <ppalka (a] 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
1381 2020-10-08 Jonathan Wakely <jwakely (a] redhat.com>
1382
1383 Backported from master:
1384 2020-10-07 Jonathan Wakely <jwakely (a] 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
1393 2020-10-06 Patrick Palka <ppalka (a] redhat.com>
1394
1395 Backported from master:
1396 2020-10-02 Patrick Palka <ppalka (a] 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
1405 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
1406
1407 Backported from master:
1408 2020-09-22 Jonathan Wakely <jwakely (a] 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
1416 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
1417
1418 Backported from master:
1419 2020-09-22 Jonathan Wakely <jwakely (a] 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
1428 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
1429
1430 Backported from master:
1431 2020-08-26 Jonathan Wakely <jwakely (a] 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
1440 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
1441
1442 Backported from master:
1443 2020-08-10 Jonathan Wakely <jwakely (a] 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
1450 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
1451
1452 Backported from master:
1453 2020-08-10 Jonathan Wakely <jwakely (a] 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
1460 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
1461
1462 Backported from master:
1463 2020-09-20 Jonathan Wakely <jwakely (a] 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
1470 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
1471
1472 Backported from master:
1473 2020-09-10 Jonathan Wakely <jwakely (a] 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
1483 2020-09-03 Jonathan Wakely <jwakely (a] redhat.com>
1484
1485 Backported from master:
1486 2020-07-07 Jonathan Wakely <jwakely (a] 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
1509 2020-09-02 Jonathan Wakely <jwakely (a] redhat.com>
1510
1511 Backported from master:
1512 2020-08-28 Jonathan Wakely <jwakely (a] 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
1531 2020-09-02 Jonathan Wakely <jwakely (a] redhat.com>
1532
1533 Backported from master:
1534 2020-09-02 Jonathan Wakely <jwakely (a] 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
1551 2020-09-02 Jonathan Wakely <jwakely (a] redhat.com>
1552
1553 * include/bits/stl_iterator.h (counted_iterator::operator++(int)):
1554 Use __throw_exception_again macro.
1555
1556 2020-08-26 Jonathan Wakely <jwakely (a] redhat.com>
1557
1558 Backported from master:
1559 2020-08-26 Jonathan Wakely <jwakely (a] 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
1567 2020-08-26 Jonathan Wakely <jwakely (a] redhat.com>
1568
1569 Backported from master:
1570 2020-08-24 Jonathan Wakely <jwakely (a] 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
1576 2020-08-21 Jonathan Wakely <jwakely (a] redhat.com>
1577
1578 Backported from master:
1579 2020-08-21 Jonathan Wakely <jwakely (a] 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
1588 2020-08-19 Jonathan Wakely <jwakely (a] redhat.com>
1589
1590 Backported from master:
1591 2020-08-19 Jonathan Wakely <jwakely (a] 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
1604 2020-08-11 Jonathan Wakely <jwakely (a] 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
1630 2020-08-10 Jonathan Wakely <jwakely (a] redhat.com>
1631
1632 Backported from master:
1633 2020-08-10 Jonathan Wakely <jwakely (a] 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
1640 2020-08-07 Jonathan Wakely <jwakely (a] redhat.com>
1641
1642 Backported from master:
1643 2020-08-07 Jonathan Wakely <jwakely (a] 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
1652 2020-08-06 Jonathan Wakely <jwakely (a] redhat.com>
1653
1654 Backported from master:
1655 2020-08-06 Jonathan Wakely <jwakely (a] 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
1662 2020-07-23 Release Manager
1663
1664 * GCC 10.2.0 released.
1665
1666 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
1667
1668 Backported from master:
1669 2020-06-08 Jonathan Wakely <jwakely (a] 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
1677 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
1678
1679 Backported from master:
1680 2020-05-27 Jonathan Wakely <jwakely (a] 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
1688 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
1689
1690 Backported from master:
1691 2020-05-04 Jonathan Wakely <jwakely (a] 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
1715 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
1716
1717 Backported from master:
1718 2020-05-19 Jonathan Wakely <jwakely (a] 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
1729 2020-07-02 Ville Voutilainen <ville.voutilainen (a] gmail.com>
1730
1731 Backported from master:
1732 2020-07-02 Ville Voutilainen <ville.voutilainen (a] 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
1741 2020-07-02 Jonathan Wakely <jwakely.gcc (a] gmail.com>
1742
1743 Backported from master:
1744 2020-07-02 Jonathan Wakely <jwakely.gcc (a] 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
1752 2020-07-01 Jonathan Wakely <jwakely (a] redhat.com>
1753
1754 Backported from master:
1755 2020-06-16 Jonathan Wakely <jwakely (a] 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
1765 2020-07-01 Jonathan Wakely <jwakely (a] redhat.com>
1766
1767 Backported from master:
1768 2020-07-01 Jonathan Wakely <jwakely (a] 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
1775 2020-06-29 Ville Voutilainen <ville.voutilainen (a] gmail.com>
1776
1777 Backported from master:
1778 2020-06-28 Ville Voutilainen <ville.voutilainen (a] 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
1786 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
1787
1788 Backported from master:
1789 2020-06-24 Jonathan Wakely <jwakely (a] 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
1796 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
1797
1798 Backported from master:
1799 2020-06-24 Jonathan Wakely <jwakely (a] 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
1805 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
1806
1807 Backported from master:
1808 2020-06-24 Jonathan Wakely <jwakely (a] 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
1815 2020-06-22 Jason Merrill <jason (a] 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
1822 2020-06-11 Patrick Palka <ppalka (a] 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
1845 2020-05-28 Patrick Palka <ppalka (a] 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
1855 2020-05-26 Alexandre Oliva <oliva (a] 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
1867 2020-05-23 Jonathan Wakely <jwakely (a] redhat.com>
1868
1869 Backport from mainline
1870 2020-05-23 Jonathan Wakely <jwakely (a] 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
1877 2020-05-23 Jonathan Wakely <jwakely (a] redhat.com>
1878
1879 Backport from mainline
1880 2020-05-23 Jonathan Wakely <jwakely (a] 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
1887 2020-05-21 Jonathan Wakely <jwakely (a] redhat.com>
1888
1889 Backport from mainline
1890 2020-05-21 Jonathan Wakely <jwakely (a] 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
1912 2020-05-21 Jonathan Wakely <jwakely (a] redhat.com>
1913
1914 Backport from mainline
1915 2020-05-21 Jonathan Wakely <jwakely (a] 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
1923 2020-05-12 Jonathan Wakely <jwakely (a] redhat.com>
1924
1925 Backport from mainline
1926 2020-05-04 Jonathan Wakely <jwakely (a] 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 (a] 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
1942 2020-05-07 Jonathan Wakely <jwakely (a] redhat.com>
1943
1944 Backport from mainline
1945 2020-05-01 Jonathan Wakely <jwakely (a] redhat.com>
1946 Patrick Palka <ppalka (a] 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
1956 2020-05-07 Release Manager
1957
1958 * GCC 10.1.0 released.
1959
1960 2020-05-07 Eric Botcazou <ebotcazou (a] 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
1965 2020-05-06 H.J. Lu <hongjiu.lu (a] intel.com>
1966
1967 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1968
1969 2020-05-06 Rainer Orth <ro (a] 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
1978 2020-05-06 Jonathan Wakely <jwakely (a] 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
1984 2020-05-06 Jakub Jelinek <jakub (a] 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
1994 2020-05-04 Jonathan Wakely <jwakely (a] redhat.com>
1995
1996 * doc/xml/faq.xml: Use working link for SGI STL FAQ.
1997 * doc/html/*: Regenerate.
1998
1999 2020-05-01 Jonathan Wakely <jwakely (a] redhat.com>
2000
2001 Backport from mainline
2002 2020-05-01 Jonathan Wakely <jwakely (a] 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
2009 2020-04-30 Jonathan Wakely <jwakely (a] 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
2026 2020-04-29 Jonathan Wakely <jwakely (a] redhat.com>
2027
2028 PR libstdc++/94854
2029 * include/bits/basic_string.tcc: Update comment about explicit
2030 instantiations.
2031
2032 2020-04-28 Jonathan Wakely <jwakely (a] 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
2062 2020-04-28 Patrick Palka <ppalka (a] 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
2070 2020-04-28 Jonathan Wakely <jwakely (a] redhat.com>
2071 Iain Sandoe <iain (a] sandoe.co.uk>
2072
2073 PR c++/94759
2074 * include/std/coroutine: Implement handing for non-
2075 class coroutine return types.
2076
2077 2020-04-24 Jonathan Wakely <jwakely (a] 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
2084 2020-04-24 Kamlesh Kumar <kamleshbhalui (a] gmail.com>
2085 Jonathan Wakely <jwakely (a] 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
2105 2020-04-23 Jonathan Wakely <jwakely (a] 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
2121 2020-04-23 Thomas Rodgers <rodgert (a] 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
2128 2020-04-23 Iain Sandoe <iain (a] 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
2134 2020-04-22 Jonathan Wakely <jwakely (a] 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
2235 2020-04-21 Jonathan Wakely <jwakely (a] 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
2258 2020-04-20 Thomas Rodgers <trodgers (a] 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
2264 2020-04-20 Jonathan Wakely <jwakely (a] 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
2295 2020-04-20 Matthias Kretz <kretz (a] kde.org>
2296
2297 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
2298
2299 2020-04-19 Jonathan Wakely <jwakely (a] 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
2319 2020-04-18 Jonathan Wakely <jwakely (a] 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
2331 2020-04-17 Jonathan Wakely <jwakely (a] 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
2385 2020-04-16 Jonathan Wakely <jwakely (a] redhat.com>
2386
2387 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
2388 name of unused parameter.
2389
2390 2020-04-15 Jonathan Wakely <jwakely (a] 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
2423 2020-04-14 Jonathan Wakely <jwakely (a] 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
2443 2020-04-13 Iain Sandoe <iain (a] sandoe.co.uk>
2444
2445 * include/std/coroutine: Update coroutines builtin define,
2446 per n4861.
2447
2448 2020-04-09 Jonathan Wakely <jwakely (a] 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
2465 2020-04-08 Jonathan Wakely <jwakely (a] 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
2480 2020-04-07 Jonathan Wakely <jwakely (a] 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
2492 2020-04-06 Jonathan Wakely <jwakely (a] 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
2511 2020-04-05 Gerald Pfeifer <gerald (a] 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
2517 2020-04-03 Jonathan Wakely <jwakely (a] 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
2525 2020-04-01 Andrea Corallo <andrea.corallo (a] arm.com>
2526
2527 * testsuite/experimental/net/execution_context/use_service.cc:
2528 Require pthread and gthreads.
2529
2530 2020-04-01 Gerald Pfeifer <gerald (a] 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
2536 2020-03-31 Ville Voutilainen <ville.voutilainen (a] 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
2584 2020-03-28 Jonathan Wakely <jwakely (a] 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
2603 2020-03-27 Jonathan Wakely <jwakely (a] 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
2649 2020-03-26 Jonathan Wakely <jwakely (a] 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
2661 2020-03-25 Mike Crowe <mac (a] 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
2668 2020-03-25 Jonathan Wakely <jwakely (a] 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
2708 2020-03-21 Jonathan Wakely <jwakely (a] 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
2725 2020-03-18 Jonathan Wakely <jwakely (a] 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
2771 2020-03-16 Jonathan Wakely <jwakely (a] 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
2779 2020-03-12 Jonathan Wakely <jwakely (a] 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
2784 2020-03-11 Patrick Palka <ppalka (a] 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
2807 2020-03-10 Jonathan Wakely <jwakely (a] 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
2837 2020-03-09 Jonathan Wakely <jwakely (a] 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
2845 2020-03-06 Patrick Palka <ppalka (a] 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
2856 2020-03-06 Jonathan Wakely <jwakely (a] 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
2870 2020-03-06 Andreas Krebbel <krebbel (a] linux.ibm.com>
2871
2872 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
2873 would match ENOSYS.
2874
2875 2020-03-05 Jonathan Wakely <jwakely (a] 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
2888 2020-03-04 Jonathan Wakely <jwakely (a] redhat.com>
2889
2890 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
2891
2892 2020-03-04 Patrick Palka <ppalka (a] 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
2949 2020-03-03 Jonathan Wakely <jwakely (a] 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
2975 2020-03-02 Jonathan Wakely <jwakely (a] 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
2989 2020-03-01 H.J. Lu <hongjiu.lu (a] intel.com>
2990
2991 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2992
2993 2020-02-29 John David Anglin <danglin (a] 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
3005 2020-02-29 Franois Dumont <fdumont (a] 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
3012 2020-02-29 John David Anglin <danglin (a] 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
3030 2020-02-28 Patrick Palka <ppalka (a] 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
3042 2020-02-28 Jonathan Wakely <jwakely (a] redhat.com>
3043
3044 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
3045 test instead of just compiling it.
3046
3047 2020-02-28 Patrick Palka <ppalka (a] 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
3078 2020-02-28 Jonathan Wakely <jwakely (a] 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
3088 2020-02-27 Jonathan Wakely <jwakely (a] redhat.com>
3089
3090 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
3091 -fdiagnostics-urls=never to options.
3092
3093 2020-02-27 Patrick Palka <ppalka (a] 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
3119 2020-02-27 Jonathan Wakely <jwakely (a] 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
3152 2020-02-26 Patrick Palka <ppalka (a] 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
3181 2020-02-26 Jonathan Wakely <jwakely (a] 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
3198 2020-02-25 Patrick Palka <ppalka (a] 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
3228 2020-02-25 Jonathan Wakely <jwakely (a] 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
3253 2020-02-24 Patrick Palka <ppalka (a] 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
3276 2020-02-24 Jonathan Wakely <jwakely (a] 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
3314 2020-02-21 Jonathan Wakely <jwakely (a] 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
3331 2020-02-20 Patrick Palka <ppalka (a] 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
3351 2020-02-20 Jonathan Wakely <jwakely (a] 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
3394 2020-02-19 Patrick Palka <ppalka (a] 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
3400 2020-02-19 Jonathan Wakely <jwakely (a] 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
3529 2020-02-18 Patrick Palka <ppalka (a] 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
3545 2020-02-18 Jonathan Wakely <jwakely (a] 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
3602 2020-02-17 Patrick Palka <ppalka (a] 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
3652 2020-02-17 Jonathan Wakely <jwakely (a] 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
3761 2020-02-16 Patrick Palka <ppalka (a] 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
3767 2020-02-15 Patrick Palka <ppalka (a] 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
3804 2020-02-15 Jonathan Wakely <jwakely (a] 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
3822 2020-02-15 Jonathan Wakely <jwakely (a] 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
3829 2020-02-13 Patrick Palka <ppalka (a] 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
3855 2020-02-12 Patrick Palka <ppalka (a] 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
3865 2020-02-12 Sandra Loosemore <sandra (a] codesourcery.com>
3866
3867 PR libstdc++/79193
3868 PR libstdc++/88999
3869
3870 * configure: Regenerated.
3871
3872 2020-02-12 Franois Dumont <fdumont (a] 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
3878 2020-02-09 Jonathan Wakely <jwakely (a] 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
3893 2020-02-07 Jonathan Wakely <jwakely (a] 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
3919 2020-02-07 Jonathan Wakely <jwakely (a] 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
3925 2020-02-07 Patrick Palka <ppalka (a] 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
3975 2020-02-07 Jonathan Wakely <jwakely (a] 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
4001 2020-02-07 Patrick Palka <ppalka (a] redhat.com>
4002 Jonathan Wakely <jwakely (a] 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
4089 2020-02-06 Jonathan Wakely <jwakely (a] 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
4100 2020-02-05 Jonathan Wakely <jwakely (a] 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
4107 2020-02-05 Patrick Palka <ppalka (a] 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
4114 2020-02-04 Jonathan Wakely <jwakely (a] 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
4124 2020-02-01 Andrew Burgess <andrew.burgess (a] embecosm.com>
4125
4126 * configure: Regenerate.
4127
4128 2020-01-31 Patrick Palka <ppalka (a] 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
4137 2020-01-29 Jonathan Wakely <jwakely (a] 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
4232 2020-01-28 Jonathan Wakely <jwakely (a] 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
4243 2020-01-28 Martin Liska <mliska (a] suse.cz>
4244
4245 PR libstdc++/93478
4246 * include/std/atomic: Fix typo.
4247 * include/std/optional: Likewise.
4248
4249 2020-01-27 Andrew Burgess <andrew.burgess (a] embecosm.com>
4250
4251 * configure: Regenerate.
4252
4253 2020-01-27 Jonathan Wakely <jwakely (a] 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
4259 2020-01-24 Jonathan Wakely <jwakely (a] 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
4269 2020-01-24 Maciej W. Rozycki <macro (a] 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
4287 2020-01-23 Alexandre Oliva <oliva (a] 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
4294 2020-01-23 Jonathan Wakely <jwakely (a] 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
4301 2020-01-20 Jonathan Wakely <jwakely (a] 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
4308 2020-01-19 Eric S. Raymond <esr (a] 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
4320 2020-01-18 Iain Sandoe <iain (a] 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
4326 2020-01-17 Jonathan Wakely <jwakely (a] 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
4334 2020-01-16 Kai-Uwe Eckhardt <kuehro (a] gmx.de>
4335 Matthew Bauer <mjbauer95 (a] gmail.com>
4336 Jonathan Wakely <jwakely (a] 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
4352 2020-01-16 Franois Dumont <fdumont (a] 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
4365 2020-01-15 Jonathan Wakely <jwakely (a] 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
4384 2020-01-13 Jonathan Wakely <jwakely (a] 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
4419 2020-01-10 Jonathan Wakely <jwakely (a] 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
4435 2020-01-09 Olivier Hainque <hainque (a] 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
4442 2020-01-09 Jonathan Wakely <jwakely (a] 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
4461 2020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse (a] 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
4467 2020-01-09 Jonathan Wakely <jwakely (a] 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
4488 2020-01-09 Franois Dumont <fdumont (a] 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
4507 2020-01-08 Jonathan Wakely <jwakely (a] 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
4521 2020-01-07 Thomas Rodgers <trodgers (a] 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
4531 2020-01-07 Franois Dumont <fdumont (a] 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
4540 2020-01-06 Jonathan Wakely <jwakely (a] 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
4554 2020-01-03 Jonathan Wakely <jwakely (a] 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
4559 2020-01-01 John David Anglin <danglin (a] gcc.gnu.org>
4560
4561 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
4562
4563 2020-01-01 Jakub Jelinek <jakub (a] redhat.com>
4564
4565 Update copyright years.
4566
4568 Copyright (C) 2020 Free Software Foundation, Inc.
4569
4570 Copying and distribution of this file, with or without modification,
4571 are permitted in any medium without royalty provided the copyright
4572 notice and this notice are preserved.
4573