ChangeLog revision 1.1.1.22 1 2023-07-07 Release Manager
2
3 * GCC 10.5.0 released.
4
5 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
6
7 Backported from master:
8 2021-10-11 Jonathan Wakely <jwakely (a] redhat.com>
9
10 * testsuite/18_support/numeric_limits/lowest.cc: Use
11 numeric_limits<T>::is_integer instead of is_integral<T>::value.
12
13 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
14
15 Backported from master:
16 2023-06-01 Jonathan Wakely <jwakely (a] redhat.com>
17
18 * doc/xml/manual/evolution.xml: Document removal of implicit
19 allocator rebinding extensions in strict mode and for C++20.
20 * doc/html/*: Regenerate.
21
22 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
23
24 Backported from master:
25 2022-12-16 Jonathan Wakely <jwakely (a] redhat.com>
26
27 PR libstdc++/108118
28 * include/bits/shared_ptr_base.h (weak_ptr::operator=):
29 Implement as move-and-swap exactly as specified in the standard.
30 * testsuite/20_util/weak_ptr/cons/self_move.cc: New test.
31
32 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
33
34 Backported from master:
35 2020-06-17 Jonathan Wakely <jwakely (a] redhat.com>
36
37 PR libstdc++/94540
38 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
39 Construct the first value at *__first instead of on the stack.
40 (__uninitialized_default_n_1<true>): Likewise.
41 Improve comments on several of the non-standard algorithms.
42 * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc:
43 New test.
44 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc:
45 New test.
46 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
47 New test.
48 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
49 New test.
50 * testsuite/23_containers/vector/cons/94540.cc: New test.
51
52 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
53
54 Backported from master:
55 2022-08-22 Jonathan Wakely <jwakely (a] redhat.com>
56
57 PR libstdc++/106607
58 * include/bits/regex_compiler.tcc (_Compiler::_M_cur_int_value):
59 Use built-ins to check for integer overflow in back-reference
60 number.
61 * testsuite/28_regex/basic_regex/106607.cc: New test.
62
63 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
64
65 Backported from master:
66 2021-09-28 Jonathan Wakely <jwakely (a] redhat.com>
67
68 * include/bits/regex.h (basic_regex, swap): Add noexcept to
69 non-throwing functions.
70 * include/bits/regex_automaton.h (_State_base, _State)
71 (_NFA_base): Likewise.
72 * include/bits/regex_compiler.h (_Compiler): Likewise.
73 * include/bits/regex_error.h (regex_error::code()): Likewise.
74 * include/bits/regex_scanner.h (_Scanner): Likewise.
75
76 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
77
78 Backported from master:
79 2021-12-14 Jonathan Wakely <jwakely (a] redhat.com>
80
81 PR libstdc++/102447
82 * include/bits/regex_compiler.h (_Compiler::_BracketState): New
83 class.
84 (_Compiler::_BrackeyMatcher): New alias template.
85 (_Compiler::_M_expression_term): Change pair<bool, CharT>
86 parameter to _BracketState. Process first character for
87 ECMAScript syntax as well as POSIX.
88 * include/bits/regex_compiler.tcc
89 (_Compiler::_M_insert_bracket_matcher): Pass _BracketState.
90 (_Compiler::_M_expression_term): Use _BracketState to store
91 state between calls. Improve handling of dashes in ranges.
92 * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
93 Add more tests for ranges containing dashes. Check invalid
94 ranges with character class at the beginning.
95
96 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
97
98 Backported from master:
99 2021-09-29 Jonathan Wakely <jwakely (a] redhat.com>
100
101 * include/bits/regex_compiler.h (_Compiler::_S_validate): New
102 function.
103 * include/bits/regex_compiler.tcc (_Compiler::_Compiler): Use
104 _S_validate to check flags.
105 * include/bits/regex_error.h (_S_grammar): New error code for
106 internal use.
107 * testsuite/28_regex/basic_regex/ctors/grammar.cc: New test.
108
109 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
110
111 Backported from master:
112 2021-09-28 Jonathan Wakely <jwakely (a] redhat.com>
113
114 * include/bits/regex_compiler.tcc: Add line break in empty while
115 statement.
116 * include/bits/regex_executor.tcc: Avoid unused parameter
117 warning.
118
119 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
120
121 Backported from master:
122 2021-12-13 Jonathan Wakely <jwakely (a] redhat.com>
123
124 PR libstdc++/103664
125 * include/bits/regex.h (__regex_replace): Declare.
126 (regex_replace): Use it.
127 * include/bits/regex.tcc (__regex_replace): Replace regex_replace
128 definition with __regex_replace.
129 * testsuite/28_regex/algorithms/regex_replace/char/103664.cc: New test.
130
131 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
132
133 Backported from master:
134 2021-09-29 Jonathan Wakely <jwakely (a] redhat.com>
135
136 PR libstdc++/84110
137 * include/bits/regex_error.h (regex_constants::_S_null): New
138 error code for internal use.
139 * include/bits/regex_scanner.tcc (_Scanner::_M_scan_normal()):
140 Check for null character.
141 * testsuite/28_regex/basic_regex/84110.cc: New test.
142
143 2023-06-23 Jonathan Wakely <jwakely (a] redhat.com>
144
145 Backported from master:
146 2020-09-11 Jonathan Wakely <jwakely (a] redhat.com>
147
148 * include/bits/regex_error.h (__throw_regex_error): Fix
149 parameter declaration and use reserved attribute names.
150
151 2023-06-23 Christophe Lyon <christophe.lyon (a] linaro.org>
152
153 Backported from master:
154 2020-09-11 Christophe Lyon <christophe.lyon (a] linaro.org>
155
156 * include/bits/regex_error.h: Avoid warning with -fno-exceptions.
157
158 2023-05-21 Iain Sandoe <iain (a] sandoe.co.uk>
159
160 * include/bits/fs_path.h: Rename __null_terminated to __nul_terminated
161 to avoid colliding with a macro in Darwin system headers.
162
163 2023-05-03 Jonathan Wakely <jwakely (a] redhat.com>
164
165 PR libstdc++/105844
166 * include/std/numeric (lcm): Ensure out-of-range result is
167 detected in constant evaluation.
168 * testsuite/26_numerics/lcm/105844.cc: Adjust dg-error string.
169
170 2023-05-03 Jonathan Wakely <jwakely (a] redhat.com>
171
172 Backported from master:
173 2022-06-10 Jonathan Wakely <jwakely (a] redhat.com>
174
175 PR libstdc++/105844
176 * include/experimental/numeric (experimental::gcd): Simplify
177 assertions. Use __abs_r instead of __absu.
178 (experimental::lcm): Likewise. Remove use of __detail::__lcm so
179 overflow can be detected.
180 * include/std/numeric (__detail::__absu): Rename to __abs_r and
181 change to allow signed result type, so overflow can be detected.
182 (__detail::__lcm): Remove.
183 (gcd): Simplify assertions. Use __abs_r instead of __absu.
184 (lcm): Likewise. Remove use of __detail::__lcm so overflow can
185 be detected.
186 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines.
187 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
188 * testsuite/26_numerics/gcd/105844.cc: New test.
189 * testsuite/26_numerics/lcm/105844.cc: New test.
190
191 2023-05-03 Jonathan Wakely <jwakely (a] redhat.com>
192
193 Backported from master:
194 2023-04-28 Jonathan Wakely <jwakely (a] redhat.com>
195
196 * doc/doxygen/user.cfg.in (STRIP_FROM_PATH): Remove prefixes
197 from header paths.
198
199 2023-04-28 Jonathan Wakely <jwakely (a] redhat.com>
200
201 Backported from master:
202 2020-11-24 Jonathan Wakely <jwakely (a] redhat.com>
203
204 PR libstdc++/67791
205 * src/c++11/thread.cc (thread::_M_start_thread(_State_ptr, void (*)())):
206 Check that gthreads is available before calling __gthread_create.
207
208 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
209
210 Backported from master:
211 2023-04-04 Jonathan Wakely <jwakely (a] redhat.com>
212
213 * doc/xml/manual/extensions.xml: Remove std::bad_exception from
214 example program.
215 * doc/html/manual/ext_demangling.html: Regenerate.
216
217 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
218
219 Backported from master:
220 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
221
222 * doc/doxygen/user.cfg.in (SOURCE_BROWSER): Only set to YES for
223 HTML docs.
224 * include/bits/gslice_array.h (_DEFINE_VALARRAY_OPERATOR): Omit
225 from doxygen docs.
226 * include/bits/indirect_array.h (_DEFINE_VALARRAY_OPERATOR):
227 Likewise.
228 * include/bits/mask_array.h (_DEFINE_VALARRAY_OPERATOR):
229 Likewise.
230 * include/bits/slice_array.h (_DEFINE_VALARRAY_OPERATOR):
231 Likewise.
232 * include/std/valarray (_DEFINE_VALARRAY_UNARY_OPERATOR)
233 (_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT)
234 (_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT)
235 (_DEFINE_BINARY_OPERATOR): Likewise.
236
237 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
238
239 Backported from master:
240 2022-10-28 Jonathan Wakely <jwakely (a] redhat.com>
241
242 * include/bits/fs_path.h (path::filename()): Fix dangling
243 reference.
244
245 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
246
247 PR libstdc++/109064
248 * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker):
249 Remove self-recursion in __init__. Add missing _supports.
250 * testsuite/libstdc++-xmethods/shared_ptr.cc: Check use_count()
251 and unique().
252
253 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
254
255 Backported from master:
256 2023-02-28 Jonathan Wakely <jwakely (a] redhat.com>
257
258 PR libstdc++/108952
259 * include/std/memory (uses_allocator_construction_args):
260 Implement LWG 3527.
261 * testsuite/20_util/pair/astuple/get-2.cc: New test.
262 * testsuite/20_util/scoped_allocator/108952.cc: New test.
263 * testsuite/20_util/uses_allocator/lwg3527.cc: New test.
264
265 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
266
267 Backported from master:
268 2023-02-16 Jonathan Wakely <jwakely (a] redhat.com>
269
270 * include/experimental/optional: Fix header name in comment.
271
272 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
273
274 Backported from master:
275 2022-07-20 Jonathan Wakely <jwakely (a] redhat.com>
276
277 PR libstdc++/100823
278 * include/bits/stl_iterator.h (common_iterator): Define move
279 constructor and move assignment operator.
280 (common_iterator::_M_assign): New function implementing
281 assignment.
282 (common_iterator::operator=): Use _M_assign.
283 (common_iterator::_S_valueless): New constant.
284 * testsuite/24_iterators/common_iterator/100823.cc: New test.
285
286 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
287
288 Backported from master:
289 2022-07-20 Jonathan Wakely <jwakely (a] redhat.com>
290
291 * include/bits/stl_iterator.h (common_iterator): Fix incorrect
292 uses of is_nothrow_assignable_v. Fix inconsistent constraints on
293 friend declaration. Do not move argument in copy constructor.
294 * testsuite/24_iterators/common_iterator/1.cc: Check for
295 noexcept constructibnle/assignable.
296
297 2023-04-27 Jonathan Wakely <jwakely (a] redhat.com>
298
299 Backported from master:
300 2022-11-23 Jonathan Wakely <jwakely (a] redhat.com>
301
302 PR libstdc++/107814
303 * testsuite/experimental/filesystem/iterators/error_reporting.cc:
304 Use a static buffer with space after it.
305
306 2023-03-16 Jonathan Wakely <jwakely (a] redhat.com>
307
308 Backported from master:
309 2023-02-02 Jonathan Wakely <jwakely (a] redhat.com>
310
311 PR libstdc++/108636
312 * include/bits/fs_path.h (path::path(string_view, _Type))
313 (path::_Cmpt::_Cmpt(string_view, _Type, size_t)): Move inline
314 definitions to ...
315 * src/c++17/fs_path.cc: ... here.
316 * testsuite/27_io/filesystem/path/108636.cc: New test.
317
318 2022-11-08 Jonathan Wakely <jwakely (a] redhat.com>
319
320 Backported from master:
321 2022-11-08 Jonathan Wakely <jwakely (a] redhat.com>
322
323 * doc/xml/authors.xml: Remove empty author element.
324 * doc/xml/manual/spine.xml: Likewise.
325 * doc/html/*: Regenerate.
326
327 2022-08-03 Jonathan Wakely <jwakely (a] redhat.com>
328
329 Backported from master:
330 2021-08-31 Jonathan Wakely <jwakely (a] redhat.com>
331
332 PR libstdc++/98421
333 * include/std/span (span(Iter, size_type), span(Iter, Iter)):
334 Add valid range checks.
335 * testsuite/23_containers/span/cons_1_assert_neg.cc: New test.
336 * testsuite/23_containers/span/cons_2_assert_neg.cc: New test.
337
338 2022-08-03 Jonathan Wakely <jwakely (a] redhat.com>
339
340 * include/bits/list.tcc (list::merge) [!USE_CXX11_ABI]: Remove
341 call to size() and try-catch block.
342
343 2022-08-03 Tim Adye <Tim.Adye (a] cern.ch>
344
345 Backported from master:
346 2021-06-04 Tim Adye <Tim.Adye (a] cern.ch>
347
348 * include/std/any (any::_Manager::_S_access): New static
349 function to access the contained value.
350 (any::emplace, __any_caster): Use _S_access member of the
351 manager type.
352
353 2022-08-03 Jonathan Wakely <jwakely (a] redhat.com>
354
355 Backported from master:
356 2021-06-15 Jonathan Wakely <jwakely (a] redhat.com>
357
358 * include/std/ranges (subrange(i, s, n)): Remove assertion.
359 * testsuite/std/ranges/subrange/constexpr.cc: New test.
360
361 2022-08-03 Jonathan Wakely <jwakely (a] redhat.com>
362
363 Backported from master:
364 2021-11-10 Jonathan Wakely <jwakely (a] redhat.com>
365
366 PR libstdc++/100748
367 PR libstdc++/103133
368 * config/os/gnu-linux/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK):
369 Define for glibc 2.34 and later.
370
371 2022-07-23 Jonathan Wakely <jwakely (a] redhat.com>
372
373 Backported from master:
374 2022-07-01 Jonathan Wakely <jwakely (a] redhat.com>
375
376 PR libstdc++/106162
377 * include/Makefile.am (largefile-config.h): Add
378 stamp-${host_alias} prerequisite.
379 * include/Makefile.in: Regenerate.
380
381 2022-07-23 Jonathan Wakely <jwakely (a] redhat.com>
382
383 Backported from master:
384 2021-11-05 Jonathan Wakely <jwakely (a] redhat.com>
385
386 * include/bits/range_access.h (begin(valarray), end(valarray)):
387 Add noexcept.
388
389 2022-07-22 Patrick Palka <ppalka (a] redhat.com>
390
391 Backported from master:
392 2022-07-22 Patrick Palka <ppalka (a] redhat.com>
393
394 PR libstdc++/106320
395 * include/std/ranges (single_view): Relax constraints on
396 default constructor so as to preserve pre-P2325R3 behavior.
397 (filter_view): Likewise.
398 (transform_view): Likewise.
399 (take_while_view): Likewise.
400 (drop_while_view): Likewise.
401 * testsuite/std/ranges/adaptors/join.cc (test13): New test.
402 * testsuite/std/ranges/p2325.cc: Fix S to be only non default
403 constructible and not also non copy constructible. XFAIL the
404 tests that verify a non default constructible functor makes a
405 view non default constructible (lines 94, 97 and 98). XFAIL
406 the test that effectively verifies a non default constructible
407 element type makes single_view non default constructible (line
408 114).
409
410 2022-06-28 Release Manager
411
412 * GCC 10.4.0 released.
413
414 2022-06-15 Jonathan Wakely <jwakely (a] redhat.com>
415
416 Backported from master:
417 2022-06-13 Jonathan Wakely <jwakely (a] redhat.com>
418
419 * include/std/atomic (__atomic_val_t): Use __type_identity_t
420 instead of atomic<T>::value_type, as per LWG 3220.
421 * testsuite/29_atomics/atomic/lwg3220.cc: New test.
422
423 2022-06-15 Mark Mentovai <mark (a] mentovai.com>
424
425 Backported from master:
426 2022-06-13 Mark Mentovai <mark (a] mentovai.com>
427
428 * include/experimental/bits/fs_path.h (__detail::__null_terminated):
429 Rename to __nul_terminated to avoid colliding with a macro in
430 Apple's SDK.
431
432 2022-06-15 Jonathan Wakely <jwakely (a] redhat.com>
433
434 Backported from master:
435 2022-05-06 Jonathan Wakely <jwakely (a] redhat.com>
436
437 PR libstdc++/104731
438 * testsuite/27_io/filesystem/iterators/error_reporting.cc:
439 Use a trailing char array as storage for dirent::d_name.
440
441 2022-06-15 Jonathan Wakely <jwakely (a] redhat.com>
442
443 Backported from master:
444 2022-02-02 Jonathan Wakely <jwakely (a] redhat.com>
445
446 * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
447 autoconf macro to check whether d_type is present.
448 * testsuite/experimental/filesystem/iterators/error_reporting.cc:
449 Likewise.
450
451 2022-06-15 Jonathan Wakely <jwakely (a] redhat.com>
452
453 Backported from master:
454 2022-02-01 Jonathan Wakely <jwakely (a] redhat.com>
455
456 * src/c++17/fs_dir.cc (recursive_directory_iterator::increment):
457 Reset state to past-the-end iterator on error.
458 (fs::recursive_directory_iterator::pop(error_code&)): Likewise.
459 (fs::recursive_directory_iterator::pop()): Check _M_dirs before
460 it might get reset.
461 * src/filesystem/dir.cc (recursive_directory_iterator): Likewise,
462 for the TS implementation.
463 * testsuite/27_io/filesystem/iterators/error_reporting.cc: New test.
464 * testsuite/experimental/filesystem/iterators/error_reporting.cc: New test.
465
466 2022-06-15 Jonathan Wakely <jwakely (a] redhat.com>
467
468 * testsuite/23_containers/map/allocator/move_cons.cc: New test.
469 * testsuite/23_containers/multimap/allocator/move_cons.cc: New test.
470 * testsuite/23_containers/multiset/allocator/move_cons.cc: New test.
471 * testsuite/23_containers/set/allocator/move_cons.cc: New test.
472
473 2022-06-15 Jonathan Wakely <jwakely (a] redhat.com>
474
475 Backported from master:
476 2021-12-01 Jonathan Wakely <jwakely (a] redhat.com>
477
478 PR libstdc++/103501
479 * include/bits/stl_tree.h (_Rb_tree(_Rb_tree&&, false_type)):
480 Clear container if elements have been moved-from.
481 * testsuite/23_containers/multiset/allocator/103501.cc: New test.
482 * testsuite/23_containers/set/allocator/103501.cc: New test.
483
484 2022-06-14 Jonathan Wakely <jwakely (a] redhat.com>
485
486 PR libstdc++/97944
487 * testsuite/30_threads/jthread/95989.cc: Mark XFAIL.
488
489 2022-06-14 Jonathan Wakely <jwakely (a] redhat.com>
490
491 Backported from master:
492 2020-11-24 Jonathan Wakely <jwakely (a] redhat.com>
493
494 * testsuite/30_threads/jthread/95989.cc: Run all three test
495 functions, not just the first one twice.
496
497 2022-06-14 Jonathan Wakely <jwakely (a] redhat.com>
498
499 Backported from master:
500 2022-04-28 Jonathan Wakely <jwakely (a] redhat.com>
501
502 PR libstdc++/99290
503 * src/c++17/fs_ops.cc (fs::copy): Pass error_code to
504 directory_iterator constructor, and check on each iteration.
505 * src/filesystem/ops.cc (fs::copy): Likewise.
506 * testsuite/27_io/filesystem/operations/copy.cc: Check for
507 errors during recursion.
508 * testsuite/experimental/filesystem/operations/copy.cc:
509 Likewise.
510
511 2022-06-14 Jonathan Wakely <jwakely (a] redhat.com>
512
513 Backported from master:
514 2021-11-05 Jonathan Wakely <jwakely (a] redhat.com>
515
516 * testsuite/lib/gdb-test.exp: Add target selector support to the
517 dg-final directives.
518 * testsuite/libstdc++-prettyprinters/80276.cc: Add xfail for
519 C++20.
520 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
521 * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Tweak
522 comment.
523
524 2022-06-10 Jonathan Wakely <jwakely (a] redhat.com>
525
526 Backported from master:
527 2022-06-10 Jonathan Wakely <jwakely (a] redhat.com>
528
529 PR libstdc++/105915
530 * include/experimental/bits/fs_path.h (path::begin, path::end):
531 Remove noexcept from declarations.
532
533 2022-05-31 Patrick Palka <ppalka (a] redhat.com>
534
535 Backported from master:
536 2021-07-16 Patrick Palka <ppalka (a] redhat.com>
537
538 PR libstdc++/103904
539 PR libstdc++/101231
540 * include/std/ranges (_CachedPosition::_M_get): For non-forward
541 ranges, just call __builtin_unreachable.
542 * testsuite/std/ranges/istream_view.cc (test05): New test.
543
544 2022-05-31 Patrick Palka <ppalka (a] redhat.com>
545
546 Backported from master:
547 2021-06-18 Patrick Palka <ppalka (a] redhat.com>
548
549 PR libstdc++/103904
550 * include/bits/iterator_concepts.h (weakly_incrementable): Remove
551 default_initializable requirement.
552 * include/bits/stl_iterator.h (common_iterator): Constrain the
553 default ctor.
554 (counted_iterator): Likewise.
555 * include/std/ranges (ranges::view): Remove default_initializable
556 requirement.
557 (subrange): Constrain the default ctor.
558 (__detail::__box::operator=): Handle self-assignment.
559 (single_view): Constraint the default ctor.
560 (iota_view): Relax semiregular constraint to copyable.
561 Constrain the default ctor.
562 (iota_view::_Iterator): Constraint the default ctor.
563 (filter_view): Likewise.
564 (filter_view::_Iterator): Likewise.
565 (transform_view): Likewise.
566 (transform_view::_Iterator): Likewise.
567 (take_view): Likewise.
568 (take_view::_Iterator): Likewise.
569 (take_while_view): Likewise.
570 (take_while_view::_Iterator): Likewise.
571 (drop_while_view): Likewise.
572 (drop_while_view::_Iterator): Likewise.
573 (join_view): Likewise.
574 (split_view): Constrain the default ctor.
575 (common_view): Likewise.
576 (reverse_view): Likewise.
577 (elements_view): Likewise.
578 (elements_view::_Iterator): Likewise.
579 * include/std/span (enable_view<span<_ElementType, _Extent>>):
580 Define this partial specialization to true unconditionally.
581 * testsuite/std/ranges/p2325.cc: New test.
582 * testsuite/std/ranges/single_view.cc (test06): New test.
583 * testsuite/std/ranges/view.cc: Adjust now that view doesn't
584 require default_initializable.
585
586 2022-05-29 Iain Sandoe <iain (a] sandoe.co.uk>
587
588 Backported from master:
589 2021-03-15 Iain Sandoe <iain (a] sandoe.co.uk>
590
591 * testsuite/17_intro/names.cc: Exclude j from the list
592 of test symbols for Darwin.
593
594 2022-05-29 Iain Sandoe <iain (a] sandoe.co.uk>
595
596 Backported from master:
597 2021-11-19 Iain Sandoe <iain (a] sandoe.co.uk>
598
599 * testsuite/lib/prune.exp: Prune dsymutil (ld64) warning.
600
601 2022-05-16 Jonathan Wakely <jwakely (a] redhat.com>
602
603 Backported from master:
604 2022-05-16 Jonathan Wakely <jwakely (a] redhat.com>
605
606 * doc/xml/manual/prerequisites.xml: Fix attributes for external
607 hyperlink.
608 * doc/html/manual/setup.html: Regenerate.
609
610 2022-05-16 Jonathan Wakely <jwakely (a] redhat.com>
611
612 Backported from master:
613 2022-05-16 Jonathan Wakely <jwakely (a] redhat.com>
614
615 * doc/html/manual/status.html: Regenerate.
616 * doc/xml/manual/status_cxx2020.xml: Fix supported version for
617 C++20 bit operations.
618
619 2022-05-09 Jonathan Wakely <jwakely (a] redhat.com>
620
621 Backported from master:
622 2022-04-20 Jonathan Wakely <jwakely (a] redhat.com>
623
624 PR libstdc++/93602
625 * doc/xml/manual/prerequisites.xml: Document libiconv
626 workarounds.
627 * doc/html/manual/setup.html: Regenerate.
628 * src/Makefile.am (CXXLINK): Add $(LTLIBICONV).
629 * src/Makefile.in: Regenerate.
630
631 2022-05-09 Jonathan Wakely <jwakely (a] redhat.com>
632
633 Backported from master:
634 2022-05-06 Jonathan Wakely <jwakely (a] redhat.com>
635
636 PR libstdc++/105502
637 * include/bits/random.tcc
638 (operator>>(basic_istream<C,T>&, normal_distribution<R>&)):
639 Update state when __state_avail is false.
640 * testsuite/26_numerics/random/normal_distribution/operators/serialize.cc:
641 Check that deserialized object equals serialized one.
642
643 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
644
645 Backported from master:
646 2021-12-09 Jonathan Wakely <jwakely (a] redhat.com>
647
648 * include/bits/stl_iterator.h (operator==, operator<=>): Define
649 overloads for homogeneous specializations of reverse_iterator,
650 __normal_iterator and move_iterator.
651
652 2022-04-26 Patrick Palka <ppalka (a] redhat.com>
653
654 Backported from master:
655 2021-10-21 Patrick Palka <ppalka (a] redhat.com>
656
657 * include/bits/stl_iterator.h (common_iterator::__arrow_proxy):
658 Make fully constexpr as per LWG 3595.
659 (common_iterator::__postfix_proxy): Likewise.
660
661 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
662
663 Backported from master:
664 2022-01-18 Jonathan Wakely <jwakely (a] redhat.com>
665
666 PR libstdc++/104098
667 * include/bits/stl_iterator.h (reverse_iterator): Check
668 __cpp_lib_concepts instead of __cplusplus.
669
670 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
671
672 Backported from master:
673 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
674
675 * include/bits/range_access.h (ranges::empty): Check whether
676 conversion to bool can throw.
677 * testsuite/std/ranges/access/empty.cc: Check for correct
678 noexcept-specifier.
679
680 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
681
682 PR libstdc++/102048
683 * include/ext/rope (rope::erase(size_type)): Deprecate broken
684 function.
685
686 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
687
688 Backported from master:
689 2021-10-01 Jonathan Wakely <jwakely (a] redhat.com>
690
691 PR libstdc++/100153
692 * include/bits/vector.tcc (vector<bool>::_M_shrink_to_fit()):
693 When size() is zero just deallocate and reset.
694
695 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
696
697 Backported from master:
698 2021-11-01 Jonathan Wakely <jwakely (a] redhat.com>
699
700 * include/std/span (span(Range&&)): Reorder constraints.
701
702 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
703
704 Backported from master:
705 2021-11-09 Jonathan Wakely <jwakely (a] redhat.com>
706
707 * testsuite/26_numerics/random/random_device/cons/token.cc:
708 Retry if random devices produce the same value.
709
710 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
711
712 Backported from master:
713 2021-11-16 Jonathan Wakely <jwakely (a] redhat.com>
714
715 * testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc:
716 Fix reads past the end of strings.
717 * testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc:
718 Likewise.
719 * testsuite/experimental/string_view/operations/compare/wchar_t/1.cc:
720 Likewise.
721
722 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
723
724 Backported from master:
725 2021-11-10 Jonathan Wakely <jwakely (a] redhat.com>
726
727 PR libstdc++/100117
728 * testsuite/17_intro/headers/c++1998/49745.cc: Explicitly list
729 all C++ headers instead of including <bits/stdc++.h>
730
731 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
732
733 Backported from master:
734 2021-12-09 Jonathan Wakely <jwakely (a] redhat.com>
735
736 PR libstdc++/103630
737 * libsupc++/exception_ptr.h (make_exception_ptr): Decay the
738 template parameter. Use typeid of the static type.
739 * testsuite/18_support/exception_ptr/103630.cc: New test.
740
741 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
742
743 Backported from master:
744 2022-01-17 Jonathan Wakely <jwakely (a] redhat.com>
745
746 PR libstdc++/103650
747 * include/Makefile.am: Rename LT_OBJDIR and STDC_HEADERS.
748 * include/Makefile.in: Regenerate.
749 * testsuite/17_intro/headers/c++1998/103650.cc: New test.
750
751 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
752
753 Backported from master:
754 2022-02-04 Jonathan Wakely <jwakely (a] redhat.com>
755
756 * include/experimental/bits/fs_ops.h (fs::copy_file): Remove
757 noexcept.
758 (fs::create_directories): Likewise.
759 (fs::remove_all): Likewise.
760 * src/filesystem/ops.cc (fs::copy_file): Remove noexcept.
761 (fs::create_directories): Likewise.
762 (fs::remove_all): Likewise.
763
764 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
765
766 Backported from master:
767 2022-04-01 Jonathan Wakely <jwakely (a] redhat.com>
768
769 * include/experimental/bits/fs_fwd.h (copy_file): Remove
770 incorrect noexcept from declaration.
771 * include/experimental/bits/fs_path.h (path::begin, path::end):
772 Add noexcept to declarations, to match definitions.
773
774 2022-04-26 Timm Bder <tbaeder (a] redhat.com>
775
776 Backported from master:
777 2022-04-01 Timm Bder <tbaeder (a] redhat.com>
778
779 * include/bits/fs_ops.h: Fix filename in Doxygen comment.
780 * include/experimental/bits/fs_ops.h: Likewise.
781
782 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
783
784 Backported from master:
785 2022-04-20 Jonathan Wakely <jwakely (a] redhat.com>
786
787 * testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc:
788 Check correct feature test macro.
789
790 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
791
792 Backported from master:
793 2022-04-14 Jonathan Wakely <jwakely (a] redhat.com>
794
795 * doc/xml/manual/intro.xml: Fix comment.
796
797 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
798
799 Backported from master:
800 2022-03-03 Jonathan Wakely <jwakely (a] redhat.com>
801
802 * testsuite/17_intro/names.cc (func): Undef on AIX.
803
804 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
805
806 Backported from master:
807 2022-01-27 Jonathan Wakely <jwakely (a] redhat.com>
808
809 * include/bits/range_access.h (ranges::advance): Avoid signed
810 overflow. Do nothing if already equal to desired result.
811 * testsuite/24_iterators/range_operations/advance_overflow.cc:
812 New test.
813
814 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
815
816 Backported from master:
817 2022-01-06 Jonathan Wakely <jwakely (a] redhat.com>
818
819 * testsuite/ext/rope/pthread7-rope.cc: Add dg-timeout-factor.
820
821 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
822
823 Backported from master:
824 2022-01-06 Jonathan Wakely <jwakely (a] redhat.com>
825
826 PR libstdc++/103911
827 * include/std/charconv (__from_chars_alpha_to_num): Return
828 char instead of unsigned char. Change invalid return value to
829 127 instead of using numeric trait.
830 (__from_chars_alnum): Fix comment. Do not use std::isdigit.
831 Change type of variable to char.
832
833 2022-04-26 Pavel I. Kryukov <pavel.kryukov (a] phystech.edu>
834
835 Backported from master:
836 2022-01-06 Pavel I. Kryukov <pavel.kryukov (a] phystech.edu>
837 Jonathan Wakely <jwakely (a] redhat.com>
838
839 PR libstdc++/103853
840 * include/bits/forward_list.tcc (forward_list::merge): Check for
841 self-merge.
842 * testsuite/23_containers/forward_list/operations/merge.cc: New test.
843
844 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
845
846 Backported from master:
847 2021-12-14 Jonathan Wakely <jwakely (a] redhat.com>
848
849 * include/bits/regex_compiler.tcc (_Compiler::_M_match_token):
850 Use reserved name for parameter.
851 * testsuite/17_intro/names.cc: Check "token".
852
853 2022-04-26 Jonathan Wakely <jwakely (a] redhat.com>
854
855 Backported from master:
856 2021-08-25 Jonathan Wakely <jwakely (a] redhat.com>
857
858 * testsuite/17_intro/names.cc: Check 'sz'.
859
860 2022-04-14 Jonathan Wakely <jwakely (a] redhat.com>
861
862 * doc/xml/manual/status_cxx1998.xml: Refer to GCC 10 not
863 mainline.
864 * doc/xml/manual/status_cxx2011.xml: Likewise.
865 * doc/xml/manual/status_cxx2014.xml: Likewise.
866 * doc/xml/manual/status_cxx2017.xml: Likewise.
867 * doc/xml/manual/status_cxx2020.xml: Likewise.
868 * doc/xml/manual/status_cxxtr1.xml: Likewise.
869 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
870 * doc/html/manual/status.html: Regenerate.
871
872 2022-02-17 Patrick Palka <ppalka (a] redhat.com>
873
874 Backported from master:
875 2021-10-21 Patrick Palka <ppalka (a] redhat.com>
876
877 PR libstdc++/102358
878 * include/bits/stl_iterator.h (__niter_base): Make constexpr
879 for C++20.
880 (__miter_base): Likewise.
881 * testsuite/25_algorithms/move/constexpr.cc: New test.
882
883 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
884
885 Backported from master:
886 2021-11-18 Jonathan Wakely <jwakely (a] redhat.com>
887
888 * include/bits/char_traits.h (__gnu_cxx::char_traits::move):
889 Do not compare unrelated pointers during constant evaluation.
890 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
891 Improve tests for char_traits::move.
892
893 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
894
895 Backported from master:
896 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
897
898 PR libstdc++/103877
899 * doc/xml/faq.xml: Add '-x c++' to preprocessor command.
900 * doc/html/faq.html: Regenerate.
901
902 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
903
904 Backported from master:
905 2021-12-04 Jonathan Wakely <jwakely (a] redhat.com>
906
907 PR libstdc++/103549
908 * include/bits/regex.h (match_results): Give names to template
909 parameters in first declaration.
910 (match_results::_M_begin): Add default member-initializer.
911
912 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
913
914 Backported from master:
915 2021-11-30 Jonathan Wakely <jwakely (a] redhat.com>
916
917 PR libstdc++/103453
918 * config/allocator/malloc_allocator_base.h
919 (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define for Clang.
920 * config/allocator/new_allocator_base.h
921 (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Likewise.
922
923 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
924
925 Backported from master:
926 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
927
928 * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Strip
929 versioned namespace from the type name that is printed.
930
931 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
932
933 Backported from master:
934 2021-08-28 Jonathan Wakely <jwakely (a] redhat.com>
935
936 * include/bits/alloc_traits.h (allocator_traits): Add explicit
937 specialization for allocator<void>. Improve doxygen comments.
938 * include/bits/allocator.h (allocator<void>): Restore for the
939 versioned namespace.
940 (allocator<void>::construct, allocator<void>::destroy): Remove.
941 * include/ext/extptr_allocator.h (_Extptr_allocator<void>):
942 Add default constructor and converting constructor.
943
944 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
945
946 Backported from master:
947 2021-11-23 Jonathan Wakely <jwakely (a] redhat.com>
948
949 PR libstdc++/103086
950 * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr
951 with non-empty pointer and non-empty deleter.
952
953 2022-01-05 Jonathan Wakely <jwakely (a] redhat.com>
954
955 Backported from master:
956 2021-11-04 Jonathan Wakely <jwakely (a] redhat.com>
957
958 PR libstdc++/103086
959 * python/libstdcxx/v6/printers.py (_tuple_impl_get): New helper
960 for accessing the tuple element stored in a _Tuple_impl node.
961 (tuple_get): New function for accessing a tuple element.
962 (unique_ptr_get): New function for accessing a unique_ptr.
963 (UniquePointerPrinter, StdPathPrinter): Use unique_ptr_get.
964 * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker): Cast
965 tuple to its base class before accessing _M_head_impl.
966
967 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
968
969 Backported from master:
970 2021-07-22 Jonathan Wakely <jwakely (a] redhat.com>
971
972 PR libstdc++/101571
973 * include/bits/ranges_uninitialized.h (_DestroyGuard): Change
974 constructor parameter to reference and use addressof.
975 * testsuite/util/testsuite_iterators.h: Define deleted operator&
976 overloads for test iterators.
977
978 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
979
980 Backported from master:
981 2021-08-19 Jonathan Wakely <jwakely (a] redhat.com>
982
983 PR libstdc++/101965
984 * include/std/charconv (__to_chars_i): Remove redundant check.
985
986 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
987
988 Backported from master:
989 2021-10-22 Jonathan Wakely <jwakely (a] redhat.com>
990
991 PR libstdc++/102894
992 * include/std/any (make_any): Add SFINAE constraint.
993 * testsuite/20_util/any/102894.cc: New test.
994
995 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
996
997 PR libstdc++/102270
998 * include/std/tuple (_Head_base, _Tuple_impl): Add
999 _GLIBCXX20_CONSTEXPR to allocator-extended constructors.
1000 (tuple<>::swap(tuple&)): Add _GLIBCXX20_CONSTEXPR.
1001 * testsuite/20_util/tuple/cons/102270.cc: New test.
1002 * testsuite/util/testsuite_allocator.h (SimpleAllocator): Add
1003 constexpr to constructor so it can be used for C++20 tests.
1004
1005 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1006
1007 Backported from master:
1008 2021-08-09 Jonathan Wakely <jwakely (a] redhat.com>
1009
1010 * testsuite/23_containers/unordered_map/cons/default.cc: Add
1011 equality comparison operators to allocator.
1012 * testsuite/23_containers/unordered_set/cons/default.cc:
1013 Likewise.
1014
1015 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1016
1017 Backported from master:
1018 2021-07-20 Jonathan Wakely <jwakely (a] redhat.com>
1019
1020 PR libstdc++/100863
1021 * include/bits/hashtable.h (_Hashtable): Conditionally delete
1022 default constructor by deriving from _Enable_default_constructor.
1023 Construct that base-class explicitly in all non-forwarding,
1024 non-defaulted constructors.
1025 * testsuite/23_containers/unordered_map/cons/default.cc: New test.
1026 * testsuite/23_containers/unordered_set/cons/default.cc: New test.
1027
1028 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1029
1030 Backported from master:
1031 2021-06-02 Jonathan Wakely <jwakely (a] redhat.com>
1032
1033 PR libstdc++/100863
1034 PR libstdc++/65816
1035 * include/bits/hashtable_policy.h (_Hashtable_ebo_helper):
1036 Value-initialize subobject.
1037 * testsuite/23_containers/unordered_map/allocator/default_init.cc:
1038 Remove XFAIL.
1039 * testsuite/23_containers/unordered_set/allocator/default_init.cc:
1040 Remove XFAIL.
1041
1042 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1043
1044 Backported from master:
1045 2021-09-28 Jonathan Wakely <jwakely (a] redhat.com>
1046
1047 * include/bits/move.h (forward(remove_reference_t<T>&&)):
1048 Improve text of static_assert.
1049 * testsuite/20_util/forward/c_neg.cc: Adjust dg-error.
1050 * testsuite/20_util/forward/f_neg.cc: Likewise.
1051
1052 2021-11-26 Antony Polukhin <antoshkka (a] gmail.com>
1053
1054 Backported from master:
1055 2021-08-17 Antony Polukhin <antoshkka (a] gmail.com>
1056 Jonathan Wakely <jwakely (a] redhat.com>
1057
1058 * include/bits/random.tcc (seed_seq::seed_seq): Reserve capacity
1059 if distance is O(1).
1060 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
1061 line number.
1062
1063 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1064
1065 Backported from master:
1066 2021-08-12 Jonathan Wakely <jwakely (a] redhat.com>
1067
1068 PR libstdc++/101870
1069 * include/c_global/cmath (hypot): Use __promoted_t.
1070 (lerp): Add new overload accepting any arithmetic types.
1071 * include/ext/type_traits.h (__promoted_t): New alias template.
1072 * testsuite/26_numerics/lerp.cc: Moved to...
1073 * testsuite/26_numerics/lerp/1.cc: ...here.
1074 * testsuite/26_numerics/lerp/constexpr.cc: New test.
1075 * testsuite/26_numerics/lerp/version.cc: New test.
1076
1077 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1078
1079 * testsuite/27_io/types/1.cc: Add c++11 target selector to
1080 warnings.
1081
1082 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1083
1084 Backported from master:
1085 2021-05-11 Jonathan Wakely <jwakely (a] redhat.com>
1086
1087 * testsuite/20_util/headers/memory/synopsis.cc: Define C++98
1088 alternative for macro.
1089 * testsuite/20_util/shared_ptr/creation/99006.cc: Add effective
1090 target keyword.
1091 * testsuite/25_algorithms/copy/debug/99402.cc: Avoid C++11
1092 syntax.
1093
1094 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1095
1096 * testsuite/23_containers/array/comparison_operators/96851.cc:
1097 Skip test in debug mode.
1098
1099 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1100
1101 * include/bits/stl_iterator.h: Include required header for
1102 std::iterator class template and iterator category tags.
1103
1104 2021-11-26 Jonathan Wakely <jwakely (a] redhat.com>
1105
1106 Backported from master:
1107 2021-11-25 Jonathan Wakely <jwakely (a] redhat.com>
1108
1109 PR libstdc++/101608
1110 * include/bits/ranges_algobase.h (__fill_n_fn): Check for
1111 constant evaluation before using memset.
1112 * testsuite/25_algorithms/fill_n/constrained.cc: Check
1113 byte-sized values as well.
1114
1115 2021-11-23 Jonathan Wakely <jwakely (a] redhat.com>
1116
1117 Backported from master:
1118 2021-11-23 Jonathan Wakely <jwakely (a] redhat.com>
1119
1120 PR libstdc++/103381
1121 * include/ext/bitmap_allocator.h: Include <bits/stl_function.h>
1122 instead of <functional>.
1123
1124 2021-11-01 Jonathan Wakely <jwakely (a] redhat.com>
1125
1126 * include/std/valarray (begin, end): Remove nodiscard attribute.
1127
1128 2021-11-01 Jonathan Wakely <jwakely (a] redhat.com>
1129
1130 Backported from master:
1131 2021-11-01 Jonathan Wakely <jwakely (a] redhat.com>
1132
1133 PR libstdc++/103022
1134 * include/std/valarray (begin, end): Do not dereference an empty
1135 valarray. Add noexcept and [[nodiscard]].
1136 * testsuite/26_numerics/valarray/range_access.cc: Check empty
1137 valarray. Check iterator properties. Run as well as compiling.
1138 * testsuite/26_numerics/valarray/range_access2.cc: Likewise.
1139 * testsuite/26_numerics/valarray/103022.cc: New test.
1140
1141 2021-10-13 Jonathan Wakely <jwakely (a] redhat.com>
1142
1143 Backported from master:
1144 2021-10-13 Jonathan Wakely <jwakely (a] redhat.com>
1145
1146 * testsuite/28_regex/match_results/102667.C: Moved to...
1147 * testsuite/28_regex/match_results/102667.cc: ...here.
1148
1149 2021-10-13 Jonathan Wakely <jwakely (a] redhat.com>
1150
1151 * testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc:
1152 Use -std=gnu++17 option.
1153
1154 2021-10-13 Jonathan Wakely <jwakely (a] redhat.com>
1155
1156 Backported from master:
1157 2021-08-20 Jonathan Wakely <jwakely (a] redhat.com>
1158
1159 PR libstdc++/90787
1160 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
1161 Use new __gnu_test::permissions_are_testable() function.
1162 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
1163 Likewise.
1164 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
1165 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
1166 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
1167 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
1168 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
1169 * testsuite/27_io/filesystem/operations/symlink_status.cc:
1170 Likewise.
1171 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
1172 Likewise.
1173 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
1174 Likewise.
1175 * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
1176 Likewise.
1177 * testsuite/experimental/filesystem/operations/exists.cc:
1178 Likewise.
1179 * testsuite/experimental/filesystem/operations/is_empty.cc:
1180 Likewise.
1181 * testsuite/experimental/filesystem/operations/remove.cc:
1182 Likewise.
1183 * testsuite/experimental/filesystem/operations/remove_all.cc:
1184 Likewise.
1185 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
1186 Likewise.
1187 * testsuite/util/testsuite_fs.h (__gnu_test::permissions_are_testable):
1188 New function to guess whether testing permissions will work.
1189
1190 2021-10-13 Jonathan Wakely <jwakely (a] redhat.com>
1191
1192 * testsuite/27_io/filesystem/operations/remove_all.cc: Remove
1193 test directory after making it writable again.
1194 * testsuite/experimental/filesystem/operations/remove_all.cc:
1195 Likewise.
1196
1197 2021-10-13 Jonathan Wakely <jwakely (a] redhat.com>
1198
1199 Backported from master:
1200 2021-06-22 Jonathan Wakely <jwakely (a] redhat.com>
1201
1202 * include/bits/random.h (seed_seq): Constrain initializer-list
1203 constructor.
1204 * include/bits/random.tcc (seed_seq): Add template parameter.
1205 * testsuite/26_numerics/random/seed_seq/cons/default.cc: Check
1206 for noexcept.
1207 * testsuite/26_numerics/random/seed_seq/cons/initlist.cc: Check
1208 constraints.
1209
1210 2021-10-13 Jonathan Wakely <jwakely (a] redhat.com>
1211
1212 Backported from master:
1213 2021-05-12 Jonathan Wakely <jwakely (a] redhat.com>
1214
1215 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
1216 Increase dg-timeout-factor to 4. Fix -Wunused-parameter
1217 warnings. Replace bitwise AND with logical AND in loop
1218 condition.
1219 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
1220 Replace bitwise AND with logical AND in loop condition.
1221 * testsuite/util/pstl/test_utils.h: Remove unused parameter
1222 names.
1223
1224 2021-10-13 Patrick Palka <ppalka (a] redhat.com>
1225
1226 Backported from master:
1227 2021-04-28 Patrick Palka <ppalka (a] redhat.com>
1228
1229 PR libstdc++/100187
1230 PR libstdc++/100237
1231 PR libstdc++/100249
1232 PR libstdc++/100287
1233 * include/bits/ranges_algo.h (__search_n_fn::operator()): Give
1234 the __value_comp lambda an explicit bool return type.
1235 (__is_permutation_fn::operator()): Give the __proj_scan local
1236 variable auto&& return type. Give the __comp_scan lambda an
1237 explicit bool return type.
1238 (__remove_fn::operator()): Give the __pred lambda an explicit
1239 bool return type.
1240 (__partition_fn::operator()): Don't std::move __first twice
1241 when returning an empty subrange.
1242 (__min_fn::operator()): Don't std::move __comp.
1243 (__max_fn::operator()): Likewise.
1244 (__minmax_fn::operator()): Likewise.
1245
1246 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1247
1248 Backported from master:
1249 2021-08-02 Patrick Palka <ppalka (a] redhat.com>
1250
1251 PR libstdc++/101599
1252 * include/bits/ranges_algo.h (__reverse_copy_fn::operator()):
1253 Add missing std::move in return statement.
1254 (__partition_copy_fn::operator()): Rename templtae parameter
1255 _O2 to _Out2. Uglify function parameters out_true and out_false.
1256 * include/bits/ranges_algobase.h (__copy_or_move): Add missing
1257 std::move to recursive call that unwraps a __normal_iterator
1258 output iterator.
1259 * testsuite/25_algorithms/copy/constrained.cc (test06): New test.
1260 * testsuite/25_algorithms/move/constrained.cc (test05): New test.
1261
1262 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1263
1264 Backported from master:
1265 2021-08-02 Patrick Palka <ppalka (a] redhat.com>
1266
1267 PR libstdc++/101589
1268 * include/std/ranges (lazy_split_view::_InnerIter::base): Make
1269 the const& overload unconstrained and return a const reference
1270 as per LWG 3533. Make unconditionally noexcept.
1271 (elements_view::base): Revert accidental r12-569 change.
1272 (elements_view::_Iterator::base): Make the const& overload
1273 unconstrained and return a const reference as per LWG 3533.
1274 Make unconditionally noexcept.
1275
1276 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1277
1278 Backported from master:
1279 2021-08-02 Patrick Palka <ppalka (a] redhat.com>
1280
1281 PR libstdc++/101483
1282 * include/std/ranges (join_view::_Iterator::_Iterator): Add
1283 missing std::move.
1284
1285 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1286
1287 Backported from master:
1288 2021-06-20 Patrick Palka <ppalka (a] redhat.com>
1289
1290 * include/std/ranges (split_view::_InnerIter::base): Define as
1291 per P2210.
1292
1293 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1294
1295 Backported from master:
1296 2021-06-19 Patrick Palka <ppalka (a] redhat.com>
1297
1298 * include/std/ranges (transform_view::_Iterator::_S_iter_concept):
1299 Consider _Base instead of _Vp as per LWG 3555.
1300 (elements_view::_Iterator::_S_iter_concept): Likewise.
1301
1302 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1303
1304 Backported from master:
1305 2021-06-19 Patrick Palka <ppalka (a] redhat.com>
1306
1307 * include/std/ranges (split_view::_OuterIter::value_type::begin):
1308 Remove the non-const overload, and remove the copyable constraint
1309 on the const overload as per LWG 3553.
1310
1311 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1312
1313 Backported from master:
1314 2021-06-19 Patrick Palka <ppalka (a] redhat.com>
1315
1316 * include/bits/stl_iterator.h
1317 (__detail::__common_iter_use_postfix_proxy): Add
1318 move_constructible constraint as per LWG 3546.
1319 (common_iterator::__postfix_proxy): Adjust initializer of
1320 _M_keep as per LWG 3546.
1321
1322 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1323
1324 Backported from master:
1325 2021-06-18 Patrick Palka <ppalka (a] redhat.com>
1326
1327 PR libstdc++/100387
1328 * include/bits/ranges_algo.h (__minmax_fn::operator()): Rewrite
1329 to limit comparison complexity to 3*N/2.
1330 (__minmax_element_fn::operator()): Likewise.
1331 (shift_right): Avoid premature std::move of __result.
1332 * testsuite/25_algorithms/minmax/constrained.cc (test04, test05):
1333 New tests.
1334 * testsuite/25_algorithms/minmax_element/constrained.cc (test02):
1335 Likewise.
1336
1337 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1338
1339 Backported from master:
1340 2021-06-18 Patrick Palka <ppalka (a] redhat.com>
1341
1342 * include/std/concepts (convertible_to): Just use declval as per
1343 LWG 3557.
1344
1345 2021-10-12 Patrick Palka <ppalka (a] redhat.com>
1346
1347 Backported from master:
1348 2021-05-21 Patrick Palka <ppalka (a] redhat.com>
1349
1350 PR libstdc++/100606
1351 * include/std/ranges (drop_while_view::begin): Assert the
1352 precondition added by LWG 3490.
1353
1354 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1355
1356 Backported from master:
1357 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1358
1359 * testsuite/20_util/tuple/comparison_operators/overloaded.cc:
1360 Restore test for operator<.
1361
1362 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1363
1364 Backported from master:
1365 2021-10-08 Jonathan Wakely <jwakely (a] redhat.com>
1366
1367 * testsuite/27_io/basic_filebuf/close/81256.cc: Moved to...
1368 * testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc: ...here.
1369
1370 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1371
1372 Backported from master:
1373 2021-10-05 Jonathan Wakely <jwakely (a] redhat.com>
1374
1375 * testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc:
1376 New test.
1377 * testsuite/23_containers/span/trivially_copyable.cc: New test.
1378
1379 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1380
1381 Backported from master:
1382 2021-08-16 Jonathan Wakely <jwakely (a] redhat.com>
1383
1384 * python/Makefile.am [GLIBCXX_BUILD_DEBUG] (install-data-local):
1385 Install another copy of the GDB hook.
1386 * python/Makefile.in: Regenerate.
1387
1388 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1389
1390 Backported from master:
1391 2021-08-17 Jonathan Wakely <jwakely (a] redhat.com>
1392
1393 * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Define.
1394 (build_libstdcxx_dictionary): Register printer for
1395 std::error_code and std::error_condition.
1396 * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
1397
1398 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1399
1400 Backported from master:
1401 2021-09-23 Jonathan Wakely <jwakely (a] redhat.com>
1402
1403 PR libstdc++/102425
1404 * src/c++11/system_error.cc
1405 (system_error_category::default_error_condition): Add 0 to
1406 switch.
1407 * testsuite/19_diagnostics/error_category/102425.cc: New test.
1408
1409 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1410
1411 Backported from master:
1412 2021-09-16 Jonathan Wakely <jwakely (a] redhat.com>
1413
1414 * include/bits/fs_path.h (advance): Remove non-deducible
1415 template parameter.
1416
1417 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1418
1419 Backported from master:
1420 2021-08-28 Jonathan Wakely <jwakely (a] redhat.com>
1421
1422 PR libstdc++/99876
1423 * src/c++17/fs_ops.cc (fs::absolute): Call non-throwing form,
1424 to avoid unnecessary current_path() call.
1425
1426 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1427
1428 Backported from master:
1429 2021-09-17 Jonathan Wakely <jwakely (a] redhat.com>
1430
1431 * testsuite/26_numerics/valarray/dr630-3.C: Moved to...
1432 * testsuite/26_numerics/valarray/dr630-3.cc: ...here.
1433 * testsuite/27_io/basic_iostream/cons/16251.C: Moved to...
1434 * testsuite/27_io/basic_iostream/cons/16251.cc: ...here.
1435
1436 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1437
1438 Backported from master:
1439 2021-09-16 Jonathan Wakely <jwakely (a] redhat.com>
1440
1441 PR libstdc++/102280
1442 * include/std/span (span(Range&&)): Add constraint to deduction
1443 guide.
1444
1445 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1446
1447 Backported from master:
1448 2021-10-01 Jonathan Wakely <jwakely (a] redhat.com>
1449
1450 * testsuite/25_algorithms/is_permutation/2.cc: Include <iterator>.
1451
1452 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1453
1454 Backported from master:
1455 2021-10-05 Jonathan Wakely <jwakely (a] redhat.com>
1456
1457 * testsuite/20_util/integer_comparisons/greater.cc: New test.
1458
1459 2021-10-12 Jonathan Wakely <jwakely (a] redhat.com>
1460
1461 Backported from master:
1462 2021-10-11 Jonathan Wakely <jwakely (a] redhat.com>
1463
1464 PR libstdc++/102667
1465 * include/bits/regex.h (match_result::empty()): Optimize by
1466 calling the base function directly.
1467 (match_results::end()): Check _Base_type::empty() not empty().
1468 * testsuite/28_regex/match_results/102667.C: New test.
1469
1470 2021-08-23 Jonathan Wakely <jwakely (a] redhat.com>
1471
1472 Backported from master:
1473 2021-08-23 Jonathan Wakely <jwakely (a] redhat.com>
1474
1475 * include/std/ranges (basic_istream_view): Add default template
1476 argument.
1477 * testsuite/std/ranges/istream_view.cc: Check it.
1478
1479 2021-08-19 Jonathan Wakely <jwakely (a] redhat.com>
1480
1481 Backported from master:
1482 2021-08-19 Jonathan Wakely <jwakely (a] redhat.com>
1483
1484 PR libstdc++/100139
1485 * doc/xml/manual/status_cxx2020.xml: Add P1739R4 to status table.
1486 * doc/html/manual/status.html: Regenerate.
1487
1488 2021-08-17 Thomas Schwinge <thomas (a] codesourcery.com>
1489
1490 Backported from master:
1491 2021-08-17 Thomas Schwinge <thomas (a] codesourcery.com>
1492
1493 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose,
1494 continued.
1495
1496 2021-08-11 Jonathan Wakely <jwakely (a] redhat.com>
1497
1498 Backported from master:
1499 2021-08-11 Jonathan Wakely <jwakely (a] redhat.com>
1500
1501 PR libstdc++/101866
1502 * testsuite/experimental/random/randint.cc: Loop and retry if
1503 reseed() produces the same sequence.
1504
1505 2021-08-11 Jonathan Wakely <jwakely (a] redhat.com>
1506
1507 Backported from master:
1508 2021-07-20 Jonathan Wakely <jwakely (a] redhat.com>
1509
1510 PR libstdc++/101510
1511 * src/c++17/fs_ops.cc (fs::create_directories): Use status
1512 instead of symlink_status.
1513 * src/filesystem/ops.cc (fs::create_directories): Likewise.
1514 * testsuite/27_io/filesystem/operations/create_directories.cc:
1515 Check symlink to existing directory.
1516 * testsuite/27_io/filesystem/operations/create_directory.cc: Do
1517 not test with symlinks on Windows.
1518 * testsuite/experimental/filesystem/operations/create_directories.cc:
1519 Check symlink to existing directory.
1520 * testsuite/experimental/filesystem/operations/create_directory.cc:
1521 Do not test with symlinks on Windows.
1522
1523 2021-08-11 Jonathan Wakely <jwakely (a] redhat.com>
1524
1525 Backported from master:
1526 2021-07-20 Jonathan Wakely <jwakely (a] redhat.com>
1527
1528 PR libstdc++/101510
1529 * src/c++17/fs_ops.cc (create_dir): Adjust whitespace.
1530 * testsuite/27_io/filesystem/operations/create_directory.cc:
1531 Test creating directory with name of existing symlink to
1532 directory.
1533 * testsuite/experimental/filesystem/operations/create_directory.cc:
1534 Likewise.
1535
1536 2021-08-11 Jonathan Wakely <jwakely (a] redhat.com>
1537
1538 Backported from master:
1539 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
1540
1541 PR libstdc++/101056
1542 * libsupc++/compare (compare_partial_order_fallback): Add
1543 constraint using reversed parameter order, as per LWG 3465.
1544 * testsuite/18_support/comparisons/algorithms/fallback.cc:
1545 Adjust expected result.
1546
1547 2021-08-11 Jonathan Wakely <jwakely (a] redhat.com>
1548
1549 Backported from master:
1550 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
1551
1552 * libsupc++/compare (__decayed_same_as): New helper concept.
1553 (strong_order, weak_order, partial_order): Constrain with new
1554 concept instead of using static_assert.
1555 (compare_strong_order_fallback, compare_weak_order_fallback)
1556 (compare_partial_order_fallback): Likewise. Do not deduce return
1557 types. Remove redundant if-constexpr checks.
1558 * testsuite/18_support/comparisons/algorithms/fallback.cc: New test.
1559
1560 2021-08-10 Jonathan Wakely <jwakely (a] redhat.com>
1561
1562 Backported from master:
1563 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
1564
1565 PR libstdc++/100894
1566 * include/std/type_traits (__common_ref_impl<X&, Y&>): Only
1567 use the type if it's a reference.
1568 * testsuite/20_util/common_reference/100894.cc: New test.
1569
1570 2021-07-22 Jonathan Wakely <jwakely (a] redhat.com>
1571
1572 Backported from master:
1573 2021-04-15 Jonathan Wakely <jwakely (a] redhat.com>
1574
1575 PR libstdc++/96657
1576 * libsupc++/Makefile.am: Add atomicity.cc here.
1577 * src/c++98/Makefile.am: Remove it from here.
1578 * libsupc++/Makefile.in: Regenerate.
1579 * src/c++98/Makefile.in: Regenerate.
1580 * testsuite/18_support/exception_ptr/96657.cc: New test.
1581
1582 2021-07-22 Jonathan Wakely <jwakely (a] redhat.com>
1583
1584 Backported from master:
1585 2021-06-07 Jonathan Wakely <jwakely (a] redhat.com>
1586
1587 PR libstdc++/98842
1588 * include/std/optional (operator<=>(const optional<T>& const U&)):
1589 Add missing constraint and add workaround for template
1590 recursion.
1591 * testsuite/20_util/optional/relops/three_way.cc: Check that
1592 type without equality comparison cannot be compared when wrapped
1593 in std::optional.
1594
1595 2021-07-14 Jonathan Wakely <jwakely (a] redhat.com>
1596
1597 Backported from master:
1598 2021-07-13 Jonathan Wakely <jwakely (a] redhat.com>
1599
1600 PR c++/101361
1601 * include/std/string_view (ends_with): Use traits_type::compare
1602 directly.
1603
1604 2021-07-14 Jonathan Wakely <jwakely (a] redhat.com>
1605
1606 Backported from master:
1607 2021-07-12 Jonathan Wakely <jwakely (a] redhat.com>
1608
1609 PR libstdc++/101411
1610 * include/std/span (as_writable_bytes): Add requires-clause.
1611 * testsuite/23_containers/span/101411.cc: New test.
1612
1613 2021-07-06 Avi Kivity <avi (a] scylladb.com>
1614
1615 Backported from master:
1616 2021-06-07 Avi Kivity <avi (a] scylladb.com>
1617
1618 PR libstdc++/100900
1619 * include/std/ranges (elements_view::__iter_cat::_S_iter_cat):
1620 Add missing typename.
1621
1622 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1623
1624 Backported from master:
1625 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1626
1627 PR libstdc++/95833
1628 * include/std/numeric (reduce(Iter, Iter, T, BinaryOp)): Replace
1629 incorrect static_assert with ones matching the 'Mandates'
1630 conditions in the standard.
1631 * testsuite/26_numerics/reduce/95833.cc: New test.
1632
1633 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1634
1635 * include/std/variant (__same_types, __check_visitor_results):
1636 Remove.
1637
1638 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1639
1640 Backported from master:
1641 2021-05-04 Jonathan Wakely <jwakely (a] redhat.com>
1642
1643 * include/std/future (promise::set_value): Check for existence
1644 of shared state before dereferncing it.
1645 (promise::set_exception, promise::set_value_at_thread_exit)
1646 (promise::set_exception_at_thread_exit): Likewise.
1647 (promise<R&>::set_value, promise<R&>::set_exception)
1648 (promise<R&>::set_value_at_thread_exit)
1649 (promise<R&>::set_exception_at_thread_exit): Likewise.
1650 (promise<void>::set_value, promise<void>::set_exception)
1651 (promise<void>::set_value_at_thread_exit)
1652 (promise<void>::set_exception_at_thread_exit): Likewise.
1653 * testsuite/30_threads/promise/members/at_thread_exit2.cc:
1654 Remove unused variable.
1655
1656 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1657
1658 Backported from master:
1659 2021-05-04 Jonathan Wakely <jwakely (a] redhat.com>
1660
1661 * include/bits/basic_string.h (basic_string(const CharT*, const A&)):
1662 Do not do arithmetic on null pointer.
1663
1664 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1665
1666 Backported from master:
1667 2021-05-04 Jonathan Wakely <jwakely (a] redhat.com>
1668
1669 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
1670 (find_key_pointer(key_const_reference, false_type))
1671 (find_key_pointer(key_const_reference, true_type)): Do not
1672 dereference null pointer.
1673
1674 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1675
1676 Backported from master:
1677 2021-05-04 Jonathan Wakely <jwakely (a] redhat.com>
1678
1679 * testsuite/20_util/from_chars/3.cc: Use unsigned type to avoid
1680 overflow.
1681 * testsuite/24_iterators/reverse_iterator/2.cc: Do not add
1682 non-zero value to null pointer.
1683 * testsuite/25_algorithms/copy_backward/move_iterators/69478.cc:
1684 Use past-the-end iterator for result.
1685 * testsuite/25_algorithms/move_backward/69478.cc: Likewise.
1686 * testsuite/25_algorithms/move_backward/93872.cc: Likewise.
1687
1688 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1689
1690 Backported from master:
1691 2021-05-04 Jonathan Wakely <jwakely (a] redhat.com>
1692
1693 PR libstdc++/100384
1694 * include/std/variant (__get_t): New alias template yielding the
1695 return type of std::get<N> on a variant.
1696 (__visit_result_t): New alias template yielding the result of
1697 std::visit.
1698 (__same_types): Move into namespace __detail::__variant.
1699 (__check_visitor_results): Likewise. Use __invoke_result_t and
1700 __get_t.
1701 (__check_visitor_result): Remove.
1702 (visit): Use __visit_result_t for return type.
1703 * testsuite/20_util/variant/100384.cc: New test.
1704
1705 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1706
1707 Backported from master:
1708 2021-04-22 Jonathan Wakely <jwakely (a] redhat.com>
1709
1710 PR libstdc++/99006
1711 * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
1712 is not an array type.
1713 * include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
1714 * testsuite/20_util/shared_ptr/creation/99006.cc: New test.
1715
1716 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1717
1718 Backported from master:
1719 2021-05-11 Jonathan Wakely <jwakely (a] redhat.com>
1720
1721 * include/bits/allocator.h (allocator<void>) [C++20]: Add
1722 missing noexcept to constructor. Restore missing POCMA and
1723 is_always_equal_traits.
1724 * include/bits/memoryfwd.h (allocator_traits): Declare.
1725 * include/ext/malloc_allocator.h (malloc_allocator::allocate):
1726 Add nodiscard attribute. Add static assertion for LWG 3307.
1727 * include/ext/new_allocator.h (new_allocator::allocate): Add
1728 static assertion for LWG 3307.
1729 * testsuite/20_util/allocator/void.cc: Check that converting
1730 constructor is noexcept. Check for propagation traits and
1731 size_type and difference_type. Check that pointer and
1732 const_pointer are gone in C++20.
1733
1734 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1735
1736 Backported from master:
1737 2021-05-10 Jonathan Wakely <jwakely (a] redhat.com>
1738
1739 * include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)):
1740 Initialize a non-reference deleter from an rvalue, as per LWG
1741 3548.
1742 (__shared_ptr::_UniqCompatible): Add missing constraint.
1743 * testsuite/20_util/shared_ptr/cons/lwg3548.cc: New test.
1744 * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Check
1745 constraints.
1746
1747 2021-06-18 Jonathan Wakely <jwakely (a] redhat.com>
1748
1749 Backported from master:
1750 2021-06-17 Jonathan Wakely <jwakely (a] redhat.com>
1751
1752 PR libstdc++/91488
1753 * include/bits/basic_string.h (__cpp_lib_constexpr_string): Only
1754 define C++20 value when std::is_constant_evaluated is available.
1755 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
1756 Likewise.
1757 (__constant_string_p, __constant_array_p): Give external
1758 linkage.
1759 * include/std/version (__cpp_lib_constexpr_char_traits)
1760 (__cpp_lib_constexpr_string): Only define C++20 values when
1761 is_constant_evaluated is available.
1762
1763 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
1764
1765 Backported from master:
1766 2021-05-10 Jonathan Wakely <jwakely (a] redhat.com>
1767
1768 * testsuite/20_util/scoped_allocator/69293_neg.cc: Add dg-error
1769 for additional errors in C++20.
1770 * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
1771 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
1772
1773 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
1774
1775 Backported from master:
1776 2021-06-09 Jonathan Wakely <jwakely (a] redhat.com>
1777
1778 PR libstdc++/100982
1779 * include/std/optional (optional::operator=(const optional<U>&)):
1780 Fix value category used in is_assignable check.
1781 * testsuite/20_util/optional/assignment/100982.cc: New test.
1782
1783 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
1784
1785 Backported from master:
1786 2021-06-14 Jonathan Wakely <jwakely (a] redhat.com>
1787
1788 PR libstdc++/101034
1789 * include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
1790 (any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
1791 to use lvalue.
1792 * testsuite/20_util/any/cons/101034.cc: New test.
1793
1794 2021-06-10 Patrick Palka <ppalka (a] redhat.com>
1795
1796 Backported from master:
1797 2021-06-03 Patrick Palka <ppalka (a] redhat.com>
1798
1799 PR libstdc++/100770
1800 * include/bits/ranges_algo.h (__detail::__can_reread_output):
1801 Factor out this concept from ...
1802 (__unique_copy_fn::operator()): ... here. Use the concept
1803 throughout.
1804 * testsuite/std/ranges/range.cc: Remove now ill-formed use
1805 of range_value_t on an output_range.
1806 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
1807 Define value_type, pointer and reference member types to void.
1808
1809 2021-06-10 Patrick Palka <ppalka (a] redhat.com>
1810
1811 Backported from master:
1812 2021-05-21 Patrick Palka <ppalka (a] redhat.com>
1813
1814 PR libstdc++/100690
1815 * include/std/ranges (iota_view::_Sentinel::_M_distance_from):
1816 Split out this member function from ...
1817 (iota_view::_Sentinel::operator-): ... here, for sake of access
1818 control.
1819 * testsuite/std/ranges/iota/iota_view.cc (test05): New test.
1820
1821 2021-06-10 Patrick Palka <ppalka (a] redhat.com>
1822
1823 Backported from master:
1824 2021-05-06 Patrick Palka <ppalka (a] redhat.com>
1825
1826 * include/std/ranges (filter_view::_Iterator::base): Make the
1827 const& overload unconstrained and return a const reference as
1828 per LWG 3533. Make unconditionally noexcept.
1829 (transform_view::_Iterator::base): Likewise.
1830 (elements_view::_Iterator::base): Likewise.
1831
1832 2021-06-10 Patrick Palka <ppalka (a] redhat.com>
1833
1834 Backported from master:
1835 2021-05-06 Patrick Palka <ppalka (a] redhat.com>
1836
1837 * include/bits/stl_iterator.h (move_iterator::base): Make the
1838 const& overload unconstrained and return a const reference as
1839 per LWG 3391. Make unconditionally noexcept.
1840 (counted_iterator::base): Likewise.
1841 * testsuite/24_iterators/move_iterator/lwg3391.cc: New test.
1842 * testsuite/24_iterators/move_iterator/move_only.cc: Adjust
1843 has_member_base concept to decay-copy the result of base().
1844
1845 2021-06-10 Patrick Palka <ppalka (a] redhat.com>
1846
1847 Backported from master:
1848 2021-05-18 Patrick Palka <ppalka (a] redhat.com>
1849
1850 PR libstdc++/100631
1851 * include/std/ranges (elements_view::_Sentinel::operator-): Use
1852 _M_distance_from in the other operator- overload too.
1853 * testsuite/std/ranges/adaptors/elements.cc (test06): Augment test.
1854
1855 2021-06-10 Patrick Palka <ppalka (a] redhat.com>
1856
1857 Backported from master:
1858 2021-05-18 Patrick Palka <ppalka (a] redhat.com>
1859
1860 PR libstdc++/100631
1861 * include/std/ranges (elements_view::_Iterator): Also befriend
1862 _Sentinel<!_Const>.
1863 (elements_view::_Sentinel::_M_equal): Templatize.
1864 (elements_view::_Sentinel::_M_distance_from): Split out from ...
1865 (elements_view::_Sentinel::operator-): ... here. Depend on
1866 _Base2 instead of _Base in the return type.
1867 * testsuite/std/ranges/adaptors/elements.cc (test06, test07):
1868 New tests.
1869
1870 2021-06-10 Patrick Palka <ppalka (a] redhat.com>
1871
1872 Backported from master:
1873 2021-05-20 Patrick Palka <ppalka (a] redhat.com>
1874
1875 PR libstdc++/100639
1876 * include/bits/stl_iterator.h (reverse_iterator::difference_type):
1877 In C++20 mode, define in terms of iter_difference_t as per P0896R4.
1878 (reverse_iterator::reference): Likewise, but with iter_reference_t.
1879 (reverse_iterator::value_type): Likewise, but with iter_value_t.
1880 * testsuite/std/ranges/adaptors/reverse.cc (test08): New test.
1881 * testsuite/24_iterators/reverse_iterator/100639.cc: New test.
1882
1883 2021-06-03 Jonathan Wakely <jwakely (a] redhat.com>
1884
1885 Backported from master:
1886 2021-06-01 Jonathan Wakely <jwakely (a] redhat.com>
1887
1888 PR libstdc++/100833
1889 * include/bits/range_access.h (ranges::advance(iter, n, sentinel)):
1890 Fix return value for no-op case.
1891 * testsuite/24_iterators/range_operations/advance.cc: Test
1892 return values of three-argument overload.
1893
1894 2021-06-03 Jonathan Wakely <jwakely (a] redhat.com>
1895
1896 Backported from master:
1897 2021-05-26 Jonathan Wakely <jwakely (a] redhat.com>
1898
1899 PR libstdc++/100768
1900 * include/bits/range_access.h (ranges::advance)
1901 (ranges::distance, ranges::next, ranges::prev): Replace
1902 function templates with function objects.
1903 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
1904 Adjust for changes to function objects.
1905 * testsuite/std/ranges/adaptors/elements.cc: Add using
1906 declarations for names from namespace ranges.
1907 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
1908 * testsuite/24_iterators/range_operations/100768.cc: New test.
1909
1910 2021-06-03 Jonathan Wakely <jwakely (a] redhat.com>
1911
1912 Backported from master:
1913 2021-06-01 Jonathan Wakely <jwakely (a] redhat.com>
1914
1915 PR libstdc++/99453
1916 * python/Makefile.am: Use archive name for printer hook if no
1917 dynamic library name is available.
1918 * python/Makefile.in: Regenerate.
1919
1920 2021-06-03 Philippe Blain <levraiphilippeblain (a] gmail.com>
1921
1922 Backported from master:
1923 2021-04-21 Philippe Blain <levraiphilippeblain (a] gmail.com>
1924 Jonathan Wakely <jwakely (a] redhat.com>
1925
1926 PR libstdc++/99453
1927 * python/Makefile.am: Install libstdc++*-gdb.py more robustly.
1928 * python/Makefile.in: Regenerate.
1929
1930 2021-05-17 Jonathan Wakely <jwakely (a] redhat.com>
1931
1932 PR libstdc++/100630
1933 * include/bits/fs_path.h (__is_constructible_from): Test
1934 construction from a const lvalue, not an rvalue.
1935 * include/experimental/bits/fs_path.h (__is_constructible_from):
1936 Likewise.
1937 * testsuite/27_io/filesystem/path/construct/100630.cc: New test.
1938 * testsuite/experimental/filesystem/path/construct/100630.cc:
1939 New test.
1940
1941 2021-05-17 Jonathan Wakely <jwakely (a] redhat.com>
1942
1943 Backported from master:
1944 2021-03-11 Jonathan Wakely <jwakely (a] redhat.com>
1945
1946 * python/libstdcxx/v6/printers.py (find_type): Use tag attribute
1947 instead of unqualified() method.
1948
1949 2021-05-05 Patrick Palka <ppalka (a] redhat.com>
1950
1951 Backported from master:
1952 2021-05-05 Patrick Palka <ppalka (a] redhat.com>
1953
1954 * include/std/ranges (transform_view::_Iterator::iter_swap):
1955 Remove as per LWG 3520.
1956 (join_view::_Iterator::iter_swap): Add indirectly_swappable
1957 constraint as per LWG 3517.
1958
1959 2021-05-04 Patrick Palka <ppalka (a] redhat.com>
1960
1961 Backported from master:
1962 2021-04-30 Patrick Palka <ppalka (a] redhat.com>
1963
1964 * include/std/ranges (split_view::_InnerIter::operator++):
1965 Depend on _Base instead of _Vp directly, as per LWG 3532.
1966
1967 2021-05-04 Patrick Palka <ppalka (a] redhat.com>
1968
1969 Backported from master:
1970 2021-04-20 Patrick Palka <ppalka (a] redhat.com>
1971
1972 PR libstdc++/95983
1973 * include/bits/stl_iterator.h (__detail::__move_iter_cat):
1974 Define.
1975 (move_iterator): Derive from the above in C++20 in order to
1976 conditionally define iterator_category as per P2259.
1977 (move_iterator::__base_cat): No longer used, so remove.
1978 (move_iterator::iterator_category): Remove in C++20.
1979 (__detail::__common_iter_use_postfix_proxy): Define.
1980 (common_iterator::_Proxy): Rename to ...
1981 (common_iterator:__arrow_proxy): ... this.
1982 (common_iterator::__postfix_proxy): Define as per P2259.
1983 (common_iterator::operator->): Adjust.
1984 (common_iterator::operator++): Adjust as per P2259.
1985 (iterator_traits<common_iterator>::_S_iter_cat): Define.
1986 (iterator_traits<common_iterator>::iterator_category): Change as
1987 per P2259.
1988 (__detail::__counted_iter_value_type): Define.
1989 (__detail::__counted_iter_concept): Define.
1990 (__detail::__counted_iter_cat): Define.
1991 (counted_iterator): Derive from the above three classes in order
1992 to conditionally define value_type, iterator_concept and
1993 iterator category respectively as per P2259.
1994 (counted_iterator::operator->): Define as per P2259.
1995 (incrementable_traits<counted_iterator>): Remove as per P2259.
1996 (iterator_traits<counted_iterator>): Adjust as per P2259.
1997 * include/std/ranges (__detail::__iota_view_iter_cat): Define.
1998 (iota_view::_Iterator): Derive from the above in order to
1999 conditionally define iterator_category as per P2259.
2000 (iota_view::_S_iter_cat): Rename to ...
2001 (iota_view::_S_iter_concept): ... this.
2002 (iota_view::iterator_concept): Use it to apply LWG 3291 changes.
2003 (iota_view::iterator_category): Remove.
2004 (__detail::__filter_view_iter_cat): Define.
2005 (filter_view::_Iterator): Derive from the above in order to
2006 conditionally define iterator_category as per P2259.
2007 (filter_view::_Iterator): Move to struct __filter_view_iter_cat.
2008 (filter_view::_Iterator::iterator_category): Remove.
2009 (transform_view::_Base): Define.
2010 (transform_view::__iter_cat): Define.
2011 (transform_view::_Iterator): Derive from the above in order to
2012 conditionally define iterator_category as per P2259.
2013 (transform_view::_Iterator::_Base): Just alias
2014 transform_view::_Base.
2015 (transform_view::_Iterator::_S_iter_cat): Move to struct
2016 transform_view::__iter_cat.
2017 (transform_view::_Iterator::iterator_category): Remove.
2018 (transform_view::_Sentinel::_Base): Just alias
2019 transform_view::_Base.
2020 (join_view::_Base): Define.
2021 (join_view::_Outer_iter): Define.
2022 (join_view::_Inner_iter): Define.
2023 (join_view::_S_ref_is_glvalue): Define.
2024 (join_view::__iter_cat): Define.
2025 (join_view::_Iterator): Derive from it in order to conditionally
2026 define iterator_category as per P2259.
2027 (join_view::_Iterator::_Base): Just alias join_view::_Base.
2028 (join_view::_Iterator::_S_ref_is_glvalue): Just alias
2029 join_view::_S_ref_is_glvalue.
2030 (join_view::_Iterator::_S_iter_cat): Move to struct
2031 transform_view::__iter_cat.
2032 (join_view::_Iterator::_Outer_iter): Just alias
2033 join_view::_Outer_iter.
2034 (join_view::_Iterator::_Inner_iter): Just alias
2035 join_view::_Inner_iter.
2036 (join_view::_Iterator::iterator_category): Remove.
2037 (join_view::_Sentinel::_Base): Just alias join_view::_Base.
2038 (__detail::__split_view_outer_iter_cat): Define.
2039 (__detail::__split_view_inner_iter_cat): Define.
2040 (split_view::_Base): Define.
2041 (split_view::_Outer_iter): Derive from __split_view_outer_iter_cat
2042 in order to conditionally define iterator_category as per P2259.
2043 (split_view::_Outer_iter::iterator_category): Remove.
2044 (split_view::_Inner_iter): Derive from __split_view_inner_iter_cat
2045 in order to conditionally define iterator_category as per P2259.
2046 (split_view::_Inner_iter::_S_iter_cat): Move to
2047 __split_view_inner_iter_cat.
2048 (split_view::_Inner_iter::iterator_category): Remove.
2049 (elements_view::_Base): Define.
2050 (elements_view::__iter_cat): Define.
2051 (elements_view::_Iterator): Derive from the above in order to
2052 conditionall define iterator_category as per P2259.
2053 (elements_view::_Iterator::_Base): Just alias
2054 elements_view::_Base.
2055 (elements_view::_Iterator::_S_iter_concept)
2056 (elements_view::_Iterator::iterator_concept): Define as per
2057 P2259.
2058 (elements_view::_Iterator::iterator_category): Remove.
2059 (elements_view::_Sentinel::_Base): Just alias
2060 elements_view::_Base.
2061 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
2062 Adjust constraints on iterator_traits<counted_iterator>.
2063 * testsuite/std/ranges/p2259.cc: New test.
2064
2065 2021-05-03 Patrick Palka <ppalka (a] redhat.com>
2066
2067 Backported from master:
2068 2021-04-27 Patrick Palka <ppalka (a] redhat.com>
2069
2070 PR libstdc++/100290
2071 * include/std/ranges (join_view::_Iterator::operator++): Correct
2072 the return type of the lambda to avoid returning a copy of
2073 _M_parent->_M_inner.
2074 * testsuite/std/ranges/adaptors/join.cc (test10): New test.
2075
2076 2021-04-30 Jonathan Wakely <jwakely (a] redhat.com>
2077
2078 Backported from master:
2079 2021-04-30 Jonathan Wakely <jwakely (a] redhat.com>
2080
2081 * include/bits/basic_string.h (__cpp_lib_constexpr_string):
2082 Only define for C++17 and later.
2083
2084 2021-04-29 Jonathan Wakely <jwakely (a] redhat.com>
2085
2086 Backported from master:
2087 2021-04-26 Jonathan Wakely <jwakely (a] redhat.com>
2088
2089 PR libstdc++/100259
2090 * include/experimental/internet (net::ip::make_error_code)
2091 (net::ip::make_error_condition, net::ip::make_network_v4)
2092 (net::ip::operator==(const udp&, const udp&)): Add 'inline'.
2093
2094 2021-04-29 Jonathan Wakely <jwakely (a] redhat.com>
2095
2096 Backported from master:
2097 2021-04-28 Jonathan Wakely <jwakely (a] redhat.com>
2098
2099 * include/bits/basic_string.h (__cpp_lib_constexpr_string): Define.
2100 * include/std/version (__cpp_lib_constexpr_string): Define.
2101 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
2102 Check for __cpp_lib_constexpr_string.
2103 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
2104 Likewise.
2105 * testsuite/21_strings/char_traits/requirements/version.cc: New test.
2106
2107 2021-04-21 Jonathan Wakely <jwakely (a] redhat.com>
2108
2109 PR libstdc++/100180
2110 * testsuite/experimental/net/internet/address/v6/members.cc:
2111 Require gthreads.
2112
2113 2021-04-21 Patrick Palka <ppalka (a] redhat.com>
2114
2115 Backported from master:
2116 2021-04-08 Patrick Palka <ppalka (a] redhat.com>
2117
2118 * include/std/ranges (__detail::find): Define.
2119 (split_view::_OuterIter::operator++): Apply proposed resolution
2120 of LWG 3505.
2121 * testsuite/std/ranges/adaptors/split.cc (test10): New test.
2122
2123 2021-04-21 Patrick Palka <ppalka (a] redhat.com>
2124
2125 Backported from master:
2126 2021-04-08 Patrick Palka <ppalka (a] redhat.com>
2127
2128 * include/std/ranges (__detail::find_if): Simplify.
2129 (__detail::find_if_not): Likewise.
2130 (__detail::min): Remove.
2131 (__detail::mismatch): Simplify.
2132 (take_view::size): Use std::min instead of __detail::min.
2133
2134 2021-04-21 Patrick Palka <ppalka (a] redhat.com>
2135
2136 Backported from master:
2137 2021-04-08 Patrick Palka <ppalka (a] redhat.com>
2138
2139 * include/std/ranges (__detail::__returnable_element): New
2140 concept.
2141 (elements_view): Use this concept in its constraints. Add
2142 missing private access specifier.
2143 (elements_view::_S_get_element): Define as per LWG 3502.
2144 (elements_view::operator*, elements_view::operator[]): Use
2145 _S_get_element.
2146 (elements_view::operator++): Remove unnecessary constraint
2147 as per LWG 3492.
2148 * testsuite/std/ranges/adaptors/elements.cc (test05): New test.
2149
2150 2021-04-21 Patrick Palka <ppalka (a] redhat.com>
2151
2152 Backported from master:
2153 2020-10-31 Patrick Palka <ppalka (a] redhat.com>
2154
2155 PR libstdc++/97600
2156 * include/std/ranges (basic_istream_view::begin): Initialize
2157 _Iterator from 'this' instead of '*this'.
2158 (basic_istream_view::_Iterator::_Iterator): Adjust constructor
2159 accordingly.
2160 (filter_view::_Iterator::_Iterator): Take a filter_view*
2161 argument instead of a filter_view& argument.
2162 (filter_view::_Sentinel::_Sentinel): Likewise.
2163 (filter_view::begin): Initialize _Iterator from 'this' instead
2164 of '*this'.
2165 (filter_view::end): Likewise.
2166 (transform_view::_Iterator::_Iterator): Take a _Parent* instead
2167 of a _Parent&.
2168 (filter_view::_Iterator::operator+): Adjust accordingly.
2169 (filter_view::_Iterator::operator-): Likewise.
2170 (filter_view::begin): Initialize _Iterator from 'this' instead
2171 of '*this'.
2172 (filter_view::end): Likewise.
2173 (join_view::_Iterator): Take a _Parent* instead of a _Parent&.
2174 (join_view::_Sentinel): Likewise.
2175 (join_view::begin): Initialize _Iterator from 'this' instead of
2176 '*this'.
2177 (join_view::end): Initialize _Sentinel from 'this' instead of
2178 '*this'.
2179 (split_view::_OuterIter): Take a _Parent& instead of a _Parent*.
2180 (split_view::begin): Initialize _OuterIter from 'this' instead
2181 of '*this'.
2182 (split_view::end): Likewise.
2183 * testsuite/std/ranges/97600.cc: New test.
2184
2185 2021-04-19 Franois Dumont <fdumont (a] gcc.gnu.org>
2186
2187 PR libstdc++/99402
2188 * include/debug/helper_functions.h (__can_advance(_InputIterator,
2189 const std::pair<_Diff, _Distance_precision>&, int)): New.
2190 (__can_advance(const _Safe_iterator<>&,
2191 const std::pair<_Diff, _Distance_precision>&, int)): New.
2192 * include/debug/macros.h (__glibcxx_check_can_increment_dist): New,
2193 use latter.
2194 (__glibcxx_check_can_increment_range): Adapt to use latter.
2195 (__glibcxx_check_can_decrement_range): Likewise.
2196 * include/debug/safe_iterator.h
2197 (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
2198 int)): New.
2199 (__can_advance(const _Safe_iterator<>&,
2200 const std::pair<_Diff, _Distance_precision>&, int)): New.
2201 * include/debug/safe_iterator.tcc
2202 (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
2203 int)): New.
2204 (_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&,
2205 std::pair<difference_type, _Distance_precision>&, bool)): Adapt for
2206 __dp_sign_max_size.
2207 (__copy_move_a): Adapt to use __glibcxx_check_can_increment_dist.
2208 (__copy_move_backward_a): Likewise.
2209 (__equal_aux): Likewise.
2210 * include/debug/stl_iterator.h (__can_advance(const std::reverse_iterator<>&,
2211 const std::pair<_Diff, _Distance_precision>&, int)): New.
2212 (__can_advance(const std::move_iterator<>&,
2213 const std::pair<_Diff, _Distance_precision>&, int)): New.
2214 * testsuite/25_algorithms/copy/debug/99402.cc: New test.
2215
2216 2021-04-19 Jonathan Wakely <jwakely (a] redhat.com>
2217
2218 Backported from master:
2219 2020-10-26 Jonathan Wakely <jwakely (a] redhat.com>
2220
2221 PR libstdc++/97570
2222 * libsupc++/new_opa.cc: Declare size_t in global namespace.
2223 Remove unused header.
2224
2225 2021-04-13 Jonathan Wakely <jwakely (a] redhat.com>
2226
2227 Backported from master:
2228 2021-04-13 Jonathan Wakely <jwakely (a] redhat.com>
2229
2230 PR libstdc++/100060
2231 * include/std/bit: Only include <ext/numeric_traits.h> for
2232 hosted build, use <limits> otherwise.
2233
2234 2021-04-12 Jonathan Wakely <jwakely (a] redhat.com>
2235
2236 Backported from master:
2237 2021-04-12 Jonathan Wakely <jwakely (a] redhat.com>
2238
2239 PR libstdc++/100044
2240 * include/std/ranges (__detail::__iterator_sentinel_pair):
2241 Remove helper concept.
2242 (subrange(_Pr), subrange(Pr, __make_unsigned_like<...>)): Remove
2243 deduction guides, as per LWG 3404.
2244 * testsuite/std/ranges/subrange/lwg3282_neg.cc: Check that class
2245 template argument deduction fails.
2246
2247 2021-04-12 Jonathan Wakely <jwakely (a] redhat.com>
2248
2249 Backported from master:
2250 2020-08-24 Jonathan Wakely <jwakely (a] redhat.com>
2251
2252 * include/bits/iterator_concepts.h (indirectly_readable): Add
2253 partial specializations to resolve ambiguities (LWG 3446).
2254 * testsuite/24_iterators/associated_types/readable.traits.cc:
2255 Check types with both value_type and element_type.
2256
2257 2021-04-09 Jonathan Wakely <jwakely (a] redhat.com>
2258
2259 PR bootstrap/99983
2260 * include/bits/hashtable.h (_Hashtable): Fix noexcept-speciofier
2261 on definition to match the one on the declaration.
2262
2263 2021-04-09 Jonathan Wakely <jwakely (a] redhat.com>
2264
2265 Backported from master:
2266 2021-04-09 Jonathan Wakely <jwakely (a] redhat.com>
2267
2268 PR libstdc++/99985
2269 * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): Fix
2270 to be a valid constexpr function in C++11.
2271 * testsuite/23_containers/unordered_set/cons/99985.cc: New test.
2272
2273 2021-04-09 Jonathan Wakely <jwakely (a] redhat.com>
2274
2275 Backported from master:
2276 2021-04-09 Jonathan Wakely <jwakely (a] redhat.com>
2277
2278 * include/bits/fs_fwd.h: Fix doxygen group command.
2279 * include/bits/streambuf_iterator.h: Likewise.
2280 * include/std/chrono: Likewise.
2281 * include/std/memory: Likewise.
2282 * include/std/thread: Likewise.
2283 * include/tr1/complex: Likewise.
2284
2285 2021-04-09 Jonathan Wakely <jwakely (a] redhat.com>
2286
2287 Backported from master:
2288 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2289
2290 * include/bits/basic_string.h: Tweak doxygen comment.
2291
2292 2021-04-09 Jonathan Wakely <jwakely (a] redhat.com>
2293
2294 Backported from master:
2295 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2296
2297 * include/bits/random.h: Fix doxygen group commands.
2298 * include/bits/regex_constants.h: Likewise.
2299 * include/tr1/random.h: Likewise.
2300
2301 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2302
2303 Backported from master:
2304 2020-07-30 Jonathan Wakely <jwakely (a] redhat.com>
2305
2306 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
2307 Use allocator with the correct value type.
2308 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
2309 Likewise.
2310
2311 2021-04-08 Franois Dumont <fdumont (a] gcc.gnu.org>
2312
2313 Backported from master:
2314 2020-07-29 Franois Dumont <fdumont (a] gcc.gnu.org>
2315
2316 PR libstdc++/96029
2317 * include/bits/hashtable.h
2318 (_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
2319 Add noexcept qualification.
2320 (_Hashtable(_Hashtable&&)): Fix noexcept qualification.
2321 (_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
2322 qualification.
2323 * include/bits/unordered_map.h
2324 (unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
2325 qualification.
2326 (unordered_multimap(unordered_multimap&&, const allocator_type&)):
2327 Likewise.
2328 * include/bits/unordered_set.h
2329 (unordered_set(unordered_set&&, const allocator_type&)): Likewise.
2330 (unordered_multiset(unordered_multiset&&, const allocator_type&)):
2331 Likewise.
2332 * include/debug/unordered_map
2333 (unordered_map(unordered_map&&, const allocator_type&)): Likewise.
2334 (unordered_multimap(unordered_multimap&&, const allocator_type&)):
2335 Likewise.
2336 * include/debug/unordered_set
2337 (unordered_set(unordered_set&&, const allocator_type&)): Likewise.
2338 (unordered_multiset(unordered_multiset&&, const allocator_type&)):
2339 Likewise.
2340 * testsuite/23_containers/unordered_map/allocator/default_init.cc:
2341 New test.
2342 * testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
2343 New test.
2344 * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
2345 New test.
2346 * testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
2347 New test.
2348 * testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
2349 New test.
2350 * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
2351 New test.
2352 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
2353 New test.
2354 * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
2355 New test.
2356 * testsuite/23_containers/unordered_set/allocator/default_init.cc:
2357 New test.
2358 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
2359 New test.
2360 * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
2361 New test.
2362
2363 2021-04-08 Franois Dumont <fdumont (a] gcc.gnu.org>
2364
2365 Backported from master:
2366 2020-07-08 Franois Dumont <fdumont (a] gcc.gnu.org>
2367
2368 PR libstdc++/96029
2369 * include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept
2370 qualification based only on _Compare one.
2371 * testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add
2372 static asserts.
2373 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
2374 Likewise.
2375 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
2376 Likewise.
2377 * testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise.
2378
2379 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2380
2381 Backported from master:
2382 2021-04-07 Jonathan Wakely <jwakely (a] redhat.com>
2383
2384 PR libstdc++/99805
2385 * src/c++17/fs_path.cc (path::_M_split_cmpts): Do not call
2386 non-const member on _M_pathname, to avoid copy-on-write.
2387 * testsuite/27_io/filesystem/path/decompose/parent_path.cc:
2388 Check construction from strings that might be shared.
2389
2390 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2391
2392 * doc/xml/manual/status_cxx2017.xml: Replace Intel parallelstl
2393 link with LLVM repo for PSTL.
2394 * doc/html/manual/status.html: Regenerate.
2395
2396 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2397
2398 Backported from master:
2399 2021-04-06 Jonathan Wakely <jwakely (a] redhat.com>
2400
2401 * include/bits/alloc_traits.h: Use markdown for code font.
2402 * include/bits/basic_string.h: Fix @param names.
2403 * include/bits/regex.h: Fix duplicate @retval names, and rename.
2404 * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Add
2405 group open to match existing group close.
2406 * include/ext/pb_ds/priority_queue.hpp: Add blank line before group
2407 open.
2408
2409 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2410
2411 Backported from master:
2412 2021-04-06 Jonathan Wakely <jwakely (a] redhat.com>
2413
2414 * include/bits/atomic_base.h: Fix doxygen group close.
2415 * include/bits/basic_ios.h: Likewise.
2416 * include/bits/forward_list.h: Likewise.
2417 * include/bits/fs_dir.h: Likewise.
2418 * include/bits/fs_ops.h: Likewise.
2419 * include/bits/fs_path.h: Likewise.
2420 * include/bits/functional_hash.h: Likewise.
2421 * include/bits/gslice.h: Likewise.
2422 * include/bits/gslice_array.h: Likewise.
2423 * include/bits/hashtable_policy.h: Likewise.
2424 * include/bits/indirect_array.h: Likewise.
2425 * include/bits/locale_classes.h: Likewise.
2426 * include/bits/locale_facets.h: Likewise.
2427 * include/bits/locale_facets_nonio.h: Likewise.
2428 * include/bits/mask_array.h: Likewise.
2429 * include/bits/refwrap.h: Likewise.
2430 * include/bits/regex.h: Likewise.
2431 * include/bits/regex_automaton.h: Likewise.
2432 * include/bits/regex_compiler.h: Likewise.
2433 * include/bits/regex_constants.h: Likewise.
2434 * include/bits/regex_error.h: Likewise.
2435 * include/bits/regex_executor.h: Likewise.
2436 * include/bits/regex_scanner.h: Likewise.
2437 * include/bits/shared_ptr.h: Likewise.
2438 * include/bits/shared_ptr_atomic.h: Likewise.
2439 * include/bits/shared_ptr_base.h: Likewise.
2440 * include/bits/slice_array.h: Likewise.
2441 * include/bits/specfun.h: Likewise.
2442 * include/bits/std_function.h: Likewise.
2443 * include/bits/std_mutex.h: Likewise.
2444 * include/bits/stl_deque.h: Likewise.
2445 * include/bits/stl_iterator.h: Likewise.
2446 * include/bits/stl_iterator_base_types.h: Likewise.
2447 * include/bits/stl_map.h: Likewise.
2448 * include/bits/stl_multimap.h: Likewise.
2449 * include/bits/stl_multiset.h: Likewise.
2450 * include/bits/stl_numeric.h: Likewise.
2451 * include/bits/stl_pair.h: Likewise.
2452 * include/bits/stl_set.h: Likewise.
2453 * include/bits/stl_uninitialized.h: Likewise.
2454 * include/bits/stream_iterator.h: Likewise.
2455 * include/bits/streambuf_iterator.h: Likewise.
2456 * include/bits/unique_ptr.h: Likewise.
2457 * include/bits/unordered_map.h: Likewise.
2458 * include/bits/unordered_set.h: Likewise.
2459 * include/decimal/decimal: Likewise.
2460 * include/experimental/any: Likewise.
2461 * include/experimental/array: Likewise.
2462 * include/experimental/bits/fs_dir.h: Likewise.
2463 * include/experimental/bits/fs_fwd.h: Likewise.
2464 * include/experimental/bits/fs_ops.h: Likewise.
2465 * include/experimental/bits/fs_path.h: Likewise.
2466 * include/experimental/buffer: Likewise.
2467 * include/experimental/internet: Likewise.
2468 * include/experimental/optional: Likewise.
2469 * include/experimental/propagate_const: Likewise.
2470 * include/experimental/socket: Likewise.
2471 * include/ext/pb_ds/assoc_container.hpp: Likewise.
2472 * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp:
2473 Likewise.
2474 * include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Likewise.
2475 * include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Likewise.
2476 * include/ext/pb_ds/detail/types_traits.hpp: Likewise.
2477 * include/ext/pb_ds/exception.hpp: Likewise.
2478 * include/ext/pb_ds/priority_queue.hpp: Likewise.
2479 * include/ext/pb_ds/tag_and_trait.hpp: Likewise.
2480 * include/ext/random: Likewise.
2481 * include/std/any: Likewise.
2482 * include/std/atomic: Likewise.
2483 * include/std/bitset: Likewise.
2484 * include/std/chrono: Likewise.
2485 * include/std/complex: Likewise.
2486 * include/std/condition_variable: Likewise.
2487 * include/std/fstream: Likewise.
2488 * include/std/future: Likewise.
2489 * include/std/istream: Likewise.
2490 * include/std/iostream: Likewise.
2491 * include/std/mutex: Likewise.
2492 * include/std/numeric: Likewise.
2493 * include/std/ostream: Likewise.
2494 * include/std/ratio: Likewise.
2495 * include/std/shared_mutex: Likewise.
2496 * include/std/stdexcept: Likewise.
2497 * include/std/streambuf: Likewise.
2498 * include/std/system_error: Likewise.
2499 * include/std/valarray: Likewise.
2500 * include/std/variant: Likewise.
2501 * include/tr1/cmath: Likewise.
2502 * include/tr1/regex: Likewise.
2503 * include/tr2/dynamic_bitset: Likewise.
2504 * libsupc++/atomic_lockfree_defines.h: Likewise.
2505 * libsupc++/exception: Likewise.
2506 * libsupc++/exception.h: Likewise.
2507 * libsupc++/exception_ptr.h: Likewise.
2508 * libsupc++/nested_exception.h: Likewise.
2509
2510 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2511
2512 Backported from master:
2513 2021-04-08 Jonathan Wakely <jwakely (a] redhat.com>
2514
2515 * include/std/string_view: Adjust Doxygen @file comment.
2516
2517 2021-04-08 Release Manager
2518
2519 * GCC 10.3.0 released.
2520
2521 2021-04-01 Jonathan Wakely <jwakely (a] redhat.com>
2522
2523 Backported from master:
2524 2021-02-14 Jonathan Wakely <jwakely (a] redhat.com>
2525
2526 PR libstdc++/99096
2527 * testsuite/util/testsuite_fs.h: Always include <unistd.h>.
2528
2529 2021-04-01 Jonathan Wakely <jwakely (a] redhat.com>
2530
2531 Backported from master:
2532 2020-12-17 Jonathan Wakely <jwakely (a] redhat.com>
2533
2534 * config.h.in: Regenerate.
2535 * config/os/djgpp/error_constants.h: Test POSIX errno macros
2536 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
2537 * config/os/mingw32-w64/error_constants.h: Likewise.
2538 * config/os/mingw32/error_constants.h: Likewise.
2539 * configure: Regenerate.
2540
2541 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2542
2543 Backported from master:
2544 2020-11-30 Jonathan Wakely <jwakely (a] redhat.com>
2545
2546 * testsuite/20_util/specialized_algorithms/pstl/*: Add
2547 dg-timeout-factor.
2548 * testsuite/25_algorithms/pstl/*: Likewise.
2549 * testsuite/26_numerics/pstl/*: Likewise.
2550 * testsuite/28_regex/*: Likewise.
2551
2552 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2553
2554 Backported from master:
2555 2020-11-26 Jonathan Wakely <jwakely (a] redhat.com>
2556
2557 * testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc:
2558 Add dg-timeout-factor directive.
2559 * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
2560 Likewise.
2561 * testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc:
2562 Likewise.
2563 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc:
2564 Likewise.
2565 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc:
2566 Likewise.
2567 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc:
2568 Likewise.
2569 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc:
2570 Likewise.
2571 * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
2572 Likewise.
2573 * testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise.
2574 * testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc:
2575 Likewise.
2576 * testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc:
2577 Likewise.
2578 * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
2579
2580 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2581
2582 Backported from master:
2583 2020-08-11 Jonathan Wakely <jwakely (a] redhat.com>
2584
2585 * include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using
2586 #ifdef instead of #if.
2587 (stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before
2588 using __gthread_yield.
2589
2590 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2591
2592 Backported from master:
2593 2020-06-19 Jonathan Wakely <jwakely (a] redhat.com>
2594
2595 PR libstdc++/95765
2596 * include/bits/stl_algobase.h (__size_to_integer(float))
2597 (__size_to_integer(double), __size_to_integer(long double))
2598 (__size_to_integer(__float128)): Cast return type explicitly.
2599
2600 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2601
2602 Backported from master:
2603 2020-11-25 Jonathan Wakely <jwakely (a] redhat.com>
2604
2605 * testsuite/17_intro/names.cc: Do not test 'v' on AIX.
2606
2607 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2608
2609 Backported from master:
2610 2020-07-30 Jonathan Wakely <jwakely (a] redhat.com>
2611
2612 * include/bits/basic_string.h (size_type, difference_type):
2613 Use allocator_traits to obtain the allocator's size_type and
2614 difference_type.
2615
2616 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2617
2618 Backported from master:
2619 2020-09-01 Jonathan Wakely <jwakely (a] redhat.com>
2620
2621 * include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)):
2622 New helper function for finding GCD of two positive intmax_t
2623 values.
2624 (duration::__divide): New helper alias for dividing one period
2625 by another.
2626 (duration::__is_harmonic): Use __divide not ratio_divide.
2627 (duration(const duration<R2, P2>&)): Require the duration rep
2628 types to be convertible.
2629 * testsuite/20_util/duration/cons/dr2094.cc: New test.
2630 * testsuite/20_util/duration/requirements/reduced_period.cc:
2631 Fix definition of unused member functions in test type.
2632 * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
2633 Adjust expected errors.
2634
2635 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2636
2637 Backported from master:
2638 2020-08-27 Jonathan Wakely <jwakely (a] redhat.com>
2639
2640 * include/std/chrono (__duration_common_type): Ensure the
2641 reduced ratio is used. Remove unused partial specialization
2642 using __failure_type.
2643 (common_type): Pass reduced ratios to __duration_common_type.
2644 Add partial specializations for simple cases involving a single
2645 duration or time_point type.
2646 (duration::period): Use reduced ratio.
2647 (duration::operator+(), duration::operator-()): Return duration
2648 type using the reduced ratio.
2649 * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
2650 Adjust expected errors.
2651 * testsuite/20_util/duration/requirements/reduced_period.cc: New test.
2652
2653 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2654
2655 Backported from master:
2656 2020-09-03 Jonathan Wakely <jwakely (a] redhat.com>
2657
2658 PR libstdc++/96592
2659 * include/std/tuple (_TupleConstraints<true, T...>): Use
2660 alternative is_constructible instead of std::is_constructible.
2661 * testsuite/20_util/tuple/cons/96592.cc: New test.
2662
2663 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2664
2665 Backported from master:
2666 2020-07-31 Jonathan Wakely <jwakely (a] redhat.com>
2667
2668 * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to
2669 definition of aggregates in C++20.
2670 * testsuite/20_util/optional/requirements.cc: Adjust for
2671 defaulted comparisons in C++20.
2672
2673 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2674
2675 Backported from master:
2676 2020-07-31 Jonathan Wakely <jwakely (a] redhat.com>
2677
2678 * testsuite/20_util/tuple/78939.cc: Suppress warnings about
2679 deprecation of volatile-qualified structured bindings in C++20.
2680 * testsuite/20_util/variable_templates_for_traits.cc: Likewise
2681 for deprecation of is_pod in C++20
2682
2683 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2684
2685 Backported from master:
2686 2020-06-09 Jonathan Wakely <jwakely (a] redhat.com>
2687
2688 * include/std/optional (bad_optional_access): Define default
2689 constructor and destructor as defaulted.
2690 * testsuite/20_util/optional/bad_access.cc: New test.
2691
2692 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2693
2694 Backported from master:
2695 2020-06-04 Jonathan Wakely <jwakely (a] redhat.com>
2696
2697 * include/bits/ranges_algobase.h (__copy_n_fn): Only call
2698 ranges::copy for positive values.
2699 * include/bits/stl_algo.h (copy_n): Convert Size argument to an
2700 integral type and only call __copy_n for positive values.
2701 * testsuite/util/testsuite_iterators.h
2702 (random_access_iterator_wrapper::operator+=): Fix range check for
2703 negative values.
2704 (output_container, input_container, forward_container)
2705 (bidirectional_container, random_access_container): New alias
2706 templates.
2707 * testsuite/25_algorithms/copy_n/5.cc: New test.
2708
2709 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2710
2711 Backported from master:
2712 2020-06-16 Jonathan Wakely <jwakely (a] redhat.com>
2713
2714 * include/std/atomic (atomic): Add static assertions.
2715 * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
2716
2717 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2718
2719 Backported from master:
2720 2020-06-09 Jonathan Wakely <jwakely (a] redhat.com>
2721
2722 * include/bits/stl_iterator.h (move_iterator::operator=): Define.
2723 * testsuite/24_iterators/move_iterator/dr3265.cc: New test.
2724
2725 2021-03-29 Paul Keir <paul.keir (a] uws.ac.uk>
2726
2727 Backported from master:
2728 2020-06-15 Paul Keir <paul.keir (a] uws.ac.uk>
2729
2730 * include/bits/char_traits.h (char_traits::move): constexpr move with
2731 overlap was using copy_backward incorrectly.
2732 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
2733 New test.
2734
2735 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2736
2737 Backported from master:
2738 2020-07-31 Jonathan Wakely <jwakely (a] redhat.com>
2739
2740 * testsuite/20_util/time_point_cast/rounding.cc: Remove
2741 duplicate dg-do directive and add c++17 effective target.
2742
2743 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2744
2745 Backported from master:
2746 2020-08-11 Jonathan Wakely <jwakely (a] redhat.com>
2747
2748 * testsuite/30_threads/thread/cons/84535.cc: Use a custom
2749 namespace.
2750 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
2751
2752 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2753
2754 Backported from master:
2755 2020-11-26 Jonathan Wakely <jwakely (a] redhat.com>
2756
2757 * testsuite/lib/libstdc++.exp (libstdc++_init): Only set
2758 tool_timeout if it hasn't been set by the user already.
2759
2760 2021-03-29 Moritz Sichert <sichert (a] in.tum.de>
2761
2762 Backported from master:
2763 2021-03-23 Moritz Sichert <sichert (a] in.tum.de>
2764
2765 * include/std/ranges (reverse_view::begin, reverse_view::end):
2766 Qualify make_reverse_iterator calls to avoid ADL.
2767 * testsuite/std/ranges/adaptors/reverse.cc: Test that
2768 views::reverse works when make_reverse_iterator is defined
2769 in an associated namespace.
2770
2771 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2772
2773 Backported from master:
2774 2021-03-22 Jonathan Wakely <jwakely (a] redhat.com>
2775
2776 * include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])):
2777 Add missing 'noexcept' as per LWG 2280.
2778 (rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list<T>))
2779 (rend(initializer_list<T>)): Add 'noexcept' as per LWG 3537.
2780 * testsuite/24_iterators/range_access/range_access.cc: Check for
2781 expected noexcept specifiers. Check result types of generic
2782 std::begin and std::end overloads.
2783 * testsuite/24_iterators/range_access/range_access_cpp14.cc:
2784 Check for expected noexcept specifiers.
2785 * testsuite/24_iterators/range_access/range_access_cpp17.cc:
2786 Likewise.
2787
2788 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2789
2790 Backported from master:
2791 2021-03-11 Jonathan Wakely <jwakely (a] redhat.com>
2792
2793 PR libstdc++/99537
2794 * include/std/stop_token (_Stop_state_t::_M_release_ownership):
2795 Use acq_rel memory ordering.
2796
2797 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2798
2799 Backported from master:
2800 2021-03-11 Jonathan Wakely <jwakely (a] redhat.com>
2801
2802 PR libstdc++/99533
2803 * src/c++17/fs_dir.cc (recursive_directory_iterator): Use new
2804 helper function to check for permission denied errors.
2805 * src/filesystem/dir.cc (recursive_directory_iterator):
2806 Likewise.
2807 * src/filesystem/dir-common.h (is_permission_denied_error): New
2808 helper function.
2809
2810 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2811
2812 Backported from master:
2813 2021-03-11 Jonathan Wakely <jwakely (a] redhat.com>
2814
2815 PR libstdc++/99536
2816 * include/bits/random.h (normal_distribution): Use
2817 default-initializer for _M_saved and _M_saved_available.
2818
2819 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2820
2821 Backported from master:
2822 2021-03-10 Jonathan Wakely <jwakely (a] redhat.com>
2823
2824 * include/bits/range_cmp.h (__eq_builtin_ptr_cmp): Remove.
2825 (ranges::equal_to, ranges::not_equal_to): Do not constrain
2826 with __eq_builtin_ptr_cmp.
2827 (ranges::less, ranges::greater, ranges::less_equal)
2828 (ranges::greater_equal): Do not constrain with
2829 __less_builtin_ptr_cmp.
2830 * libsupc++/compare (compare_three_way): Do not constrain with
2831 __3way_builtin_ptr_cmp.
2832 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to...
2833 * testsuite/18_support/comparisons/object/lwg3530.cc: ...here.
2834 * testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test.
2835
2836 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2837
2838 Backported from master:
2839 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
2840
2841 * doc/xml/manual/status_cxx2014.xml: Document implementation
2842 specific properties of std::experimental::filesystem::rename.
2843 * doc/xml/manual/status_cxx2017.xml: Document implementation
2844 specific properties of std::filesystem::rename.
2845 * doc/html/*: Regenerate.
2846 * src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour
2847 for directories on Windows.
2848 * src/filesystem/ops-common.h (__gnu_posix::rename): Use
2849 MoveFileExW on Windows.
2850 * testsuite/27_io/filesystem/operations/rename.cc: New test.
2851 * testsuite/experimental/filesystem/operations/rename.cc: New test.
2852
2853 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2854
2855 Backported from master:
2856 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
2857
2858 * testsuite/util/testsuite_fs.h (nonexistent_path): Add
2859 random number to the path.
2860
2861 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2862
2863 Backported from master:
2864 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
2865
2866 * include/experimental/internet (address_v6::to_string): Include
2867 scope ID in string.
2868 (address_v6::loopback): Fix to be constexpr in C++14.
2869 * testsuite/experimental/net/internet/address/v6/members.cc:
2870 Test to_string() results.
2871
2872 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2873
2874 Backported from master:
2875 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
2876
2877 * include/experimental/internet (address_v6::any): Avoid using
2878 memcpy in constexpr function.
2879 (address_v6::loopback): Likewise.
2880 (make_address_v6): Fix missing return statements on error paths.
2881 * include/experimental/io_context: Avoid -Wdangling-else
2882 warning.
2883 * testsuite/experimental/net/internet/address/v4/members.cc:
2884 Remove unused variables.
2885 * testsuite/experimental/net/internet/address/v6/members.cc:
2886 New test.
2887
2888 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2889
2890 Backported from master:
2891 2020-10-29 Jonathan Wakely <jwakely (a] redhat.com>
2892
2893 * testsuite/25_algorithms/all_of/constexpr.cc: Check result of
2894 the algorithm.
2895 * testsuite/25_algorithms/any_of/constexpr.cc: Likewise.
2896 * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
2897 * testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise.
2898 * testsuite/25_algorithms/count/constexpr.cc: Likewise.
2899 * testsuite/25_algorithms/equal/constexpr.cc: Likewise.
2900 * testsuite/25_algorithms/equal_range/constexpr.cc: Likewise.
2901 * testsuite/25_algorithms/fill/constexpr.cc: Likewise.
2902 * testsuite/25_algorithms/find_end/constexpr.cc: Likewise.
2903 * testsuite/25_algorithms/find_if/constexpr.cc: Likewise.
2904 * testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise.
2905 * testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise.
2906 * testsuite/25_algorithms/is_sorted_until/constexpr.cc:
2907 Likewise.
2908 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
2909 Likewise.
2910 * testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise.
2911 * testsuite/25_algorithms/merge/constexpr.cc: Likewise.
2912 * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
2913 * testsuite/25_algorithms/none_of/constexpr.cc: Likewise.
2914 * testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise.
2915 * testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise.
2916 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise.
2917 * testsuite/25_algorithms/remove_if/constexpr.cc: Likewise.
2918 * testsuite/25_algorithms/replace_if/constexpr.cc: Likewise.
2919 * testsuite/25_algorithms/reverse/constexpr.cc: Likewise.
2920 * testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise.
2921 * testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise.
2922 * testsuite/25_algorithms/search/constexpr.cc: Likewise.
2923 * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
2924 * testsuite/25_algorithms/set_intersection/constexpr.cc:
2925 Likewise.
2926 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
2927 Likewise.
2928 * testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
2929 * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
2930 * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
2931
2932 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2933
2934 Backported from master:
2935 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
2936
2937 PR libstdc++/99077
2938 * src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)):
2939 Change int parameter to error_code, to match std::ios_failure.
2940 (__throw_ios_failure(const char*, int)): Construct error_code
2941 from int parameter.
2942
2943 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2944
2945 Backported from master:
2946 2021-02-11 Jonathan Wakely <jwakely (a] redhat.com>
2947
2948 PR libstdc++/99058
2949 * doc/xml/manual/status_cxx2011.xml: Document when support
2950 became stable.
2951 * doc/xml/manual/status_cxx2014.xml: Likewise.
2952 * doc/xml/manual/status_cxx2017.xml: Likewise.
2953 * doc/html/manual/status.html: Regenerate.
2954
2955 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2956
2957 Backported from master:
2958 2021-02-12 Jonathan Wakely <jwakely (a] redhat.com>
2959
2960 PR libstdc++/88881
2961 * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround.
2962
2963 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2964
2965 Backported from master:
2966 2021-02-10 Jonathan Wakely <jwakely (a] redhat.com>
2967
2968 PR libstdc++/88881
2969 * src/c++17/fs_ops.cc (fs::status): Re-enable workaround.
2970
2971 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2972
2973 Backported from master:
2974 2021-02-10 Jonathan Wakely <jwakely (a] redhat.com>
2975
2976 * src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent)
2977 (fs::remove): Use std::system_category() for error codes from
2978 GetLastError().
2979 * src/filesystem/ops.cc (fs::create_hard_link, fs::remove):
2980 Likewise.
2981
2982 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2983
2984 Backported from master:
2985 2021-02-10 Jonathan Wakely <jwakely (a] redhat.com>
2986
2987 * testsuite/27_io/filesystem/operations/proximate.cc: Fix typo
2988 in __MINGW32__ macro name.
2989 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
2990 * testsuite/27_io/filesystem/path/generation/proximate.cc:
2991 Likewise.
2992 * testsuite/27_io/filesystem/path/generation/relative.cc:
2993 Likewise.
2994 * testsuite/util/testsuite_fs.h: Likewise.
2995
2996 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
2997
2998 Backported from master:
2999 2021-02-03 Jonathan Wakely <jwakely (a] redhat.com>
3000
3001 * testsuite/19_diagnostics/error_code/operators/not_equal.cc:
3002 Add comparison with same category and different values.
3003 * testsuite/19_diagnostics/error_code/operators/less.cc:
3004 Likewise. Fix comparison involving different categories.
3005 * testsuite/19_diagnostics/error_code/operators/three_way.cc:
3006 Likewise.
3007 * testsuite/19_diagnostics/error_condition/operators/less.cc:
3008 Add comment.
3009 * testsuite/19_diagnostics/error_condition/operators/three_way.cc:
3010 Likewise.
3011
3012 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3013
3014 Backported from master:
3015 2020-12-16 Jonathan Wakely <jwakely (a] redhat.com>
3016
3017 PR libstdc++/98319
3018 * include/experimental/random: Only define contents for C++14
3019 and later.
3020 * include/experimental/source_location: Likewise.
3021 * include/experimental/utility: Likewise.
3022 * testsuite/experimental/feat-lib-fund.cc: Include all LFTS
3023 headers that are present. Allow test to run for all modes.
3024
3025 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3026
3027 Backported from master:
3028 2020-12-16 Jonathan Wakely <jwakely (a] redhat.com>
3029
3030 PR libstdc++/93151
3031 * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove.
3032 * configure.ac: Regenerate.
3033 * config/os/generic/error_constants.h: Test POSIX errno macros
3034 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
3035 * testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
3036 Likewise.
3037 * testsuite/19_diagnostics/headers/system_error/93151.cc: New
3038 test.
3039
3040 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3041
3042 Backported from master:
3043 2020-12-10 Jonathan Wakely <jwakely (a] redhat.com>
3044
3045 PR libstdc++/98226
3046 * include/std/bit (__countl_one, __countr_one): Remove redundant
3047 branches.
3048
3049 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3050
3051 Backported from master:
3052 2020-11-09 Jonathan Wakely <jwakely (a] redhat.com>
3053
3054 * include/std/bit (__popcount): Remove redundant check for zero.
3055
3056 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3057
3058 Backported from master:
3059 2020-10-30 Jonathan Wakely <jwakely (a] redhat.com>
3060
3061 * include/std/ranges (enable_borrowed_view<take_view<T>>)
3062 (enable_borrowed_view<drop_view<T>>)
3063 (enable_borrowed_view<drop_while_view<T>>)
3064 (enable_borrowed_view<reverse_view<T>>)
3065 (enable_borrowed_view<common_view<T>>)
3066 (enable_borrowed_view<elements_view<T>>): Add partial
3067 specializations as per P2017R1.
3068 * testsuite/std/ranges/adaptors/conditionally_borrowed.cc:
3069 New test.
3070
3071 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3072
3073 Backported from master:
3074 2020-10-29 Jonathan Wakely <jwakely (a] redhat.com>
3075
3076 * include/std/ranges (subrange::subrange(R&&)): Use
3077 direct-initialization instead of list-initialization, so a
3078 potential narrowing conversion from ranges::size(r) to the
3079 stored size isn't ill-formed.
3080
3081 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3082
3083 Backported from master:
3084 2020-10-08 Jonathan Wakely <jwakely (a] redhat.com>
3085
3086 PR libstdc++/82584
3087 * include/bits/random.tcc
3088 (discrete_distribution::param_type::_M_initialize)
3089 (piecewise_constant_distribution::param_type::_M_initialize)
3090 (piecewise_linear_distribution::param_type::_M_initialize):
3091 Add assertions for positive sums..
3092 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3093 line.
3094
3095 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3096
3097 Backported from master:
3098 2020-10-08 Jonathan Wakely <jwakely (a] redhat.com>
3099
3100 * include/bits/random.h (__detail::_Mod): Revert last change.
3101 (__detail::__mod): Do not use _Mod for a==0 case.
3102 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
3103 Check other cases with a==0. Also check runtime results.
3104 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3105 line.
3106
3107 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3108
3109 Backported from master:
3110 2020-10-07 Jonathan Wakely <jwakely (a] redhat.com>
3111
3112 * include/bits/random.h (__detail::_Mod): Avoid divide by zero.
3113 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
3114 New test.
3115
3116 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3117
3118 Backported from master:
3119 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
3120
3121 * include/std/ranges (drop_view::begin()): Adjust constraints
3122 to match the correct condition for O(1) ranges::next (LWG 3482).
3123 * testsuite/std/ranges/adaptors/drop.cc: Check that iterator is
3124 cached for non-sized_range.
3125
3126 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3127
3128 Backported from master:
3129 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
3130
3131 * include/std/ranges (transform_view, elements_view): Relax
3132 constraints on operator- for iterators, as per LWG 3483.
3133 * testsuite/std/ranges/adaptors/elements.cc: Check that we
3134 can take the difference of two iterators from a non-random
3135 access range.
3136 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
3137
3138 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3139
3140 Backported from master:
3141 2020-10-28 Jonathan Wakely <jwakely (a] redhat.com>
3142
3143 PR libstdc++/95592
3144 * include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR)
3145 (_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION):
3146 Use elaborated-type-specifier and qualified-id to avoid
3147 ambiguities with QNX system headers.
3148 * testsuite/26_numerics/valarray/95592.cc: New test.
3149
3150 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3151
3152 Backported from master:
3153 2020-10-27 Jonathan Wakely <jwakely (a] redhat.com>
3154
3155 * include/bits/locale_conv.h (__str_codecvt_out_all):
3156 Add cast to compare operands of the same signedness.
3157 * include/bits/locale_facets_nonio.tcc
3158 (time_get::_M_extract_wday_or_month): Likewise.
3159 * include/bits/sstream.tcc (basic_stringbuf::overflow):
3160 Likewise.
3161 * include/tr1/legendre_function.tcc (__sph_legendre): Use
3162 unsigned for loop variable.
3163
3164 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3165
3166 Backported from master:
3167 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
3168
3169 * include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all):
3170 Add casts to compare types of the same signedness.
3171
3172 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3173
3174 Backported from master:
3175 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
3176
3177 * include/bits/ranges_algobase.h (__equal_fn): Remove unused
3178 typedef.
3179
3180 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3181
3182 Backported from master:
3183 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
3184
3185 * include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&))
3186 (operator=(auto_ptr&&)): Add diagnostic pragmas to suppress
3187 warnings for uses of std::auto_ptr.
3188 * include/experimental/type_traits (is_literal_type_v):
3189 Likewise, for use of std::is_literal_type.
3190 * include/std/condition_variable (condition_variable_any::_Unlock):
3191 Likewise, for use of std::uncaught_exception.
3192
3193 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3194
3195 Backported from master:
3196 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
3197
3198 * include/bits/fs_path.h (path::_List::type()): Avoid narrowing
3199 conversion.
3200
3201 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3202
3203 Backported from master:
3204 2020-09-07 Jonathan Wakely <jwakely (a] redhat.com>
3205
3206 * include/std/ranges (__box): Simplify constraints as per LWG 3477.
3207
3208 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3209
3210 Backported from master:
3211 2020-08-24 Jonathan Wakely <jwakely (a] redhat.com>
3212
3213 * include/std/ranges (ranges::iota_view::size()): Perform all
3214 calculations in the right unsigned types.
3215 * testsuite/std/ranges/iota/size.cc: New test.
3216
3217 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3218
3219 Backported from master:
3220 2020-08-11 Jonathan Wakely <jwakely (a] redhat.com>
3221
3222 * include/experimental/executor (system_context::_M_run()):
3223 Fix predicate.
3224 (system_context::join()): Do not join unless joinable.
3225 * testsuite/experimental/net/system_context/1.cc: New test.
3226
3227 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3228
3229 Backported from master:
3230 2020-08-10 Jonathan Wakely <jwakely (a] redhat.com>
3231
3232 * include/bits/stl_iterator.h (inserter): Do not deduce
3233 iterator type (LWG 561).
3234 * testsuite/24_iterators/insert_iterator/dr561.cc: New test.
3235
3236 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3237
3238 Backported from master:
3239 2020-10-27 Jonathan Wakely <jwakely (a] redhat.com>
3240
3241 * include/bits/fs_path.h (path::_List::begin, path::_List::end):
3242 Add noexcept to match definitions in src/c++17/fs_path.cc.
3243
3244 2021-03-29 Jonathan Wakely <jwakely (a] redhat.com>
3245
3246 Backported from master:
3247 2020-10-27 Jonathan Wakely <jwakely (a] redhat.com>
3248
3249 * src/c++17/fs_dir.cc (fs::directory_iterator::operator*):
3250 Add noexcept. Do not throw on precondition violation.
3251
3252 2021-03-19 Jakub Jelinek <jakub (a] redhat.com>
3253
3254 Backported from master:
3255 2021-02-23 Jakub Jelinek <jakub (a] redhat.com>
3256
3257 PR libstdc++/99181
3258 * testsuite/21_strings/char_traits/requirements/char/99181.cc: New
3259 test.
3260
3261 2021-03-19 Jakub Jelinek <jakub (a] redhat.com>
3262
3263 Backported from master:
3264 2021-02-23 Jakub Jelinek <jakub (a] redhat.com>
3265
3266 PR libstdc++/99181
3267 * include/bits/char_traits.h (char_traits<char>::compare): For
3268 constexpr evaluation don't call
3269 __gnu_cxx::char_traits<char_type>::compare but do the comparison loop
3270 directly.
3271
3272 2021-02-09 Jonathan Wakely <jwakely (a] redhat.com>
3273
3274 Backported from master:
3275 2021-02-09 Jonathan Wakely <jwakely (a] redhat.com>
3276
3277 PR libstdc++/99021
3278 * include/std/coroutine (coroutine_handle<P>::from_address): Add
3279 noexcept.
3280
3281 2021-01-13 Jonathan Wakely <jwakely (a] redhat.com>
3282
3283 PR libstdc++/98605
3284 * include/std/mutex (call_once): Use NOLINT to suppress clang
3285 analyzer warnings.
3286
3287 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
3288
3289 Backported from master:
3290 2020-12-02 Jonathan Wakely <jwakely (a] redhat.com>
3291
3292 * python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the
3293 name of the type and pass it to the iterator.
3294 (StdPathPrinter): Likewise.
3295 * testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test.
3296
3297 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
3298
3299 Backported from master:
3300 2020-12-16 Jonathan Wakely <jwakely (a] redhat.com>
3301
3302 PR libstdc++/96083
3303 * include/ext/throw_allocator.h: Use __has_builtin to check for
3304 __builtin_sprintf support, and use std::sprintf if necessary.
3305
3306 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
3307
3308 Backported from master:
3309 2020-12-02 Jonathan Wakely <jwakely (a] redhat.com>
3310
3311 PR libstdc++/65480
3312 PR libstdc++/68735
3313 * python/libstdcxx/v6/printers.py (function_pointer_to_name):
3314 New helper function to get the name of a function from its
3315 address.
3316 (StdExpAnyPrinter.__init__): Use it.
3317
3318 2021-01-11 Jonathan Wakely <jwakely (a] redhat.com>
3319
3320 Backported from master:
3321 2020-07-31 Jonathan Wakely <jwakely (a] redhat.com>
3322
3323 * testsuite/experimental/filesystem/filesystem_error/cons.cc:
3324 Remove -std=gnu++17 option.
3325
3326 2021-01-08 Iain Sandoe <iain (a] sandoe.co.uk>
3327
3328 Backported from master:
3329 2020-07-17 Iain Sandoe <iain (a] sandoe.co.uk>
3330
3331 * include/std/coroutine: Mark the methods of the
3332 trivial awaitables as constexpr.
3333
3334 2021-01-03 Iain Sandoe <iain (a] sandoe.co.uk>
3335 Jakub Jelinek <jakub (a] redhat.com>
3336
3337 PR target/97865
3338 * configure: Regenerate.
3339
3340 2020-12-03 Jonathan Wakely <jwakely (a] redhat.com>
3341
3342 Backported from master:
3343 2020-12-03 Jonathan Wakely <jwakely (a] redhat.com>
3344
3345 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt:
3346 Update.
3347 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
3348 Update.
3349
3350 2020-12-01 Patrick Palka <ppalka (a] redhat.com>
3351
3352 Backported from master:
3353 2020-10-12 Patrick Palka <ppalka (a] redhat.com>
3354
3355 PR libstdc++/95322
3356 * include/std/ranges (take_view::_CI): Define this alias
3357 template as per LWG 3449 and remove ...
3358 (take_view::_Sentinel::_CI): ... this type alias.
3359 (take_view::_Sentinel::operator==): Adjust use of _CI
3360 accordingly. Define a second overload that accepts an iterator
3361 of the opposite constness as per LWG 3449.
3362 (take_while_view::_Sentinel::operator==): Likewise.
3363 * testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449.
3364
3365 2020-11-26 Jonathan Wakely <jwakely (a] redhat.com>
3366
3367 Backported from master:
3368 2020-11-26 Jonathan Wakely <jwakely (a] redhat.com>
3369
3370 PR libstdc++/98001
3371 * testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid
3372 FILE* to constructor.
3373
3374 2020-11-25 Jonathan Wakely <jwakely (a] redhat.com>
3375
3376 Backported from master:
3377 2020-11-25 Jonathan Wakely <jwakely (a] redhat.com>
3378
3379 PR libstdc++/97935
3380 * include/bits/iterator_concepts.h (__detail::__iter_without_category):
3381 New helper concept.
3382 (__iterator_traits::__cat): Use __detail::__iter_without_category.
3383 * testsuite/24_iterators/associated_types/iterator.traits.cc: New test.
3384
3385 2020-11-25 Jonathan Wakely <jwakely (a] redhat.com>
3386
3387 Backported from master:
3388 2020-06-04 Jonathan Wakely <jwakely (a] redhat.com>
3389
3390 * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
3391 (__detail::__cat, __detail::__diff): Move to class scope in the
3392 relevant __iterator_traits specializations.
3393 (__iterator_traits<>): Use nested class templates instead of ones from
3394 namespace __detail.
3395 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
3396 class scope in iterator_traits<common_iterator<I, S>>.
3397 (iterator_traits<common_iterator<I, S>>): Use nested class template
3398 instead of __detail::__common_iter_ptr.
3399
3400 2020-11-24 Jonathan Wakely <jwakely (a] redhat.com>
3401
3402 Backported from master:
3403 2020-10-02 Jonathan Wakely <jwakely (a] redhat.com>
3404
3405 * testsuite/29_atomics/atomic_float/value_init.cc: Use float
3406 instead of double so that __atomic_load_8 isn't needed.
3407
3408 2020-11-20 Jonathan Wakely <jwakely (a] redhat.com>
3409
3410 Backported from master:
3411 2020-11-20 Jonathan Wakely <jwakely (a] redhat.com>
3412
3413 PR libstdc++/92546
3414 * include/std/regex (pmr::smatch, pmr::wsmatch): Declare using
3415 underlying __normal_iterator type, not nested typedef
3416 basic_string::const_iterator.
3417
3418 2020-11-20 Jonathan Wakely <jwakely (a] redhat.com>
3419
3420 PR libstdc++/97876
3421 * include/std/stop_token (_Stop_state_t): Define default
3422 constructor as user-provided not defaulted.
3423
3424 2020-11-20 Jonathan Wakely <jwakely (a] redhat.com>
3425
3426 Backported from master:
3427 2020-11-19 Jonathan Wakely <jwakely (a] redhat.com>
3428
3429 PR libstdc++/95989
3430 * config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID):
3431 Define new macro to get reliable thread ID.
3432 * include/std/stop_token (_Stop_state_t::_M_request_stop):
3433 Use new macro if it's defined.
3434 (_Stop_state_t::_M_remove_callback): Likewise.
3435 * include/std/thread (this_thread::get_id): Likewise.
3436 * testsuite/30_threads/jthread/95989.cc: New test.
3437 * testsuite/30_threads/this_thread/95989.cc: New test.
3438
3439 2020-11-18 Patrick Palka <ppalka (a] redhat.com>
3440
3441 Backported from master:
3442 2020-11-18 Patrick Palka <ppalka (a] redhat.com>
3443
3444 * include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify
3445 local variable inner.
3446 (join_view::_Iterator::operator->): Use _Inner_iter instead of
3447 _Outer_iter in the function signature as per LWG 3500.
3448 * testsuite/std/ranges/adaptors/join.cc (test08): Test it.
3449
3450 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
3451
3452 Backported from master:
3453 2020-10-06 Jonathan Wakely <jwakely (a] redhat.com>
3454
3455 * include/std/ranges (join_view): Remove deduction guide.
3456 (views::join): Add explicit template argument list to prevent
3457 deducing the wrong type.
3458 * testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474
3459 here, from ...
3460 * testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed.
3461
3462 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
3463
3464 Backported from master:
3465 2020-08-24 Jonathan Wakely <jwakely (a] redhat.com>
3466
3467 * include/std/ranges (join_view): Add deduction guide (LWG 3474).
3468 * testsuite/std/ranges/adaptors/join_lwg3474.cc: New test.
3469
3470 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
3471
3472 Backported from master:
3473 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
3474
3475 * include/std/version (__cpp_lib_array_constexpr)
3476 (__cpp_lib_constexpr_char_traits): Only define C++17 value when
3477 compiling C++17.
3478
3479 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
3480
3481 Backported from master:
3482 2020-06-15 Jonathan Wakely <jwakely (a] redhat.com>
3483
3484 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
3485 Update value for C++20.
3486 * include/std/version (__cpp_lib_constexpr_char_traits): Likewise.
3487 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
3488 Update expected value.
3489
3490 2020-11-18 Jonathan Wakely <jwakely (a] redhat.com>
3491
3492 Backported from master:
3493 2020-11-17 Jonathan Wakely <jwakely (a] redhat.com>
3494
3495 PR libstdc++/97869
3496 * include/precompiled/stdc++.h: Include <coroutine>.
3497 * include/std/version (__cpp_lib_span): Check __cpp_lib_concepts
3498 before defining.
3499
3500 2020-11-17 Patrick Palka <ppalka (a] redhat.com>
3501
3502 Backported from master:
3503 2020-11-17 Patrick Palka <ppalka (a] redhat.com>
3504
3505 PR libstdc++/97828
3506 * include/bits/ranges_algo.h (__search_n_fn::operator()): Check
3507 random_access_iterator before using the backtracking
3508 implementation. When the backwards scan fails prematurely,
3509 reset __remainder appropriately.
3510 * testsuite/25_algorithms/search_n/97828.cc: New test.
3511
3512 2020-11-16 Jonathan Wakely <jwakely (a] redhat.com>
3513
3514 Backported from master:
3515 2020-11-13 Jonathan Wakely <jwakely (a] redhat.com>
3516
3517 PR libstdc++/93456
3518 * src/c++11/futex.cc (relative_timespec): Remove redundant check
3519 negative values.
3520 * testsuite/30_threads/future/members/93456.cc: New.
3521
3522 2020-11-16 Jonathan Wakely <jwakely (a] redhat.com>
3523
3524 Backported from master:
3525 2020-11-16 Jonathan Wakely <jwakely (a] redhat.com>
3526
3527 * src/c++11/futex.cc (relative_timespec): New function to
3528 create relative time from two absolute times.
3529 (__atomic_futex_unsigned_base::_M_futex_wait_until): Use
3530 relative_timespec.
3531
3532 2020-11-16 Jonathan Wakely <jwakely (a] redhat.com>
3533
3534 Backported from master:
3535 2020-11-12 Jonathan Wakely <jwakely (a] redhat.com>
3536
3537 * include/std/future (future::wait_for): Do not wait for
3538 durations less than or equal to zero.
3539 * testsuite/30_threads/future/members/poll.cc: New test.
3540
3541 2020-11-13 Jonathan Wakely <jwakely (a] redhat.com>
3542
3543 Backported from master:
3544 2020-11-13 Jonathan Wakely <jwakely (a] redhat.com>
3545
3546 PR libstdc++/97798
3547 * include/ext/numeric_traits.h (__glibcxx_signed)
3548 (__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove
3549 macros.
3550 (__is_integer_nonstrict::__width): Define new constant.
3551 (__numeric_traits_integer): Define constants in terms of each
3552 other and __is_integer_nonstrict::__width, rather than the
3553 removed macros.
3554 (_GLIBCXX_INT_N_TRAITS): Macro to define explicit
3555 specializations for non-standard integer types.
3556
3557 2020-11-13 Jonathan Wakely <jwakely (a] redhat.com>
3558
3559 PR libstdc++/96042
3560 * testsuite/std/ranges/iota/96042.cc: Only assert that the
3561 difference type is wider than long long if __int128 is
3562 supported.
3563
3564 2020-11-12 Jonathan Wakely <jwakely (a] redhat.com>
3565
3566 Backported from master:
3567 2020-08-20 Jonathan Wakely <jwakely (a] redhat.com>
3568
3569 * include/bits/iterator_concepts.h [__STRICT_ANSI__]
3570 (incrementable_traits<__int128>): Define specialization.
3571 (incrementable_traits<unsigned __int128>): Likewise.
3572 * testsuite/std/ranges/iota/96042.cc: Test iota_view with
3573 __int128.
3574
3575 2020-11-12 Jonathan Wakely <jwakely (a] redhat.com>
3576
3577 Backported from master:
3578 2020-08-19 Jonathan Wakely <jwakely (a] redhat.com>
3579 Patrick Palka <ppalka (a] redhat.com>
3580
3581 PR libstdc++/96042
3582 * include/bits/range_access.h (__detail::__to_unsigned_like):
3583 Do not use make_unsigned_t<T> in the return type, as it can
3584 result in an error before the integral<T> constraint is checked.
3585 [__STRICT_ANSI__]: Add overloads for 128-bit integer types.
3586 (__detail::__make_unsigned_like_t): Define as the return type
3587 of __to_unsigned_like.
3588 * testsuite/std/ranges/subrange/96042.cc: New test.
3589
3590 2020-11-12 Jonathan Wakely <jwakely (a] redhat.com>
3591
3592 Backported from master:
3593 2020-08-19 Jonathan Wakely <jwakely (a] redhat.com>
3594
3595 PR libstdc++/96042
3596 * include/ext/numeric_traits.h (__is_integer_nonstrict): New
3597 trait which is true for 128-bit integers even in strict modes.
3598 (__numeric_traits_integer, __numeric_traits): Use
3599 __is_integer_nonstrict instead of __is_integer.
3600 * include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__]
3601 (numeric_limits<__int128>, (numeric_limits<unsigned __int128>):
3602 Define.
3603 * testsuite/std/ranges/iota/96042.cc: New test.
3604
3605 2020-11-11 Paul Scharnofske <asynts (a] gmail.com>
3606
3607 Backported from master:
3608 2020-11-11 Paul Scharnofske <asynts (a] gmail.com>
3609
3610 * include/std/thread (jthread::operator=(jthread&&)): Transfer
3611 any existing state to a temporary that will request a stop and
3612 then join.
3613 * testsuite/30_threads/jthread/jthread.cc: Test move assignment.
3614
3615 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
3616
3617 Backported from master:
3618 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
3619
3620 PR libstdc++/96269
3621 * include/std/optional (operator==, operator!=, operator<)
3622 (operator>, operator<=, operator>=): Fix types used in
3623 SFINAE constraints.
3624 * testsuite/20_util/optional/relops/96269.cc: New test.
3625
3626 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
3627
3628 Backported from master:
3629 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
3630
3631 PR libstdc++/97731
3632 * src/filesystem/dir.cc (recursive_directory_iterator): Call the
3633 right overload of _Dir::advance.
3634 * testsuite/experimental/filesystem/iterators/97731.cc: New test.
3635
3636 2020-11-05 Jonathan Wakely <jwakely (a] redhat.com>
3637
3638 Backported from master:
3639 2020-10-10 Jonathan Wakely <jwakely (a] redhat.com>
3640
3641 PR libstdc++/97362
3642 * doc/html/manual/source_code_style.html: Regenerate.
3643 * doc/xml/manual/appendix_contributing.xml: Add __deref to
3644 BADNAMES.
3645 * include/debug/functions.h (_Irreflexive_checker::__deref):
3646 Rename to __ref.
3647 * testsuite/17_intro/badnames.cc: Check __deref.
3648
3649 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
3650
3651 Backported from master:
3652 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
3653
3654 PR libstdc++/92285
3655 * doc/xml/manual/evolution.xml: Document change to base class.
3656 * doc/html/manual/api.html: Regenerate.
3657
3658 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
3659
3660 * doc/xml/manual/evolution.xml: Document new C++20 headers.
3661 * doc/html/*: Regenerate.
3662
3663 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
3664
3665 Backported from master:
3666 2020-06-01 Jonathan Wakely <jwakely (a] redhat.com>
3667
3668 * doc/xml/manual/evolution.xml: Document deprecation of
3669 __is_nullptr_t and removal of std::allocator members.
3670 * doc/html/manual/api.html: Regenerate.
3671
3672 2020-11-04 Jonathan Wakely <jwakely (a] redhat.com>
3673
3674 Backported from master:
3675 2020-06-01 Jonathan Wakely <jwakely (a] redhat.com>
3676
3677 * doc/xml/manual/containers.xml: Replace <xref> with <link>.
3678 * doc/xml/manual/evolution.xml: Likewise.
3679 * doc/html/manual/api.html: Regenerate.
3680 * doc/html/manual/containers.html: Regenerate.
3681
3682 2020-10-29 Patrick Palka <ppalka (a] redhat.com>
3683
3684 Backported from master:
3685 2020-10-29 Patrick Palka <ppalka (a] redhat.com>
3686
3687 * testsuite/25_algorithms/lexicographical_compare/constrained.cc:
3688 (test03): Fix initializing the vector vy with the array y of size 4.
3689
3690 2020-10-28 Patrick Palka <ppalka (a] redhat.com>
3691
3692 Backported from master:
3693 2020-10-23 Patrick Palka <ppalka (a] redhat.com>
3694
3695 * include/std/ranges (single_view::single_view): Mark the
3696 in place constructor explicit as per LWG 3428.
3697 (take_view): Remove the constraint on the deduction guide's
3698 template parameter as per LWG 3447.
3699
3700 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
3701
3702 Backported from master:
3703 2020-09-22 Patrick Palka <ppalka (a] redhat.com>
3704
3705 * include/std/span (span::front): Remove static_assert.
3706 (span::back): Likewise.
3707 (span::operator[]): Likewise.
3708 * testsuite/23_containers/span/back_neg.cc: Rewrite to verify
3709 that we check the preconditions of back() only when it's called.
3710 * testsuite/23_containers/span/front_neg.cc: Likewise for
3711 front().
3712 * testsuite/23_containers/span/index_op_neg.cc: Likewise for
3713 operator[].
3714
3715 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
3716
3717 Backported from master:
3718 2020-10-12 Patrick Palka <ppalka (a] redhat.com>
3719
3720 * include/std/ranges (take_while_view::begin): Constrain the
3721 const overload further as per LWG 3450.
3722 (take_while_view::end): Likewise.
3723 * testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG
3724 3450.
3725
3726 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
3727
3728 Backported from master:
3729 2020-09-22 Patrick Palka <ppalka (a] redhat.com>
3730
3731 * include/bits/stl_algo.h (__sample): Exit early when the
3732 input range is empty.
3733 * testsuite/25_algorithms/sample/3.cc: New test.
3734
3735 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
3736
3737 Backported from master:
3738 2020-09-22 Patrick Palka <ppalka (a] redhat.com>
3739
3740 * include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20.
3741 (search): Likewise for the overload that takes a searcher.
3742 * testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr
3743 std::for_each_n.
3744 * testsuite/25_algorithms/search/constexpr.cc: Test constexpr
3745 std::search overload that takes a searcher.
3746
3747 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
3748
3749 Backported from master:
3750 2020-08-27 Patrick Palka <ppalka (a] redhat.com>
3751
3752 PR libstdc++/95322
3753 * include/std/ranges (transform_view::sentinel::__distance_from):
3754 Give this a deduced return type.
3755 (transform_view::sentinel::operator-): Adjust the return type so
3756 that it's based on the constness of the iterator rather than
3757 that of the sentinel.
3758 * testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488.
3759
3760 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
3761
3762 Backported from master:
3763 2020-08-27 Patrick Palka <ppalka (a] redhat.com>
3764
3765 * include/std/ranges (elements_view::begin): Adjust constraints.
3766 (elements_view::end): Likewise.
3767 (elements_view::_Sentinel::operator==): Templatize to take both
3768 _Iterator<true> and _Iterator<false>.
3769 (elements_view::_Sentinel::operator-): Likewise.
3770 * testsuite/std/ranges/adaptors/elements.cc: Add testcase for
3771 the example from P1994R1.
3772 * testsuite/std/ranges/adaptors/lwg3406.cc: New test.
3773
3774 2020-10-21 Patrick Palka <ppalka (a] redhat.com>
3775
3776 Backported from master:
3777 2020-08-27 Patrick Palka <ppalka (a] redhat.com>
3778
3779 * include/std/ranges (elements_view::end): Replace these two
3780 overloads with four new overloads.
3781 (elements_view::_Iterator::operator==): Remove.
3782 (elements_view::_Iterator::operator-): Likewise.
3783 (elements_view::_Sentinel): Define.
3784
3785 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
3786
3787 Backported from master:
3788 2020-08-10 Jonathan Wakely <jwakely (a] redhat.com>
3789
3790 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
3791 Use gdb.Type.strip_typedefs().
3792 * testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in
3793 the emulated old type.
3794
3795 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
3796
3797 Backported from master:
3798 2020-10-14 Jonathan Wakely <jwakely (a] redhat.com>
3799
3800 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3801 (basic_string(const _CharT*, const _Alloc&)): Constrain to
3802 require an allocator-like type to fix CTAD ambiguity (LWG 3706).
3803 Define inline.
3804 * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
3805 (basic_string(const _CharT*, const _Alloc&)): Remove non-inline
3806 definition.
3807 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
3808 Remove dg-skip-if.
3809 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3810 Likewise.
3811
3812 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
3813
3814 Backported from master:
3815 2020-10-14 Jonathan Wakely <jwakely (a] redhat.com>
3816
3817 * testsuite/21_strings/basic_string/allocator/char/minimal.cc:
3818 Do not require cxx11-abi effective target.
3819 * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
3820 Likewise.
3821 * testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
3822
3823 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
3824
3825 Backported from master:
3826 2020-10-08 Jonathan Wakely <jwakely (a] redhat.com>
3827
3828 * include/bits/ios_base.h (ios_base::failure): Add constructors
3829 takeing error_code argument. Add code() member function.
3830 * testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
3831 run for the old ABI but do not check for derivation from
3832 std::system_error.
3833 * testsuite/27_io/ios_base/failure/error_code.cc: New test.
3834
3835 2020-10-20 Nuno Lopes <nuno.lopes (a] ist.utl.pt>
3836
3837 Backported from master:
3838 2020-10-13 Nuno Lopes <nuno.lopes (a] ist.utl.pt>
3839
3840 * include/bits/stl_algo.h (any_of): Fix incorrect description
3841 in comment.
3842
3843 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
3844
3845 Backported from master:
3846 2020-10-12 Jonathan Wakely <jwakely (a] redhat.com>
3847
3848 * include/bits/stl_algobase.h (copy, move, copy_backward)
3849 (move_backward): Fix documentation for returned iterator.
3850
3851 2020-10-20 Jonathan Wakely <jwakely (a] redhat.com>
3852
3853 Backported from master:
3854 2020-09-24 Jonathan Wakely <jwakely (a] redhat.com>
3855
3856 * doc/xml/manual/configure.xml: Correct name of option.
3857 * doc/html/*: Regenerate.
3858
3859 2020-10-19 Jonathan Wakely <jwakely (a] redhat.com>
3860
3861 Backported from master:
3862 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
3863
3864 PR libstdc++/97132
3865 * include/std/memory (assume_aligned): Do not use
3866 __builtin_assume_aligned during constant evaluation.
3867 * testsuite/20_util/assume_aligned/1.cc: Improve test.
3868 * testsuite/20_util/assume_aligned/97132.cc: New test.
3869
3870 2020-10-15 Jonathan Wakely <jwakely (a] redhat.com>
3871
3872 Backported from master:
3873 2020-10-15 Jonathan Wakely <jwakely (a] redhat.com>
3874
3875 * include/std/concepts: Fix typos in copyright notice.
3876 * include/std/ranges: Likewise.
3877
3878 2020-10-15 Jonathan Wakely <jwakely (a] redhat.com>
3879
3880 * doc/xml/manual/status_cxx2020.xml: Remove red background for
3881 completed feature.
3882 * doc/html/manual/status.html: Regenerate.
3883
3884 2020-10-13 Patrick Palka <ppalka (a] redhat.com>
3885
3886 Backported from master:
3887 2020-10-08 Patrick Palka <ppalka (a] redhat.com>
3888
3889 PR libstdc++/95788
3890 * include/bits/ranges_uninitialized.h:
3891 (__construct_at_fn::operator()): Rewrite in terms of
3892 std::construct_at. Declare it conditionally noexcept. Qualify
3893 calls to declval in its requires-clause.
3894 * testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
3895 New test.
3896
3897 2020-10-08 Jonathan Wakely <jwakely (a] redhat.com>
3898
3899 Backported from master:
3900 2020-10-07 Jonathan Wakely <jwakely (a] redhat.com>
3901
3902 * include/bits/random.h (seed_seq(initializer_list<T>)): Rename
3903 parameter to use reserved name.
3904 * include/bits/ranges_algo.h (shift_left, shift_right): Rename
3905 template parameters to use reserved name.
3906 * testsuite/17_intro/names.cc: Check "il". Do not check "d" and
3907 "y" in C++20 mode.
3908
3909 2020-10-06 Patrick Palka <ppalka (a] redhat.com>
3910
3911 Backported from master:
3912 2020-10-02 Patrick Palka <ppalka (a] redhat.com>
3913
3914 * include/bits/stl_iterator.h (reverse_iterator::iter_move):
3915 Define for C++20 as per P0896.
3916 (reverse_iterator::iter_swap): Likewise.
3917 (move_iterator::operator*): Apply P0896 changes for C++20.
3918 (move_iterator::operator[]): Likewise.
3919 * testsuite/24_iterators/reverse_iterator/cust.cc: New test.
3920
3921 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
3922
3923 Backported from master:
3924 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
3925
3926 PR libstdc++/97167
3927 * src/c++17/fs_path.cc (path::_Parser::root_path()): Check
3928 for empty string before inspecting the first character.
3929 * testsuite/27_io/filesystem/path/append/source.cc: Append
3930 empty string_view to path.
3931
3932 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
3933
3934 Backported from master:
3935 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
3936
3937 PR libstdc++/96803
3938 * include/std/tuple
3939 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
3940 Use correct value category in __use_alloc call.
3941 * testsuite/20_util/tuple/cons/96803.cc: Check with constructors
3942 that require correct value category to be used.
3943
3944 2020-09-22 Jonathan Wakely <jwakely (a] redhat.com>
3945
3946 Backported from master:
3947 2020-08-26 Jonathan Wakely <jwakely (a] redhat.com>
3948
3949 PR libstdc++/96803
3950 * include/std/tuple
3951 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
3952 Replace parameter pack with a type parameter and a pack and pass
3953 the first type to __use_alloc.
3954 * testsuite/20_util/tuple/cons/96803.cc: New test.
3955
3956 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
3957
3958 Backported from master:
3959 2020-08-10 Jonathan Wakely <jwakely (a] redhat.com>
3960
3961 PR libstdc++/94681
3962 * src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead
3963 of calling ::lstat directly.
3964 * src/filesystem/ops.cc (read_symlink): Likewise.
3965
3966 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
3967
3968 Backported from master:
3969 2020-08-10 Jonathan Wakely <jwakely (a] redhat.com>
3970
3971 PR libstdc++/94681
3972 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
3973 $enable_libstdcxx_filesystem_ts.
3974 * configure: Regenerate.
3975
3976 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
3977
3978 Backported from master:
3979 2020-09-20 Jonathan Wakely <jwakely (a] redhat.com>
3980
3981 PR libstdc++/97101
3982 * include/std/functional (bind_front): Fix order of parameters
3983 in is_nothrow_constructible_v specialization.
3984 * testsuite/20_util/function_objects/bind_front/97101.cc: New test.
3985
3986 2020-09-21 Jonathan Wakely <jwakely (a] redhat.com>
3987
3988 Backported from master:
3989 2020-09-10 Jonathan Wakely <jwakely (a] redhat.com>
3990
3991 PR libstdc++/94160
3992 * src/c++17/memory_resource.cc (munge_options): Round
3993 max_blocks_per_chunk to a multiple of four.
3994 (__pool_resource::_M_alloc_pools()): Simplify slightly.
3995 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
3996 Check that valid pointers are returned when small values are
3997 used for max_blocks_per_chunk.
3998
3999 2020-09-03 Jonathan Wakely <jwakely (a] redhat.com>
4000
4001 Backported from master:
4002 2020-07-07 Jonathan Wakely <jwakely (a] redhat.com>
4003
4004 * include/Makefile.am: Remove bits/int_limits.h.
4005 * include/Makefile.in: Regenerate.
4006 * include/bits/int_limits.h: Removed.
4007 * include/bits/parse_numbers.h (_Select_int_base): Replace
4008 __int_limits with __int_traits.
4009 * include/bits/range_access.h (_SSize::operator()): Likewise.
4010 * include/ext/numeric_traits.h (__numeric_traits_integer): Add
4011 static assertion.
4012 (__int_traits): New alias template.
4013 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
4014 (__countr_zero, __countr_one, __popcount, __bit_ceil)
4015 (__bit_floor, __bit_width) Replace __int_limits with
4016 __int_traits.
4017 * include/std/charconv (__to_chars_8, __from_chars_binary)
4018 (__from_chars_alpha_to_num, from_chars): Likewise.
4019 * include/std/memory_resource (polymorphic_allocator::allocate)
4020 (polymorphic_allocator::allocate_object): Likewise.
4021 * include/std/string_view (basic_string_view::_S_compare):
4022 Likewise.
4023 * include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
4024
4025 2020-09-02 Jonathan Wakely <jwakely (a] redhat.com>
4026
4027 Backported from master:
4028 2020-08-28 Jonathan Wakely <jwakely (a] redhat.com>
4029
4030 PR libstdc++/92978
4031 * include/std/numeric (__abs_integral): Replace with ...
4032 (__detail::__absu): New function template that returns an
4033 unsigned type, guaranteeing it can represent the most
4034 negative signed value.
4035 (__detail::__gcd, __detail::__lcm): Require arguments to
4036 be unsigned and therefore already non-negative.
4037 (gcd, lcm): Convert arguments to absolute value as unsigned
4038 type before calling __detail::__gcd or __detail::__lcm.
4039 * include/experimental/numeric (gcd, lcm): Likewise.
4040 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected
4041 errors.
4042 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
4043 * testsuite/26_numerics/gcd/92978.cc: New test.
4044 * testsuite/26_numerics/lcm/92978.cc: New test.
4045 * testsuite/experimental/numeric/92978.cc: New test.
4046
4047 2020-09-02 Jonathan Wakely <jwakely (a] redhat.com>
4048
4049 Backported from master:
4050 2020-09-02 Jonathan Wakely <jwakely (a] redhat.com>
4051
4052 PR libstdc++/96851
4053 * include/bits/cpp_type_traits.h (__is_memcmp_ordered):
4054 New trait that says if memcmp can be used for ordering.
4055 (__is_memcmp_ordered_with): Likewise, for two types.
4056 * include/bits/ranges_algo.h (__lexicographical_compare_fn):
4057 Use new traits instead of __is_byte and __numeric_traits.
4058 * include/bits/stl_algobase.h (__lexicographical_compare_aux1)
4059 (__is_byte_iter): Likewise.
4060 * include/std/array (operator<=>): Likewise. Only use memcmp
4061 when std::is_constant_evaluated() is false.
4062 * testsuite/23_containers/array/comparison_operators/96851.cc:
4063 New test.
4064 * testsuite/23_containers/array/tuple_interface/get_neg.cc:
4065 Adjust dg-error line numbers.
4066
4067 2020-09-02 Jonathan Wakely <jwakely (a] redhat.com>
4068
4069 * include/bits/stl_iterator.h (counted_iterator::operator++(int)):
4070 Use __throw_exception_again macro.
4071
4072 2020-08-26 Jonathan Wakely <jwakely (a] redhat.com>
4073
4074 Backported from master:
4075 2020-08-26 Jonathan Wakely <jwakely (a] redhat.com>
4076
4077 PR libstdc++/71960
4078 * include/experimental/string_view (basic_string_view):
4079 Enable debug assertions.
4080 * include/std/string_view (basic_string_view):
4081 Likewise.
4082
4083 2020-08-26 Jonathan Wakely <jwakely (a] redhat.com>
4084
4085 Backported from master:
4086 2020-08-24 Jonathan Wakely <jwakely (a] redhat.com>
4087
4088 PR libstdc++/96766
4089 * include/std/variant (_Variant_storage): Replace implicit
4090 conversions from size_t to __index_type with explicit casts.
4091
4092 2020-08-21 Jonathan Wakely <jwakely (a] redhat.com>
4093
4094 Backported from master:
4095 2020-08-21 Jonathan Wakely <jwakely (a] redhat.com>
4096
4097 PR libstdc++/96718
4098 * testsuite/25_algorithms/pstl/feature_test-2.cc: Require
4099 tbb-backend effective target.
4100 * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
4101 * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
4102 * testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
4103
4104 2020-08-19 Jonathan Wakely <jwakely (a] redhat.com>
4105
4106 Backported from master:
4107 2020-08-19 Jonathan Wakely <jwakely (a] redhat.com>
4108
4109 * include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST): New
4110 macro for "use 'foo' instead" message in deprecated warnings.
4111 * include/bits/ios_base.h (io_state, open_mode, seek_dir)
4112 (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
4113 * include/std/streambuf (stossc): Replace C++11 attribute
4114 with _GLIBCXX_DEPRECATED_SUGGEST.
4115 * include/std/type_traits (__is_nullptr_t): Use
4116 _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
4117 * testsuite/27_io/types/1.cc: Check for deprecated warnings.
4118 Also check for io_state, open_mode and seek_dir typedefs.
4119
4120 2020-08-11 Jonathan Wakely <jwakely (a] redhat.com>
4121
4122 PR libstdc++/89760
4123 * testsuite/experimental/net/execution_context/make_service.cc:
4124 Add dg-require-gthreads.
4125 * testsuite/experimental/net/executor/1.cc: Likewise.
4126 * testsuite/experimental/net/headers.cc: Likewise.
4127 * testsuite/experimental/net/internet/address/v4/comparisons.cc:
4128 Likewise.
4129 * testsuite/experimental/net/internet/address/v4/cons.cc:
4130 Likewise.
4131 * testsuite/experimental/net/internet/address/v4/creation.cc:
4132 Likewise.
4133 * testsuite/experimental/net/internet/address/v4/members.cc:
4134 Likewise.
4135 * testsuite/experimental/net/internet/resolver/base.cc:
4136 Likewise.
4137 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
4138 Likewise.
4139 * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
4140 Likewise.
4141 * testsuite/experimental/net/socket/basic_socket.cc: Likewise.
4142 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
4143 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
4144 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
4145
4146 2020-08-10 Jonathan Wakely <jwakely (a] redhat.com>
4147
4148 Backported from master:
4149 2020-08-10 Jonathan Wakely <jwakely (a] redhat.com>
4150
4151 PR libstdc++/95749
4152 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
4153 (stat_type): Change to __stat64.
4154 (stat): Use _wstat64.
4155
4156 2020-08-07 Jonathan Wakely <jwakely (a] redhat.com>
4157
4158 Backported from master:
4159 2020-08-07 Jonathan Wakely <jwakely (a] redhat.com>
4160
4161 PR libstdc++/96303
4162 * include/debug/bitset (bitset::operator==): Call _M_base() on
4163 right operand.
4164 (bitset::operator!=): Likewise, but don't define it at all when
4165 default comparisons are supported by the compiler.
4166 * testsuite/23_containers/bitset/operations/96303.cc: New test.
4167
4168 2020-08-06 Jonathan Wakely <jwakely (a] redhat.com>
4169
4170 Backported from master:
4171 2020-08-06 Jonathan Wakely <jwakely (a] redhat.com>
4172
4173 PR libstdc++/96484
4174 * src/c++17/fs_ops.cc (fs::read_symlink): Return an error
4175 immediately for non-symlinks.
4176 * src/filesystem/ops.cc (fs::read_symlink): Likewise.
4177
4178 2020-07-23 Release Manager
4179
4180 * GCC 10.2.0 released.
4181
4182 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
4183
4184 Backported from master:
4185 2020-06-08 Jonathan Wakely <jwakely (a] redhat.com>
4186
4187 * include/bits/unique_ptr.h (operator<<): Define for C++20.
4188 * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
4189 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
4190 line number.
4191 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
4192
4193 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
4194
4195 Backported from master:
4196 2020-05-27 Jonathan Wakely <jwakely (a] redhat.com>
4197
4198 PR libstdc++/95322
4199 * include/std/ranges (transform_view::_Sentinel): Allow hidden
4200 friends to work with _Iterator<true> and _Iterator<false>.
4201 (join_view::_Sentinel): Likewise.
4202 * testsuite/std/ranges/adaptors/95322.cc: New test.
4203
4204 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
4205
4206 Backported from master:
4207 2020-05-04 Jonathan Wakely <jwakely (a] redhat.com>
4208
4209 PR libstdc++/94936
4210 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
4211 Add comment about single-threaded behaviour.
4212 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
4213 class member access out of loop.
4214 (synchronized_pool_resource::synchronized_pool_resource())
4215 (synchronized_pool_resource::~synchronized_pool_resource())
4216 (synchronized_pool_resource::release()): Check __gthread_active_p
4217 before creating and/or deleting the thread-specific data key.
4218 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust
4219 assertions.
4220 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
4221 path for single-threaded case.
4222 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
4223 Likewise. Return if unable to find a pool that owns the allocation.
4224 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
4225 New test.
4226 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
4227 test.
4228 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New
4229 test.
4230
4231 2020-07-09 Jonathan Wakely <jwakely (a] redhat.com>
4232
4233 Backported from master:
4234 2020-05-19 Jonathan Wakely <jwakely (a] redhat.com>
4235
4236 PR libstdc++/94087
4237 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
4238 passed in.
4239 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand
4240 fallback.
4241 (random_device::_M_init): Use __x86_rdseed_rdrand when both
4242 instructions are available.
4243 * testsuite/26_numerics/random/random_device/94087.cc: New test.
4244
4245 2020-07-02 Ville Voutilainen <ville.voutilainen (a] gmail.com>
4246
4247 Backported from master:
4248 2020-07-02 Ville Voutilainen <ville.voutilainen (a] gmail.com>
4249
4250 PR libstdc++/91807
4251 * include/std/variant
4252 (_Copy_assign_base::operator=(const _Copy_assign_base&):
4253 Do the move-assignment from a temporary so that the temporary
4254 is constructed with an explicit index.
4255 * testsuite/20_util/variant/91807.cc: New.
4256
4257 2020-07-02 Jonathan Wakely <jwakely.gcc (a] gmail.com>
4258
4259 Backported from master:
4260 2020-07-02 Jonathan Wakely <jwakely.gcc (a] gmail.com>
4261
4262 PR libstdc++/91153
4263 PR target/93224
4264 * testsuite/29_atomics/atomic_float/1.cc: Use different values
4265 for tests.
4266 * testsuite/29_atomics/atomic_ref/float.cc: Likewise.
4267
4268 2020-07-01 Jonathan Wakely <jwakely (a] redhat.com>
4269
4270 Backported from master:
4271 2020-06-16 Jonathan Wakely <jwakely (a] redhat.com>
4272
4273 PR libstdc++/95282
4274 * include/bits/atomic_base.h (__atomic_impl::load): Add
4275 const-qualifier to parameter so that _Tp is deduced as the
4276 non-const type, and use _Val to get the unqualified type.
4277 (__atomic_impl::exchange): Use the _Val alias to remove
4278 volatile from the reinterpret_cast result type.
4279 * testsuite/29_atomics/atomic_float/95282.cc: New test.
4280
4281 2020-07-01 Jonathan Wakely <jwakely (a] redhat.com>
4282
4283 Backported from master:
4284 2020-07-01 Jonathan Wakely <jwakely (a] redhat.com>
4285
4286 PR libstdc++/94627
4287 * include/bits/regex.h (operator==, operator!=): Remove noexcept
4288 equality comparisons for match_results.
4289 * testsuite/28_regex/match_results/94627.cc: New test.
4290
4291 2020-06-29 Ville Voutilainen <ville.voutilainen (a] gmail.com>
4292
4293 Backported from master:
4294 2020-06-28 Ville Voutilainen <ville.voutilainen (a] gmail.com>
4295
4296 PR libstdc++/95915
4297 * include/std/variant (_Uninitialized):
4298 Adjust the condition and the comment.
4299 * testsuite/20_util/variant/95915.cc: New.
4300 * testsuite/20_util/variant/compile.cc: Add new test.
4301
4302 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
4303
4304 Backported from master:
4305 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
4306
4307 * include/std/charconv (__from_chars_binary): Ignore leading zeros.
4308 * testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases,
4309 not just 10 and 16.
4310 * testsuite/20_util/from_chars/3.cc: New test.
4311
4312 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
4313
4314 Backported from master:
4315 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
4316
4317 * include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers.
4318 * include/std/charconv (__detail::__to_chars): Avoid
4319 -Wsign-compare warning.
4320
4321 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
4322
4323 Backported from master:
4324 2020-06-24 Jonathan Wakely <jwakely (a] redhat.com>
4325
4326 PR libstdc++/95851
4327 * include/std/charconv (__to_chars_i): Check for zero-sized
4328 buffer unconditionally.
4329 * testsuite/20_util/to_chars/95851.cc: New test.
4330
4331 2020-06-22 Jason Merrill <jason (a] redhat.com>
4332
4333 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
4334 Remove greedy_ops tests.
4335 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc:
4336 Remove greedy_ops tests.
4337
4338 2020-06-11 Patrick Palka <ppalka (a] redhat.com>
4339
4340 PR libstdc++/95578
4341 * include/bits/ranges_algo.h (__lexicographical_compare_fn):
4342 Also check that the iterator and sentinel have the same type before
4343 applying the unwrapping optimization for __normal_iterator.
4344 Split the check into two, one for the first iterator/sentinel
4345 pair and another for second iterator/sentinel pair. Remove uses
4346 of __niter_base, and remove uses of std::move on a
4347 __normal_iterator.
4348 * include/bits/ranges_algobase.h (__equal_fn): Likewise.
4349 (__copy_or_move): Likewise. Perform similar adjustments for
4350 the reverse_iterator and move_iterator optimizations. Inline
4351 the checks into the if-constexprs, and use using-declarations to
4352 make them less visually noisy. Remove uses of __niter_wrap.
4353 (__copy_or_move_backward): Likewise.
4354 * testsuite/25_algorithms/copy/95578.cc: New test.
4355 * testsuite/25_algorithms/copy_backward/95578.cc: New test.
4356 * testsuite/25_algorithms/equal/95578.cc: New test.
4357 * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
4358 * testsuite/25_algorithms/move/95578.cc: New test.
4359 * testsuite/25_algorithms/move_backward/95578.cc: New test.
4360
4361 2020-05-28 Patrick Palka <ppalka (a] redhat.com>
4362
4363 PR libstdc++/95322
4364 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
4365 Remove and instead define it ...
4366 (common_iterator::_Proxy): ... here.
4367 (common_iterator::operator->): Use it.
4368 * testsuite/24_iterators/common_iterator/2.cc: New test.
4369 * testsuite/std/ranges/adaptors/95322.cc: New test.
4370
4371 2020-05-26 Alexandre Oliva <oliva (a] adacore.com>
4372
4373 PR libstdc++/77691
4374 * include/experimental/memory_resource
4375 (__resource_adaptor_imp::do_allocate): Handle max_align_t on
4376 x86-vxworks as on x86-solaris.
4377 (__resource_adaptor_imp::do_deallocate): Likewise.
4378 * testsuite/experimental/memory_resource/new_delete_resource.cc:
4379 Drop xfail.
4380 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
4381 (test03): Drop max-align test for char-aligned alloc.
4382
4383 2020-05-23 Jonathan Wakely <jwakely (a] redhat.com>
4384
4385 Backport from mainline
4386 2020-05-23 Jonathan Wakely <jwakely (a] redhat.com>
4387
4388 * include/bits/fs_path.h (__detail::_S_range_begin)
4389 (__detail::_S_range_end): Remove unintentional static specifiers.
4390 * include/experimental/bits/fs_path.h (__detail::_S_range_begin)
4391 (__detail::_S_range_end): Likewise.
4392
4393 2020-05-23 Jonathan Wakely <jwakely (a] redhat.com>
4394
4395 Backport from mainline
4396 2020-05-23 Jonathan Wakely <jwakely (a] redhat.com>
4397
4398 PR libstdc++/95289
4399 * include/debug/helper_functions.h (__get_distance): Only declare
4400 as a constexpr function for C++14 and up.
4401 * testsuite/25_algorithms/copy/debug/95289.cc: New test.
4402
4403 2020-05-21 Jonathan Wakely <jwakely (a] redhat.com>
4404
4405 Backport from mainline
4406 2020-05-21 Jonathan Wakely <jwakely (a] redhat.com>
4407
4408 * include/experimental/executor (use_future_t::use_future_t()): Fix
4409 incorrect noexcept-specifier.
4410 * include/experimental/internet (basic_resolver_results): Adjust
4411 whitespace.
4412 * include/experimental/socket (__basic_socket_impl::release): Add
4413 member function.
4414 (basic_socket(io_context&, const endpoint_type&)): Fix argument to
4415 target constructor.
4416 (basic_socket::release(), basic_socket::release(error_code&)): Add
4417 missing member functions.
4418 (basic_socket::is_open()): Add nodiscard attribute.
4419 (basic_socket::close(error_code&)): Pass argument to base function.
4420 (basic_socket_acceptor::release())
4421 (basic_socket_acceptor::release(error_code&)): Add missing member
4422 functions.
4423 (basic_socket_acceptor::is_open()): Add nodiscard attribute.
4424 (basic_socket_streambuf::error()): Add noexcept.
4425 (basic_socket_iostream::error()): Likewise.
4426 * testsuite/experimental/net/socket/basic_socket.cc: New test.
4427
4428 2020-05-21 Jonathan Wakely <jwakely (a] redhat.com>
4429
4430 Backport from mainline
4431 2020-05-21 Jonathan Wakely <jwakely (a] redhat.com>
4432
4433 PR libstdc++/93983
4434 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
4435 Reorder constraints to avoid recursion when constructors use
4436 iterator_traits (LWG 3420).
4437 * testsuite/24_iterators/customization_points/lwg3420.cc: New test.
4438
4439 2020-05-12 Jonathan Wakely <jwakely (a] redhat.com>
4440
4441 Backport from mainline
4442 2020-05-04 Jonathan Wakely <jwakely (a] redhat.com>
4443
4444 PR libstdc++/94906
4445 * src/c++17/memory_resource.cc
4446 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift
4447 operands.
4448
4449 Backport from mainline
4450 2020-05-03 Jonathan Wakely <jwakely (a] redhat.com>
4451
4452 PR libstdc++/94933
4453 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
4454 usable in constant expressions.
4455 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
4456 non-scalars.
4457
4458 2020-05-07 Jonathan Wakely <jwakely (a] redhat.com>
4459
4460 Backport from mainline
4461 2020-05-01 Jonathan Wakely <jwakely (a] redhat.com>
4462 Patrick Palka <ppalka (a] redhat.com>
4463
4464 PR libstdc++/92894
4465 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
4466 Add trait to determine return type and an alias for it.
4467 (ranges::__cust_imove::_IMove::operator()): Use __result instead of
4468 deduced return type.
4469 * testsuite/24_iterators/customization_points/92894.cc: New test.
4470 * testsuite/24_iterators/indirect_callable/92894.cc: New test.
4471
4472 2020-05-07 Release Manager
4473
4474 * GCC 10.1.0 released.
4475
4476 2020-05-07 Eric Botcazou <ebotcazou (a] adacore.com>
4477
4478 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
4479 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
4480
4481 2020-05-06 H.J. Lu <hongjiu.lu (a] intel.com>
4482
4483 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
4484
4485 2020-05-06 Rainer Orth <ro (a] CeBiTec.Uni-Bielefeld.DE>
4486
4487 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
4488 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
4489 Likewise.
4490 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
4491 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
4492 Likewise.
4493
4494 2020-05-06 Jonathan Wakely <jwakely (a] redhat.com>
4495
4496 * doc/xml/manual/abi.xml (abi.versioning.history): Document library
4497 versions for GCC 9.[123] and 10.1 releases.
4498 * doc/html/*: Regenerate.
4499
4500 2020-05-06 Jakub Jelinek <jakub (a] redhat.com>
4501
4502 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
4503 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
4504 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
4505 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
4506 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
4507 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
4508 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
4509
4510 2020-05-04 Jonathan Wakely <jwakely (a] redhat.com>
4511
4512 * doc/xml/faq.xml: Use working link for SGI STL FAQ.
4513 * doc/html/*: Regenerate.
4514
4515 2020-05-01 Jonathan Wakely <jwakely (a] redhat.com>
4516
4517 Backport from mainline
4518 2020-05-01 Jonathan Wakely <jwakely (a] redhat.com>
4519
4520 PR libstdc++/94901
4521 * include/std/type_traits (__is_complete_or_unbounded): Replace
4522 BADNAME _T with _Tp.
4523 * testsuite/17_intro/badnames.cc: New test.
4524
4525 2020-04-30 Jonathan Wakely <jwakely (a] redhat.com>
4526
4527 PR libstdc++/89510
4528 * include/bits/alloc_traits.h (allocator_traits::_S_construct)
4529 (allocator_traits::_S_destroy)
4530 (allocator_traits<allocator<T>>::construct): Use traits in
4531 noexcept-specifiers.
4532 * include/bits/allocator.h (allocator<void>::construct)
4533 (allocator<void>::destroy): Likewise.
4534 * include/ext/malloc_allocator.h (malloc_allocator::construct)
4535 (malloc_allocator::destroy): Likewise.
4536 * include/ext/new_allocator.h (new_allocator::construct)
4537 (new_allocator::destroy): Likewise.
4538 * testsuite/20_util/allocator/89510.cc: New test.
4539 * testsuite/ext/malloc_allocator/89510.cc: New test.
4540 * testsuite/ext/new_allocator/89510.cc: New test.
4541
4542 2020-04-29 Jonathan Wakely <jwakely (a] redhat.com>
4543
4544 PR libstdc++/94854
4545 * include/bits/basic_string.tcc: Update comment about explicit
4546 instantiations.
4547
4548 2020-04-28 Jonathan Wakely <jwakely (a] redhat.com>
4549
4550 PR libstdc++/91480
4551 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
4552 Remove non-standard macro.
4553 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
4554 to indicate P1032R1 support.
4555 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
4556 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
4557 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
4558 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
4559 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
4560 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
4561 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check
4562 feature test macro.
4563 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
4564 * testsuite/21_strings/basic_string_view/operations/copy/char/
4565 constexpr.cc: Likewise.
4566 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
4567
4568 PR libstdc++/94831
4569 * include/bits/alloc_traits.h (_S_construct): Restore placement
4570 new-expression for C++11/14/17 and call std::construct_at directly
4571 for C++20.
4572 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr
4573 function returning void.
4574 * testsuite/20_util/specialized_algorithms/
4575 uninitialized_value_construct/94831.cc: New test.
4576 * testsuite/23_containers/vector/cons/94831.cc: New test.
4577
4578 2020-04-28 Patrick Palka <ppalka (a] redhat.com>
4579
4580 LWG 3433 subrange::advance(n) has UB when n < 0
4581 * include/std/ranges (subrange::prev): Fix typo.
4582 (subrange::advance): Handle a negative argument as per the proposed
4583 resolution of LWG 3433.
4584 * testsuite/std/ranges/subrange/lwg3433.cc: New test.
4585
4586 2020-04-28 Jonathan Wakely <jwakely (a] redhat.com>
4587 Iain Sandoe <iain (a] sandoe.co.uk>
4588
4589 PR c++/94759
4590 * include/std/coroutine: Implement handing for non-
4591 class coroutine return types.
4592
4593 2020-04-24 Jonathan Wakely <jwakely (a] redhat.com>
4594
4595 * include/experimental/executor (service_already_exists): Make default
4596 constructor public (LWG 3414).
4597 * testsuite/experimental/net/execution_context/make_service.cc: Check
4598 the service_already_exists can be default constructed.
4599
4600 2020-04-24 Kamlesh Kumar <kamleshbhalui (a] gmail.com>
4601 Jonathan Wakely <jwakely (a] redhat.com>
4602
4603 PR libstdc++/90415
4604 PR libstdc++/92156
4605 * include/std/any (any): Rename template parameters for consistency
4606 with the standard.
4607 (any::_Decay): Rename to _Decay_if_not_any.
4608 (any::any(T&&):: Remove is_constructible from constraints. Remove
4609 non-standard overload.
4610 (any::any(in_place_type_t<T>, Args&&...))
4611 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
4612 (any::emplace(Args&&...))
4613 (any::emplace(initializer_list<U>, Args&&...)):
4614 Use decay_t instead of _Decay.
4615 * testsuite/20_util/any/cons/90415.cc: New test.
4616 * testsuite/20_util/any/cons/92156.cc: New Test.
4617 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
4618 more robust.
4619 * testsuite/20_util/any/modifiers/92156.cc: New test.
4620
4621 2020-04-23 Jonathan Wakely <jwakely (a] redhat.com>
4622
4623 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
4624 * doc/html/*: Regenerate.
4625
4626 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
4627 value for C++17 to 201803L because P0858R0 is supported for C++17.
4628 * include/std/version (__cpp_lib_array_constexpr): Likewise.
4629 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
4630 Check for value corresponding to P0031R0 features being tested.
4631 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
4632 Check for value corresponding to P0858R0 features being tested.
4633
4634 * include/std/version (__cpp_lib_three_way_comparison): Define for
4635 freestanding builds.
4636
4637 2020-04-23 Thomas Rodgers <rodgert (a] appliantology.com>
4638
4639 * include/experimental/net/executor (system_context): Mark
4640 system_context::system_context() = delete.
4641 * testsuite/experimental/net/executor/1.cc: Add new
4642 test to check system_context is not default constructible.
4643
4644 2020-04-23 Iain Sandoe <iain (a] sandoe.co.uk>
4645
4646 * include/std/coroutine: Update the inline namespace to __n4861.
4647 Add the __cpp_lib_coroutine define, set to 201902L.
4648 * include/std/version: Add __cpp_lib_coroutine, set to 201902L.
4649
4650 2020-04-22 Jonathan Wakely <jwakely (a] redhat.com>
4651
4652 * include/std/execution (__cpp_lib_execution): Define to indicate
4653 support for P0024R2 and P1001R2.
4654 * include/std/version (__cpp_lib_execution): Define.
4655 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
4656 defined by <algorithm>, move other tests to new tests ...
4657 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
4658 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
4659 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
4660 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
4661
4662 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
4663 different values for C++17 and C++20, to indicate different feature
4664 sets. Update value for C++20 to indicate P1032R1 support.
4665 * include/std/version (__cpp_lib_array_constexpr): Likewise.
4666 * testsuite/23_containers/array/comparison_operators/constexpr.cc:
4667 Check feature test macro.
4668 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
4669 New test.
4670 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
4671 feature test macro.
4672 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
4673 in C++17 mode and check feature test macro.
4674
4675 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
4676 here.
4677 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
4678 defined by <utility>.
4679
4680 * include/std/functional (__cpp_lib_concepts): Update macro value to
4681 indicate P1964R2 support.
4682 * include/std/version (__cpp_lib_concepts): Likewise.
4683 * testsuite/std/concepts/1.cc: Adjust expected value.
4684 * testsuite/std/concepts/2.cc: Likewise.
4685
4686 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to
4687 __cpp_lib_constexpr_functional.
4688 * include/std/version (__cpp_lib_constexpr_invoke): Likewise.
4689 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
4690
4691 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
4692 indicate P1006R1 support.
4693 (__cpp_lib_to_address): Define to indicate P0653R2 support.
4694 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
4695 P1227R2 support.
4696 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
4697 P0769R2 support.
4698 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate
4699 P0020R6 support.
4700 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate
4701 P1007R3 support.
4702 * include/std/memory_resource (__cpp_lib_polymorphic_allocator):
4703 Define to indicate P0339R6 support.
4704 * include/std/string_view (__cpp_lib_starts_ends_with): Define to
4705 indicate P0457R2 support.
4706 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
4707 to indicate P0758R1 support.
4708 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
4709 (__cpp_lib_type_identity): Define to indicate P0887R1 support.
4710 * include/std/version (__cpp_lib_atomic_float)
4711 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
4712 (__cpp_lib_type_identity, __cpp_lib_assume_aligned)
4713 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
4714 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
4715 (__cpp_lib_to_address): Define.
4716 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
4717
4718 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
4719 macro.
4720 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
4721 Likewise.
4722 * include/std/version (__cpp_lib_map_insertion)
4723 (__cpp_lib_unordered_map_insertion): Remove.
4724
4725 * include/std/condition_variable (__cpp_lib_jthread): Remove
4726 redundant definition.
4727 * include/std/stop_token (__cpp_lib_jthread): Update macro value to
4728 indicate P1869R1 support.
4729 * include/std/version (__cpp_lib_jthread): Update value.
4730 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
4731 for updated macro value.
4732 * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
4733 Likewise.
4734 * testsuite/30_threads/jthread/1.cc: Likewise.
4735 * testsuite/30_threads/jthread/2.cc: Likewise.
4736 * testsuite/30_threads/stop_token/1.cc: Likewise.
4737 * testsuite/30_threads/stop_token/2.cc: Likewise.
4738
4739 * testsuite/21_strings/basic_string/erasure.cc: Check for
4740 __cpp_lib_erase_if macro.
4741 * testsuite/23_containers/deque/erasure.cc: Add header name to #error
4742 messages.
4743 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
4744 * testsuite/23_containers/list/erasure.cc: Likewise.
4745 * testsuite/23_containers/map/erasure.cc: Likewise.
4746 * testsuite/23_containers/set/erasure.cc: Likewise.
4747 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
4748 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
4749 * testsuite/23_containers/vector/erasure.cc: Likewise.
4750
4751 2020-04-21 Jonathan Wakely <jwakely (a] redhat.com>
4752
4753 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
4754 to define operator<=>.
4755 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
4756
4757 * doc/Makefile.am (xml_sources_manual): Add missing XML files.
4758 * doc/Makefile.in: Regenerate.
4759 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
4760 of "this page".
4761 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
4762 to the C++11 status table.
4763 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
4764 proposals with table matching contents of the C++14 standard.
4765 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of
4766 the C++17 standard.
4767 * doc/html/*: Regenerate.
4768
4769 PR c++/94149
4770 * include/std/type_traits (__is_nt_constructible_impl): Add partial
4771 specializations for bounded arrays with non-empty initializers.
4772 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
4773
4774 2020-04-20 Thomas Rodgers <trodgers (a] redhat.com>
4775
4776 * testsuite/lib/libstdc++.exp: Add additional_flags=
4777 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
4778 compiling with a newer Thread Building Blocks.
4779
4780 2020-04-20 Jonathan Wakely <jwakely (a] redhat.com>
4781
4782 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
4783
4784 * testsuite/20_util/is_constructible/51185.cc: Make test class a
4785 non-aggregate so that the test verifies the same thing in all -std
4786 modes.
4787 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
4788 results for some types when paren-init for aggregates is supported.
4789
4790 * include/std/version (__cpp_lib_three_way_comparison): Update value.
4791 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
4792 (__detail::__synth3way): Add noexcept-specifier.
4793
4794 * include/bits/stl_map.h (map): Define operator<=> and remove
4795 operator< for C++20.
4796 * include/bits/stl_multimap.h (multimap): Likewise.
4797 * include/bits/stl_multiset.h (multiset): Likewise.
4798 * include/bits/stl_set.h (set): Likewise.
4799 * include/bits/stl_tree.h (_Rb_tree): Likewise.
4800 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
4801 operator!= for C++20.
4802 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
4803 * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
4804 * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
4805 * include/debug/set.h (__gnu_debug::set): Likewise.
4806 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
4807 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
4808 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
4809 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
4810
4811 2020-04-20 Matthias Kretz <kretz (a] kde.org>
4812
4813 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
4814
4815 2020-04-19 Jonathan Wakely <jwakely (a] redhat.com>
4816
4817 * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
4818 * include/bits/stl_stack.h (stack): Likewise.
4819 * testsuite/23_containers/queue/cmp_c++20.cc: New test.
4820 * testsuite/23_containers/stack/cmp_c++20.cc: New test.
4821
4822 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
4823 Remove redundant operator!= for C++20.
4824 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
4825 Likewise.
4826 * include/debug/unordered_map (unordered_map, unordered_multimap):
4827 Likewise.
4828 * include/debug/unordered_set (unordered_set, unordered_multiset):
4829 Likewise.
4830
4831 PR other/94629
4832 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
4833 redundant assignment in constructor.
4834
4835 2020-04-18 Jonathan Wakely <jwakely (a] redhat.com>
4836
4837 * include/std/chrono (duration, time_point): Define operator<=> and
4838 remove redundant operator!= for C++20.
4839 * testsuite/20_util/duration/comparison_operators/three_way.cc: New
4840 test.
4841 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
4842 test.
4843
4844 * testsuite/util/native_type/native_priority_queue.hpp: Use
4845 allocator_traits to rebind allocator.
4846
4847 2020-04-17 Jonathan Wakely <jwakely (a] redhat.com>
4848
4849 * include/bits/forward_list.h (forward_list): Define operator<=> and
4850 remove redundant comparison operators for C++20.
4851 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
4852 * include/bits/stl_deque.h (deque): Likewise.
4853 * include/bits/stl_iterator.h (__normal_iterator): Likewise.
4854 * include/bits/stl_list.h (list): Likewise.
4855 * include/bits/stl_vector.h (vector): Likewise.
4856 * include/debug/deque (__gnu_debug::deque): Likewise.
4857 * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
4858 * include/debug/list (__gnu_debug::list): Likewise.
4859 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
4860 Likewise.
4861 * include/debug/vector (__gnu_debug::vector): Likewise.
4862 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
4863 operator<=> for C++20.
4864 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
4865 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
4866 * testsuite/23_containers/list/cmp_c++20.cc: New test.
4867 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
4868 * testsuite/23_containers/vector/cmp_c++20.cc: New test.
4869
4870 * include/bits/basic_string.h (basic_string): Define operator<=> and
4871 remove redundant comparison operators for C++20.
4872 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
4873 Add comparison_category members.
4874 (__detail::__char_traits_cmp_cat): New helper to get comparison
4875 category from char traits class.
4876 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
4877 define for C++20.
4878 (sub_match): Define operator<=> and remove redundant comparison
4879 operators for C++20.
4880 (match_results): Remove redundant operator!= for C++20.
4881 * include/std/string_view (basic_string_view): Define operator<=> and
4882 remove redundant comparison operators for C++20.
4883 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
4884 test.
4885 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
4886 New test.
4887 * testsuite/21_strings/basic_string_view/operations/copy/char/
4888 constexpr.cc: Initialize variable.
4889 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
4890 constexpr.cc: Likewise.
4891 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
4892 dg-do directive and remove comments showing incorrect signatures.
4893 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
4894 Likewise.
4895 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
4896 New test.
4897 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
4898 New test.
4899 * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
4900
4901 2020-04-16 Jonathan Wakely <jwakely (a] redhat.com>
4902
4903 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
4904 name of unused parameter.
4905
4906 2020-04-15 Jonathan Wakely <jwakely (a] redhat.com>
4907
4908 * include/bits/fs_dir.h (file_status): Define operator== for C++20.
4909 (directory_entry): Define operator<=> and remove redundant comparison
4910 operators for C++20.
4911 * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
4912 * include/bits/fs_path.h (path): Define operator<=> and remove
4913 redundant comparison operators for C++20.
4914 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
4915 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
4916 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
4917 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
4918
4919 * include/bits/allocator.h (operator!=): Do not define for C++20.
4920 * include/bits/locale_classes.h (operator!=): Likewise.
4921 * include/bits/std_function.h (operator==(nullptr_t, const function&))
4922 (operator!=(const function&, nullptr_t))
4923 (operator!=(nullptr_t, const function&)): Likewise.
4924 * include/ext/bitmap_allocator.h (operator!=): Likewise.
4925 * include/ext/debug_allocator.h (operator!=): Likewise.
4926 * include/ext/extptr_allocator.h (operator!=): Likewise.
4927 * include/ext/malloc_allocator.h (operator!=): Likewise.
4928 * include/ext/mt_allocator.h (operator!=): Likewise.
4929 * include/ext/new_allocator.h (operator!=): Likewise.
4930 * include/ext/pool_allocator.h (operator!=): Likewise.
4931 * include/ext/throw_allocator.h (operator!=): Likewise.
4932 * include/std/bitset (bitset::operator!=): Likewise.
4933 * include/std/memory_resource (operator!=): Likewise.
4934 * include/std/scoped_allocator (operator!=): Likewise.
4935
4936 * include/std/typeindex (operator<=>): Define for C++20.
4937 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
4938
4939 2020-04-14 Jonathan Wakely <jwakely (a] redhat.com>
4940
4941 * libsupc++/compare (compare_three_way): Fix constraint so that
4942 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
4943 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
4944 New test.
4945
4946 PR libstdc++/94562
4947 * include/bits/shared_ptr.h (operator<=>): Define for C++20.
4948 * include/bits/shared_ptr_base.h (operator<=>): Likewise.
4949 * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
4950 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
4951 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
4952 std::less<A*> to be used when comparing std::shared_ptr<A> objects in
4953 C++20.
4954
4955 PR libstdc++/94565
4956 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
4957 * testsuite/18_support/comparisons/categories/94565.cc: New test.
4958
4959 2020-04-13 Iain Sandoe <iain (a] sandoe.co.uk>
4960
4961 * include/std/coroutine: Update coroutines builtin define,
4962 per n4861.
4963
4964 2020-04-09 Jonathan Wakely <jwakely (a] redhat.com>
4965
4966 * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
4967 (strong_order, weak_order, partial_order): Replace uses of <=> with
4968 compare_three_way function object (LWG 3324).
4969 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
4970 equality operator so that X satisfies three_way_comparable.
4971 * testsuite/18_support/comparisons/algorithms/strong_order.cc:
4972 Likewise.
4973 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
4974
4975 * include/bits/unique_ptr.h (operator<=>): Define for C++20.
4976 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
4977 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
4978 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
4979 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
4980
4981 2020-04-08 Jonathan Wakely <jwakely (a] redhat.com>
4982
4983 * include/bits/slice_array.h (operator==(const slice&, const slice&)):
4984 Define for C++20.
4985 * include/std/complex (operator==(const T&, const complex<T>&))
4986 (operator!=(const complex<T>&, const complex<T>&))
4987 (operator!=(const complex<T>&, const T&))
4988 (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
4989 * testsuite/26_numerics/slice/compare.cc: New test.
4990
4991 * include/std/charconv (to_chars_result, from_chars_result): Add
4992 defaulted equality comparisons for C++20.
4993 * testsuite/20_util/from_chars/compare.cc: New test.
4994 * testsuite/20_util/to_chars/compare.cc: New test.
4995
4996 2020-04-07 Jonathan Wakely <jwakely (a] redhat.com>
4997
4998 PR libstdc++/94520
4999 * include/std/charconv (__integer_to_chars_result_type)
5000 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
5001 allow use in C++14.
5002 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
5003 use of std::string_view with std::string.
5004 * testsuite/20_util/from_chars/2.cc: Likewise.
5005 * testsuite/20_util/to_chars/1.cc: Likewise.
5006 * testsuite/20_util/to_chars/2.cc: Likewise.
5007
5008 2020-04-06 Jonathan Wakely <jwakely (a] redhat.com>
5009
5010 PR libstdc++/94498
5011 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
5012 usable in constant expressions for C++20.
5013 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
5014 _GLIBCXX20_CONSTEXPR.
5015 (std::char_traits<char>, std::char_traits<wchar_t>)
5016 (std::char_traits<char8_t>): Make move, copy and assign usable in
5017 constant expressions for C++20.
5018 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
5019 and copy usable in constant expressions for C++20.
5020 * include/std/string_view (basic_string_view::copy): Add
5021 _GLIBCXX20_CONSTEXPR.
5022 * testsuite/21_strings/basic_string_view/operations/copy/char/
5023 constexpr.cc: New test.
5024 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
5025 constexpr.cc: New test.
5026
5027 2020-04-05 Gerald Pfeifer <gerald (a] pfeifer.com>
5028
5029 * doc/xml/manual/appendix_contributing.xml: Refer to Git
5030 documentation instead of Subversion. Switch to https.
5031 * doc/html/manual/appendix_contributing.html: Regenerate.
5032
5033 2020-04-03 Jonathan Wakely <jwakely (a] redhat.com>
5034
5035 PR libstdc++/93960
5036 * include/bits/ptr_traits.h (__to_address): Add special case for debug
5037 iterators, to avoid dereferenceable check.
5038 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
5039 * testsuite/20_util/to_address/debug.cc: New test.
5040
5041 2020-04-01 Andrea Corallo <andrea.corallo (a] arm.com>
5042
5043 * testsuite/experimental/net/execution_context/use_service.cc:
5044 Require pthread and gthreads.
5045
5046 2020-04-01 Gerald Pfeifer <gerald (a] pfeifer.com>
5047
5048 * doc/xml/manual/appendix_free.xml: Move "free books" list from
5049 fsf.org to gnu.org.
5050 * doc/html/manual/appendix_free.html: Regenerate.
5051
5052 2020-03-31 Ville Voutilainen <ville.voutilainen (a] gmail.com>
5053
5054 Library-side tests for parenthesized aggregate init
5055
5056 PR c++/92878
5057 PR c++/92947
5058
5059 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
5060 * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
5061 * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
5062 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
5063 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
5064 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
5065 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
5066 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
5067 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
5068 Likewise.
5069 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
5070 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
5071 * testsuite/20_util/variant/92878_92947.cc: Likewise.
5072 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
5073 Likewise.
5074 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
5075 Likewise.
5076 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
5077 Likewise.
5078 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
5079 Likewise.
5080 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
5081 Likewise.
5082 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
5083 Likewise.
5084 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
5085 * testsuite/23_containers/queue/92878_92947.cc: Likewise.
5086 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
5087 Likewise.
5088 * testsuite/23_containers/stack/92878_92947.cc: Likewise.
5089 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
5090 Likewise.
5091 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
5092 Likewise.
5093 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
5094 Likewise.
5095 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
5096 Likewise.
5097 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
5098 Likewise.
5099
5100 2020-03-28 Jonathan Wakely <jwakely (a] redhat.com>
5101
5102 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
5103 for changes due to parenthesized aggregate-initialization in C++20.
5104 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
5105 with std::chrono::sys_time in C++20.
5106
5107 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
5108 to constrain C++20 versions of comparison operators. Fix backwards
5109 logic of relational operators.
5110 (move_iterator): Use requires-clause to constrain comparison operators
5111 in C++20. Do not declare non-standard same-type overloads for C++20.
5112 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
5113 of comparisons and check using greedy_ops type.
5114 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
5115 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
5116 main function from compile-only test.
5117 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
5118
5119 2020-03-27 Jonathan Wakely <jwakely (a] redhat.com>
5120
5121 * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
5122 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
5123 C++20 concepts are required.
5124 * include/bits/stl_iterator_base_types.h: Likewise.
5125 * include/std/concepts: Likewise.
5126 * include/std/version: Likewise.
5127 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
5128 macro.
5129
5130 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
5131 (reverse_iterator::iterator_category): Define for C++20.
5132 (reverse_iterator): Define comparison operators correctly for C++20.
5133 (__normal_iterator): Add constraints to comparison operators for C++20.
5134 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
5135 overload for input iterators.
5136 (move_iterator): Add constraints to comparison operators for C++20.
5137 Define operator<=> for C++20.
5138 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
5139 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
5140 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
5141 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
5142
5143 * include/bits/iterator_concepts.h (__detail::__decay_copy)
5144 (__detail::__member_begin, __detail::__adl_begin): Move here from
5145 <bits/range_access.h>.
5146 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
5147 * bits/range_access.h (__cust_access::__decay_copy)
5148 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
5149 <bits/iterator_concepts.h>.
5150 (ranges::iterator_t): Use __detail::__range_iter_t.
5151 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
5152 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
5153 (front_insert_iterator): Likewise.
5154 (insert_iterator): Implement changes from P0896R4 for C++20.
5155 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
5156 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
5157 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
5158 for inclusion in synopsis_c++20.cc which expects different signatures
5159 for some function templates.
5160 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
5161
5162 * include/std/type_traits (__is_array_convertible): Move definition
5163 to immediately after is_convertible.
5164
5165 2020-03-26 Jonathan Wakely <jwakely (a] redhat.com>
5166
5167 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
5168 (chrono::months, chrono::sys_days, chrono::local_t)
5169 (chrono::local_time, chrono::local_seconds, chrono::local_days):
5170 Define for C++20.
5171 (chrono::time_point): Add missing static assert.
5172 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
5173 * testsuite/std/time/clock/file/overview.cc: New test.
5174 * testsuite/std/time/clock/file/members.cc: New test.
5175 * testsuite/std/time/syn_c++20.cc: New test.
5176
5177 2020-03-25 Mike Crowe <mac (a] mcrowe.com>
5178
5179 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
5180 test.
5181 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
5182 test.
5183
5184 2020-03-25 Jonathan Wakely <jwakely (a] redhat.com>
5185
5186 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
5187 * include/std/chrono (filesystem::__file_clock): Here.
5188 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
5189 Define public member functions for C++20.
5190 (is_clock, is_clock_v): Define traits for C++20.
5191 * include/std/condition_variable (condition_variable::wait_until): Add
5192 check for valid clock.
5193 * include/std/future (_State_baseV2::wait_until): Likewise.
5194 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
5195 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
5196 Likewise.
5197 * include/std/thread (this_thread::sleep_until): Likewise.
5198 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
5199 slow_clock with new namespace.
5200 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
5201 test.
5202 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
5203 New test.
5204 * testsuite/30_threads/future/members/clock_neg.cc: New test.
5205 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
5206 Qualify slow_clock with new namespace.
5207 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
5208 clock_neg.cc: New test.
5209 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
5210 test.
5211 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
5212 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
5213 New test.
5214 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
5215 slow_clock with new namespace.
5216 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
5217 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
5218 test.
5219 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
5220 * testsuite/std/time/traits/is_clock.cc: New test.
5221 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
5222 namespace.
5223
5224 2020-03-21 Jonathan Wakely <jwakely (a] redhat.com>
5225
5226 PR libstdc++/93245
5227 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
5228 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
5229 Improve test coverage.
5230
5231 PR libstdc++/94242
5232 * include/bits/fs_path.h (path::_S_str_convert): Replace first
5233 parameter with basic_string_view so that strings with different
5234 allocators can be accepted.
5235 (path::generic_string<C,T,A>()): Use basic_string object that uses the
5236 right allocator type.
5237 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
5238 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
5239 test coverage.
5240
5241 2020-03-18 Jonathan Wakely <jwakely (a] redhat.com>
5242
5243 PR libstdc++/94033
5244 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
5245 (__is_nt_default_constructible_impl): Remove.
5246 (__is_nothrow_default_constructible_impl): Remove.
5247 (__is_nt_constructible_impl): Add bool template parameter. Adjust
5248 partial specializations.
5249 (__is_nothrow_constructible_impl): Replace class template with alias
5250 template.
5251 (is_nothrow_default_constructible): Derive from alias template
5252 __is_nothrow_constructible_impl instead of
5253 __is_nothrow_default_constructible_impl.
5254 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
5255
5256 * include/std/stop_token (stop_token::_Stop_state_ref): Define
5257 comparison operators explicitly if the compiler won't synthesize them.
5258
5259 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
5260 __cpp_lib_concepts before using iter_reference_t.
5261 * include/bits/stream_iterator.h (istream_iterator): Check
5262 __cpp_lib_concepts before using default_sentinel_t.
5263 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
5264
5265 PR libstdc++/94203
5266 * include/experimental/executor (executor::executor(Executor)): Call
5267 make_shared directly instead of _M_create. Create _Tgt1 object.
5268 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
5269 Call allocate_shared directly instead of _M_create. Create _Tgt2
5270 object.
5271 (executor::target_type): Add cast needed for new _Tgt interface.
5272 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
5273 (executor::_Tgt): Define the same interface whether RTTI is enabled or
5274 not.
5275 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
5276 std::type_info in the interface.
5277 (executor::_Tgt::_M_func): Add data member.
5278 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
5279 (executor::_Tgt1::_S_func): Define function to access target without
5280 depending on RTTI.
5281 (executor::_M_create): Remove.
5282 (operator==, operator!=): Simplify comparisons for executor.
5283 * include/experimental/socket (is_error_code_enum<socket_errc>):
5284 Define specialization before use.
5285 * testsuite/experimental/net/executor/1.cc: New test.
5286
5287 2020-03-16 Jonathan Wakely <jwakely (a] redhat.com>
5288
5289 PR libstdc++/94199
5290 * include/experimental/executor (service_already_exists): Add default
5291 constructor. Declare make_service to be a friend.
5292 * testsuite/experimental/net/execution_context/make_service.cc: New
5293 test.
5294
5295 2020-03-12 Jonathan Wakely <jwakely (a] redhat.com>
5296
5297 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
5298 a null pointer to functions with nonnull(1) attribute.
5299
5300 2020-03-11 Patrick Palka <ppalka (a] redhat.com>
5301
5302 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
5303 'address' -> 'std::__addressof'.
5304 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
5305 a non-forward input_range.
5306 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
5307 default constructor protected instead of deleted, like with
5308 input_iterator_wrapper.
5309 (test_range::iterator): Add comment explaining that this type is used
5310 only when the underlying wrapper is input_iterator_wrapper or
5311 output_iterator_wrapper. Remove delegating defaulted constructor so
5312 that the inherited default constructor is used instead.
5313
5314 LWG 3286 ranges::size is not required to be valid after a call to
5315 ranges::begin on an input range
5316 * include/std/ranges (subrange::subrange): Split single-argument
5317 constructor into two, one constrained by _S_store_size and another by
5318 !_S_store_size.
5319 (take_view::begin): Call size() before calling ranges::begin(_M_base).
5320 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
5321 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
5322
5323 2020-03-10 Jonathan Wakely <jwakely (a] redhat.com>
5324
5325 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
5326 instead of _M_current.
5327 (split_view::_OuterIter::operator++): Likewise.
5328
5329 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
5330 (transform_view::_Iterator::operator*): Add noexcept-specifier.
5331 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
5332 (split_view::_OuterIter::__current): Add noexcept.
5333 (split_view::_InnerIter::__iter_swap): Remove.
5334 (split_view::_InnerIter::__iter_move): Remove.
5335 (split_view::_InnerIter::_M_i_current): New accessors.
5336 (split_view::_InnerIter::__at_end): Use _M_i_current().
5337 (split_view::_InnerIter::operator*): Likewise.
5338 (split_view::_InnerIter::operator++): Likewise.
5339 (iter_move(const _InnerIter&)): Likewise.
5340 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
5341 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
5342 for iter_move and iter_swap on split_view's inner iterator.
5343
5344 PR c++/94117
5345 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
5346 Change expression in noexcept-specifier to match function body.
5347
5348 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
5349 comment explaining multiple dg-do directives.
5350 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
5351 so test is run as well as compiled.
5352
5353 2020-03-09 Jonathan Wakely <jwakely (a] redhat.com>
5354
5355 PR libstdc++/94063
5356 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
5357 handle concatenations that change the type of the first component.
5358 (path::operator+=(basic_string_view<value_type>)): Likewise.
5359 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
5360
5361 2020-03-06 Patrick Palka <ppalka (a] redhat.com>
5362
5363 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
5364 join_view::_Sentinel<!_Const>.
5365 * testsuite/std/ranges/adaptors/join.cc: Augment test.
5366
5367 PR libstdc++/93978
5368 * include/bits/range_access.h (__cust_access::_Empty::operator()):
5369 Declare return type to be bool instead of auto.
5370 * testsuite/std/ranges/adaptors/93978.cc: New test.
5371
5372 2020-03-06 Jonathan Wakely <jwakely (a] redhat.com>
5373
5374 PR libstdc++/94069
5375 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
5376 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
5377 second argument to __glibcxx_rwlock_init.
5378 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
5379
5380 PR libstdc++/93244
5381 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
5382 test to not fail due to PR 94063.
5383 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
5384 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
5385
5386 2020-03-06 Andreas Krebbel <krebbel (a] linux.ibm.com>
5387
5388 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
5389 would match ENOSYS.
5390
5391 2020-03-05 Jonathan Wakely <jwakely (a] redhat.com>
5392
5393 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
5394 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
5395 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
5396 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
5397 for return value, and in comparison.
5398 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
5399
5400 PR libstdc++/94051
5401 * include/std/string_view: Include <bits/ostream_insert.h>.
5402 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
5403
5404 2020-03-04 Jonathan Wakely <jwakely (a] redhat.com>
5405
5406 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
5407
5408 2020-03-04 Patrick Palka <ppalka (a] redhat.com>
5409
5410 PR libstdc++/94017
5411 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
5412 condition for when to use memset, making sure to additionally check that
5413 the output pointer's value type is a non-volatile byte type. Instead of
5414 requiring that the fill type is a byte type, just require that it's an
5415 integral type.
5416 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
5417 New test.
5418 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
5419 New test.
5420 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
5421 blocked by PR 94017.
5422 * testsuite/25_algorithms/fill/94017.cc: New test.
5423 * testsuite/25_algorithms/fill_n/94017.cc: New test.
5424
5425 LWG 3355 The memory algorithms should support move-only input iterators
5426 introduced by P1207
5427 * include/bits/ranges_uninitialized.h
5428 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
5429 to copy __ifirst, which could be a move-only input iterator. Use
5430 operator- instead of ranges::distance to compute distance from a sized
5431 sentinel.
5432 (__uninitialized_copy_n_fn::operator()): Likewise.
5433 (__uninitialized_move_fn::operator()): Likewise.
5434 (__uninitialized_move_n_fn::operator()): Likewise.
5435 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
5436 attempting to copy __first.
5437 (__uninitialized_destroy_n_fn::operator()): Likewise.
5438 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
5439 Augment test.
5440 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
5441 Likewise.
5442 * .../specialized_algorithms/uninitialized_move/constrained.cc:
5443 Likewise.
5444
5445 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
5446 protected instead of private.
5447 (test_sized_range_sized_sent): New.
5448
5449 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
5450 New testsuite iterator.
5451 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
5452 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
5453
5454 * include/bits/ranges_uninitialized.h
5455 (uninitialized_copy_fn::operator()): Pass a reference type as the first
5456 argument to is_nothrow_assignable_v.
5457 (uninitialized_copy_fn::operator()): Likewise.
5458 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
5459 with the input iterator stripped of its move_iterator.
5460 (uninitialized_move_n_fn::operator()): Likewise.
5461 (uninitialized_fill_fn::operator()): Pass a reference type as the first
5462 argument to is_nothrow_assignable_v.
5463 (uninitialized_fill_n_fn::operator()): Likewise.
5464
5465 2020-03-03 Jonathan Wakely <jwakely (a] redhat.com>
5466
5467 PR libstdc++/94013
5468 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
5469 traits to control when to use memmove and memcmp optimizations.
5470 (__is_nonvolatile_trivially_copyable): New helper trait.
5471 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
5472 use memcmp optimization with volatile data.
5473 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
5474 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
5475 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
5476 (__copy_move_backward_a2): Likewise.
5477 (__equal_aux1): Use __memcmpable.
5478 (__lexicographical_compare_aux): Do not use memcmp optimization with
5479 volatile data.
5480 * testsuite/25_algorithms/copy/94013.cc: New test.
5481 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
5482 * testsuite/25_algorithms/equal/94013.cc: New test.
5483 * testsuite/25_algorithms/fill/94013.cc: New test.
5484 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
5485 * testsuite/25_algorithms/move/94013.cc: New test.
5486 * testsuite/25_algorithms/move_backward/94013.cc: New test.
5487
5488 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
5489 Avoid redundant iterator comparisons (LWG 3410).
5490
5491 2020-03-02 Jonathan Wakely <jwakely (a] redhat.com>
5492
5493 PR libstdc++/93972
5494 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
5495 differ.
5496 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
5497
5498 * include/std/ranges (__detail::__maybe_empty_t): Rename to
5499 __maybe_present_t.
5500 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
5501
5502 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
5503 dependent type.
5504
5505 2020-03-01 H.J. Lu <hongjiu.lu (a] intel.com>
5506
5507 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
5508
5509 2020-02-29 John David Anglin <danglin (a] gcc.gnu.org>
5510
5511 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
5512 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
5513 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
5514 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
5515 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
5516
5517 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
5518 Add libatomic option.
5519 * testsuite/30_threads/jthread/jthread.cc: Likewise.
5520
5521 2020-02-29 Franois Dumont <fdumont (a] gcc.gnu.org>
5522
5523 * include/bits/stl_algo.h
5524 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
5525 * include/bits/stl_algobase.h: ...here.
5526 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
5527
5528 2020-02-29 John David Anglin <danglin (a] gcc.gnu.org>
5529
5530 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
5531 option.
5532 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
5533 Likewise.
5534 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
5535 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
5536 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
5537 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
5538 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
5539 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
5540 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
5541 Likewise.
5542
5543 PR libstdc++/92906
5544 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
5545
5546 2020-02-28 Patrick Palka <ppalka (a] redhat.com>
5547
5548 PR libstdc++/93972
5549 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
5550 Fix condition for when to use memcmp, making it consistent with the
5551 corresponding condition used in std::lexicographical_compare.
5552 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
5553
5554 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
5555 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
5556 existing signatures for C++2a.
5557
5558 2020-02-28 Jonathan Wakely <jwakely (a] redhat.com>
5559
5560 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
5561 test instead of just compiling it.
5562
5563 2020-02-28 Patrick Palka <ppalka (a] redhat.com>
5564
5565 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
5566 whenever the underlying range models common_range.
5567
5568 * include/std/ranges (__detail::_CachedPosition): New struct.
5569 (views::filter_view::_S_needs_cached_begin): New member variable.
5570 (views::filter_view::_M_cached_begin): New member variable.
5571 (views::filter_view::begin): Use _M_cached_begin to cache its
5572 result.
5573 (views::drop_view::_S_needs_cached_begin): New static member variable.
5574 (views::drop_view::_M_cached_begin): New member variable.
5575 (views::drop_view::begin): Use _M_cached_begin to cache its result
5576 when _S_needs_cached_begin.
5577 (views::drop_while_view::_M_cached_begin): New member variable.
5578 (views::drop_while_view::begin): Use _M_cached_begin to cache its
5579 result.
5580 (views::reverse_view::_S_needs_cached_begin): New static member
5581 variable.
5582 (views::reverse_view::_M_cached_begin): New member variable.
5583 (views::reverse_view::begin): Use _M_cached_begin to cache its result
5584 when _S_needs_cached_begin.
5585 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
5586 drop_view::begin caches its result.
5587 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
5588 that drop_while_view::begin caches its result.
5589 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
5590 filter_view::begin caches its result.
5591 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
5592 reverse_view::begin caches its result.
5593
5594 2020-02-28 Jonathan Wakely <jwakely (a] redhat.com>
5595
5596 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
5597 filesystems that silently truncate timestamps.
5598 * testsuite/experimental/filesystem/operations/last_write_time.cc:
5599 Likewise.
5600
5601 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
5602 -Wstringop-overflow warnings.
5603
5604 2020-02-27 Jonathan Wakely <jwakely (a] redhat.com>
5605
5606 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
5607 -fdiagnostics-urls=never to options.
5608
5609 2020-02-27 Patrick Palka <ppalka (a] redhat.com>
5610
5611 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
5612 _Iterator<!_Const>.
5613 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
5614 (take_view::_Sentinel<_Const>): Likewise.
5615 (take_while_view::_Sentinel<_Const>): Likewise.
5616 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
5617 * testsuite/std/ranges/adaptors/split.cc: Augment test.
5618 * testsuite/std/ranges/adaptors/take.cc: Augment test.
5619 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
5620 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
5621
5622 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
5623 base() of a vector<>::iterator is a pointer.
5624 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
5625 * testsuite/25_algorithms/move/constrained.cc: Likewise.
5626 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
5627 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
5628 instead of &foo[0].
5629 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
5630 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
5631 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
5632 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
5633 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
5634
5635 2020-02-27 Jonathan Wakely <jwakely (a] redhat.com>
5636
5637 * include/debug/array (operator<=>): Define for C++20.
5638 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
5639 Adjust dg-error line numbers.
5640 * testsuite/23_containers/array/tuple_interface/
5641 tuple_element_debug_neg.cc: Likewise.
5642
5643 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
5644 defining _GLIBCXX_ASSERTIONS.
5645 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
5646 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
5647 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
5648 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
5649 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
5650 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
5651 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
5652 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
5653 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
5654 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
5655 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
5656 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
5657
5658 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
5659 C++98 where the member function of the base class returns void.
5660
5661 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
5662 equality comparisons that support value-initialized iterators.
5663
5664 * include/bits/boost_concept_check.h (__function_requires): Add
5665 _GLIBCXX14_CONSTEXPR.
5666 * testsuite/25_algorithms/min/concept_checks.cc: New test.
5667
5668 2020-02-26 Patrick Palka <ppalka (a] redhat.com>
5669
5670 PR libstdc++/93936
5671 * include/std/ranges (split_view::_InnerIter::operator==): Compare
5672 the operands' _M_i rather than their _M_i.current().
5673 * testsuite/std/ranges/adaptors/split.cc: Augment test.
5674
5675 P1645R1 constexpr for <numeric> algorithms
5676 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
5677 partial_sum, adjacent_difference): Make conditionally constexpr for
5678 C++20.
5679 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
5680 test macro.
5681 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
5682 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
5683 constexpr for C++20.
5684 * include/std/version (__cpp_lib_constexpr_numeric): Define.
5685 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
5686 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
5687 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
5688 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
5689 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
5690 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
5691 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
5692 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
5693 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
5694 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
5695 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
5696
5697 2020-02-26 Jonathan Wakely <jwakely (a] redhat.com>
5698
5699 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
5700 variables in smaller scope and avoid calling ranges::distance when we
5701 know they are pointers. Remove statically-unreachable use of
5702 __builtin_unreachable().
5703 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
5704 Define inline.
5705
5706 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
5707 alias.
5708 (__detail::__maybe_const_t): Likewise.
5709 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
5710 (transform_view, take_view, take_while_view, elements_view): Use
5711 __maybe_const_t.
5712 (join_view, split_view): Use both.
5713
5714 2020-02-25 Patrick Palka <ppalka (a] redhat.com>
5715
5716 LWG 3397 basic_istream_view::iterator should not provide
5717 iterator_category
5718 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
5719 Rename to ...
5720 (basic_istream_view:_Iterator::iterator_concept): ... this.
5721 * testsuite/std/ranges/istream_view.cc: Augment test.
5722
5723 LWG 3325 Constrain return type of transformation function for
5724 transform_view
5725 * include/std/ranges (transform_view): Constrain the return type of the
5726 transformation function as per LWG 3325.
5727 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
5728
5729 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
5730 * include/std/ranges (join_view::_Iterator::operator--): Require that
5731 range_reference_t<_Base> models common_range.
5732 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
5733
5734 LWG 3301 transform_view::_Iterator has incorrect iterator_category
5735 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
5736 determination of iterator_category as per LWG 3301.
5737 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
5738
5739 LWG 3292 iota_view is under-constrained
5740 * include/std/ranges (iota_view): Require that _Winc models semiregular
5741 as per LWG 3292.
5742 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
5743
5744 2020-02-25 Jonathan Wakely <jwakely (a] redhat.com>
5745
5746 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
5747 during constant evaluation. Call __builtin_memmove directly instead of
5748 __memmove.
5749 (__copy_or_move_backward): Likewise.
5750 * include/bits/stl_algobase.h (__memmove): Remove.
5751 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
5752 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
5753 Use __builtin_memmove directly instead of __memmove.
5754 (__copy_move_a2): Do not use memmove during constant evaluation.
5755 (__copy_move_backward_a2): Use _IsMove constant to select correct
5756 __copy_move_backward specialization.
5757 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
5758 begin turned into moves during constant evaluation.
5759
5760 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
5761 previous commit.
5762
5763 PR libstdc++/93872
5764 * include/bits/stl_algobase.h (__memmove): Cast away const before
5765 doing move assignment.
5766 * testsuite/25_algorithms/move/93872.cc: New test.
5767 * testsuite/25_algorithms/move_backward/93872.cc: New test.
5768
5769 2020-02-24 Patrick Palka <ppalka (a] redhat.com>
5770
5771 PR libstdc++/93884
5772 * include/bits/ranges_algobase.h (__copy_or_move,
5773 __copy_or_move_backward): Don't inspect the iter_value_t of the output
5774 iterator, instead inspect its iterator_traits directly.
5775 * include/bits/stl_iterator.h (back_insert_iterator::container):
5776 Conditionally initialize.
5777 (back_insert_iterator::difference_type): Conditionally define.
5778 (back_insert_iterator::back_insert_iterator): Conditionally define this
5779 default constructor.
5780 (front_insert_iterator::container): Conditionally initialize.
5781 (front_insert_iterator::difference_type): Conditionally define.
5782 (front_insert_iterator::front_insert_iterator): Conditionally define
5783 this default constructor.
5784 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
5785 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
5786
5787 P0769R2 Add shift to <algorithm>
5788 * include/bits/ranges_algo.h (shift_left, shift_right): New.
5789 * testsuite/25_algorithms/shift_left/1.cc: New test.
5790 * testsuite/25_algorithms/shift_right/1.cc: New test.
5791
5792 2020-02-24 Jonathan Wakely <jwakely (a] redhat.com>
5793
5794 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
5795 Make noexcept-specifier conditional.
5796 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
5797 noexcept-specifier.
5798
5799 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
5800 Add constructor.
5801 (operator==(istream_iterator, default_sentinel_t)): Add operator.
5802 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
5803 * include/bits/streambuf_iterator.h
5804 (istreambuf_iterator(default_sentinel_t)): Add constructor.
5805 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
5806 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
5807 New test.
5808 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
5809 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
5810 New test.
5811 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
5812
5813 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
5814 (ranges::enable_view): Simplify (LWG 3326).
5815 * include/bits/range_access.h (ranges::enable_view): Declare.
5816 * include/bits/regex.h (__enable_view_impl): Remove partial
5817 specialization.
5818 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
5819 * include/bits/stl_set.h (__enable_view_impl): Likewise.
5820 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
5821 * include/debug/multiset.h (__enable_view_impl): Likewise.
5822 * include/debug/set.h (__enable_view_impl): Likewise.
5823 * include/debug/unordered_set (__enable_view_impl): Likewise.
5824 * include/experimental/string_view (ranges::enable_view): Define
5825 partial specialization.
5826 * include/std/span (ranges::enable_view): Likewise.
5827 * include/std/string_view (ranges::enable_view): Likewise.
5828 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
5829
5830 2020-02-21 Jonathan Wakely <jwakely (a] redhat.com>
5831
5832 * include/std/optional (operator<=>(optional<T>, optional<U>))
5833 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
5834 Define for C++20.
5835 * include/std/tuple (__tuple_cmp): New helper function for <=>.
5836 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
5837 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
5838 (operator<=>(monostate, monostate)): Define for C++20.
5839 * testsuite/20_util/optional/relops/three_way.cc: New test.
5840 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
5841 * testsuite/20_util/variant/89851.cc: Move to ...
5842 * testsuite/20_util/variant/relops/89851.cc: ... here.
5843 * testsuite/20_util/variant/90008.cc: Move to ...
5844 * testsuite/20_util/variant/relops/90008.cc: ... here.
5845 * testsuite/20_util/variant/relops/three_way.cc: New test.
5846
5847 2020-02-20 Patrick Palka <ppalka (a] redhat.com>
5848
5849 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
5850 function.
5851 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
5852 __maybe_refwrap to capture lvalue references by reference, and then use
5853 unwrap_reference_t to forward the by-reference captures as references.
5854 * testsuite/std/ranges/adaptors/split.cc: Augment test.
5855 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
5856
5857 * include/std/ranges (iota_view): Forward declare _Sentinel.
5858 (iota_view::_Iterator): Befriend _Sentinel.
5859 (iota_view::_Sentinel::_M_equal): New member function.
5860 (iota_view::_Sentinel::operator==): Use it.
5861 (views::_Iota::operator()): Forward __f using the correct type.
5862 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
5863 with integers of different signedness, to appease iota_view's deduction
5864 guide.
5865 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
5866
5867 2020-02-20 Jonathan Wakely <jwakely (a] redhat.com>
5868
5869 * include/bits/range_access.h (ranges::begin): Reject array of
5870 incomplete type.
5871 (ranges::end, ranges::size): Require arrays to be bounded.
5872 (ranges::data): Require lvalue or borrowed_range.
5873 (ranges::iterator_t): Remove constraint.
5874 * testsuite/std/ranges/access/begin.cc: Do not check array of
5875 incomplete type.
5876 * testsuite/std/ranges/access/begin_neg.cc: New test.
5877 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
5878 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
5879 * testsuite/std/ranges/access/ssize.cc: Do not check array of
5880 incomplete type.
5881
5882 * include/std/system_error (error_category::operator<=>)
5883 (operator<=>(const error_code&, const error_code&))
5884 (operator<=>(const error_condition&, const error_condition&)): Define
5885 for C++20.
5886 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
5887 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
5888 test.
5889 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
5890 incorrect comment.
5891 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
5892 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
5893 incorrect comment.
5894 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
5895 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
5896 incorrect comment.
5897 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
5898 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
5899 Remove incorrect comment.
5900 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
5901 test.
5902
5903 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
5904
5905 * include/std/thread (thread::id::operator<=>): Define for C++20.
5906 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
5907 functions in namespace std.
5908 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
5909
5910 2020-02-19 Patrick Palka <ppalka (a] redhat.com>
5911
5912 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
5913 null terminator of the underlying string as part of the test_range.
5914 (main): Call test03.
5915
5916 2020-02-19 Jonathan Wakely <jwakely (a] redhat.com>
5917
5918 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
5919 requirement (LWG 3385).
5920 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
5921 expected declaration.
5922
5923 * include/std/ranges (take_while_view, drop_view, drop_while_view)
5924 (elements_view:_Iterator): Initialize data members (LWG 3364).
5925
5926 * libsupc++/compare (three_way_comparable): Remove always-false check
5927 that should have been removed with weak_equality (P1959R0).
5928 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
5929
5930 * include/std/concepts (__detail::__partially_ordered_with): Move here
5931 from <compare>.
5932 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
5933 to simplify definition (LWG 3331).
5934 * libsupc++/compare (__detail::__partially_ordered_with): Move to
5935 <concepts>.
5936
5937 * include/std/concepts (totally_ordered_with): Remove redundant
5938 requirement (LWG 3329).
5939
5940 * include/std/ranges (__detail::__convertible_to_non_slicing): New
5941 helper concept.
5942 (__detail::__pair_like_convertible_to): Remove.
5943 (__detail::__pair_like_convertible_from): Add requirements for
5944 non-slicing conversions.
5945 (subrange): Constrain constructors with __convertible_to_non_slicing.
5946 Remove constructors from pair-like types. Add new deduction guide.
5947 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
5948
5949 * include/bits/iterator_concepts.h (iter_move): Add declaration to
5950 prevent unqualified lookup finding a suitable declaration (LWG 3247).
5951
5952 * include/std/memory_resource (polymorphic_allocator::allocate)
5953 (polymorphic_allocator::allocate_object): Change type of exception to
5954 bad_array_new_length (LWG 3237).
5955 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
5956
5957 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
5958 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
5959 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
5960 * testsuite/20_util/unwrap_reference/3.cc: New test.
5961
5962 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
5963 type during overload resolution, use static assert instead (LWG 3200).
5964 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
5965 incomplete type.
5966 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
5967
5968 * include/std/span (span(T (&)[N])): Use non-deduced context to
5969 prevent first parameter from interfering with class template argument
5970 deduction (LWG 3369).
5971 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
5972 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
5973 rvalues.
5974
5975 * include/std/span (span::const_iterator, span::const_reverse_iterator)
5976 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
5977 Remove (LWG 3320).
5978 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
5979 and cend.
5980 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
5981 Likewise.
5982 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
5983 constrained.cc: Likewise.
5984 * testsuite/20_util/specialized_algorithms/
5985 uninitialized_default_construct/constrained.cc: Likewise.
5986 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
5987 constrained.cc: Likewise.
5988 * testsuite/20_util/specialized_algorithms/uninitialized_move/
5989 constrained.cc: Likewise.
5990 * testsuite/20_util/specialized_algorithms/
5991 uninitialized_value_construct/constrained.cc: Likewise.
5992
5993 * include/bits/range_access.h (range_size_t): Define alias template.
5994 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
5995 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
5996
5997 * include/std/ranges (filter_view, transform_view, take_view)
5998 (join_view, split_view, reverse_view): Remove commented-out converting
5999 constructors (LWG 3280).
6000
6001 * include/std/memory (uninitialized_construct_using_allocator): Use
6002 std::construct_at (LWG 3321).
6003
6004 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
6005 (polymorphic_allocator::allocate_object)
6006 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
6007
6008 LWG 3379. "safe" in several library names is misleading
6009 * include/bits/range_access.h (enable_safe_range): Rename to
6010 enable_borrowed_range.
6011 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
6012 (safe_range): Rename to borrowed_range.
6013 * include/bits/ranges_algo.h: Adjust to use new names.
6014 * include/bits/ranges_algobase.h: Likewise.
6015 * include/bits/ranges_uninitialized.h: Likewise.
6016 * include/std/ranges: Likewise.
6017 (safe_iterator_t): Rename to borrowed_iterator_t.
6018 (safe_subrange_t): Rename to borrowed_subrange_t.
6019 * include/std/span: Adjust to use new names.
6020 * include/std/string_view: Likewise.
6021 * include/experimental/string_view: Likewise.
6022 * testsuite/std/ranges/access/begin.cc: Likewise.
6023 * testsuite/std/ranges/access/cbegin.cc: Likewise.
6024 * testsuite/std/ranges/access/cdata.cc: Likewise.
6025 * testsuite/std/ranges/access/cend.cc: Likewise.
6026 * testsuite/std/ranges/access/crbegin.cc: Likewise.
6027 * testsuite/std/ranges/access/crend.cc: Likewise.
6028 * testsuite/std/ranges/access/data.cc: Likewise.
6029 * testsuite/std/ranges/access/end.cc: Likewise.
6030 * testsuite/std/ranges/access/rbegin.cc: Likewise.
6031 * testsuite/std/ranges/access/rend.cc: Likewise.
6032 * testsuite/std/ranges/safe_range.cc: Likewise.
6033 * testsuite/std/ranges/safe_range_types.cc: Likewise.
6034 * testsuite/util/testsuite_iterators.h: Likewise.
6035
6036 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
6037 (tuple_element<1, const subrange<I, S, K>>): Add partial
6038 specializations (LWG 3398).
6039 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
6040
6041 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
6042 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
6043 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
6044
6045 2020-02-18 Patrick Palka <ppalka (a] redhat.com>
6046
6047 P1983R0 Wording for GB301, US296, US292, US291, and US283
6048 * include/std/ranges (filter_view::pred): New member function.
6049 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
6050 P1983R0 fixes the highlighted issue in the same way.
6051 (join_view::_Iterator<_Const>): Add friend
6052 join_view::_Iterator<!_Const>.
6053 (join_view::_M_inner): Remove mutable specifier, effectively reverting
6054 the proposed wording changes of P3278.
6055 (join_view::begin): Refine the condition for when to return a const
6056 iterator.
6057 (split_view::_OuterIter::_OuterIter): Adjust constraints.
6058 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
6059 exists and works.
6060
6061 2020-02-18 Jonathan Wakely <jwakely (a] redhat.com>
6062
6063 PR libstdc++/93818
6064 * include/std/ranges (_RangeAdaptor): Add deduction guide.
6065 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
6066 iterator_t<_Vp>.
6067 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
6068 (transform_view::_Iterator): Add alias _Base_iter and use in place of
6069 iterator_t<_Base>.
6070 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
6071 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
6072 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
6073 (split_view::_InnerIter::_S_iter_cat()): Likewise.
6074
6075 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
6076 assumption that long is wider than int.
6077 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
6078 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
6079 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
6080 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
6081
6082 P1976R2 Fixed-size span construction from dynamic range
6083 * include/std/span (__cpp_lib_span): Update value.
6084 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
6085 assertion.
6086 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
6087 constraints.
6088 (span::first<Count>(), span::last<Count>()): Use explicit type in
6089 return statement.
6090 (as_bytes, as_writable_bytes): Likewise.
6091 * include/std/version (__cpp_lib_span): Update value.
6092 * testsuite/23_containers/span/1.cc: Check new value.
6093 * testsuite/23_containers/span/2.cc: Check new value.
6094 * testsuite/23_containers/span/explicit.cc: New test.
6095
6096 * include/std/span (span::__is_compatible_array): Simplify alias
6097 template by using requires-clause.
6098 (span::__is_compatible_ref): New alias template for constraining
6099 constructors.
6100 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
6101 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
6102 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
6103 redundant parentheses.
6104 (span(R&&)): Add missing constraints.
6105
6106 * include/std/span (span): Reorder members and rename template
6107 parameters to match declarations in the C++2a working paper.
6108
6109 P2116R0 Remove tuple-like protocol support from fixed-extent span
6110 * include/std/span (get, tuple_size, tuple_element): Remove.
6111 * testsuite/23_containers/span/everything.cc: Remove checks for
6112 tuple-like API.
6113 * testsuite/23_containers/span/get_neg.cc: Remove.
6114 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
6115 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
6116 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
6117
6118 2020-02-17 Patrick Palka <ppalka (a] redhat.com>
6119
6120 P2106R0 Alternative wording for GB315 and GB316
6121 * include/bits/ranges_algo.h (in_fun_result): New.
6122 (for_each_result, for_each_n_result): Change into an alias of
6123 in_fun_result.
6124 (in_in_result): New.
6125 (mismatch_result): Change into an alias of in_in_result.
6126 (copy_if_result): Change into an alias of in_out_result.
6127 (swap_ranges_result): Change into an alias of in_in_result.
6128 (unary_transform_result): Change into an alias of in_out_result.
6129 (in_in_out_result): New.
6130 (binary_transform_result): Change into an alias of in_in_out_result.
6131 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
6132 remove_copy_result, unique_copy_result, reverse_copy_result,
6133 rotate_copy_result, partial_sort_copy_result): Change into an alias of
6134 in_out_result.
6135 (in_out_out_result): New.
6136 (partition_copy_result, merge_result): Change into an alias of
6137 in_out_out_result.
6138 (set_union_result, set_intersection_result): Change into an alias of
6139 in_in_out_result.
6140 (set_difference_result): Change into an alias of in_out_result.
6141 (set_symmetric_difference): Change into an alias of in_in_out_result.
6142 (min_max_result): New.
6143 (minmax_result, minmax_element_result): Change into an alias of
6144 min_max_result.
6145 (in_found_result): New.
6146 (next_permutation_result, prev_permutation_result): Change into an alias
6147 of in_found_result.
6148 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
6149 Adjust following changes to next_permutation_result and
6150 prev_permutation_result.
6151 * include/bits/ranges_algobase.h (in_out_result): New.
6152 (copy_result, move_result, move_backward_result, copy_backward_result,
6153 copy_n_result): Change into an alias of in_out_result.
6154 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
6155 uninitialized_copy_n_result, uninitialized_move_result,
6156 uninitialized_move_n_result): Likewise.
6157 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
6158 structured bindings.
6159 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
6160
6161 P1243R4 Rangify new algorithms
6162 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
6163 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
6164 * testsuite/25_algorithms/clamp/constrained.cc: New test.
6165 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
6166 * testsuite/25_algorithms/sample/constrained.cc: New test.
6167
6168 2020-02-17 Jonathan Wakely <jwakely (a] redhat.com>
6169
6170 P1964R2 Wording for boolean-testable
6171 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
6172 (__adjacent_find_fn): Cast result of predicate to bool.
6173 * include/std/concepts (__boolean): Remove.
6174 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
6175 new helper concepts.
6176 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
6177 (predicate): Use __boolean_testable instead of boolean.
6178 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
6179 Likewise.
6180
6181 P1970R2 Consistency for size() functions: Add ranges::ssize
6182 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
6183 * testsuite/std/ranges/access/ssize.cc: New test.
6184
6185 P1956R1 On the names of low-level bit manipulation functions
6186 * include/bits/hashtable_policy.h: Update comment.
6187 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
6188 (ispow2, ceil2, floor2, log2p1): Likewise.
6189 (__cpp_lib_int_pow2): Add feature test macro.
6190 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
6191 * include/std/memory (assume_aligned): Adjust use of ispow2.
6192 * include/std/version (__cpp_lib_int_pow2): Add.
6193 * libsupc++/new_opa.cc: Adjust use of __ispow2.
6194 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
6195 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
6196 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
6197 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
6198 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
6199 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
6200 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
6201 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
6202 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
6203 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
6204 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
6205 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
6206
6207 * include/std/charconv: Add comment.
6208
6209 PR libstdc++/92546 (partial)
6210 * include/bits/random.h (uniform_random_bit_generator): Move definition
6211 to <bits/uniform_int_dist.h>.
6212 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
6213 of <bits/random.h>.
6214 * include/bits/ranges_algobase.h: Do not include <cmath>.
6215 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
6216 Move here.
6217 * include/std/ranges: Do not include <limits>.
6218 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
6219
6220 PR libstdc++/92546 (partial)
6221 * include/Makefile.am: Add new header.
6222 * include/Makefile.in: Regenerate.
6223 * include/bits/int_limits.h: New header.
6224 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
6225 numeric_limits with __detail::__int_limits.
6226 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
6227 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
6228 Likewise.
6229 * include/std/charconv (__to_chars_8, __from_chars_binary)
6230 (__from_chars_alpha_to_num, from_chars): Likewise.
6231 * include/std/memory_resource (polymorphic_allocator::allocate)
6232 (polymorphic_allocator::allocate_object): Likewise.
6233 * include/std/string_view (basic_string_view::_S_compare): Likewise.
6234 * include/std/utility (in_range): Likewise.
6235 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
6236 extra error about incomplete type __int_limits<bool>.
6237 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
6238 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
6239 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
6240 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
6241 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
6242 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
6243 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
6244 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
6245 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
6246 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
6247 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
6248 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
6249
6250 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
6251 value for partial_ordering::unordered.
6252
6253 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
6254 const-qualified expression variations.
6255 * include/std/concepts (copyable): Likewise.
6256
6257 * include/std/type_traits (__is_standard_integer): New helper trait.
6258 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
6259 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
6260 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
6261 * testsuite/20_util/integer_comparisons/1.cc: New test.
6262 * testsuite/20_util/integer_comparisons/2.cc: New test.
6263 * testsuite/20_util/integer_comparisons/equal.cc: New test.
6264 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
6265 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
6266 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
6267 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
6268 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
6269 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
6270 * testsuite/20_util/integer_comparisons/less.cc: New test.
6271 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
6272 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
6273 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
6274 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
6275 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
6276
6277 2020-02-16 Patrick Palka <ppalka (a] redhat.com>
6278
6279 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
6280 Move code after an early exit constexpr if to under an else branch.
6281 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
6282
6283 2020-02-15 Patrick Palka <ppalka (a] redhat.com>
6284
6285 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
6286 * include/bits/ranges_algobase.h: Likewise.
6287 * include/bits/ranges_uninitialized.h: Likewise.
6288
6289 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
6290 binary_search, copy_if, count, count_if, equal_range, find, find_end,
6291 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
6292 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
6293 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
6294 lower_bound, make_heap, max, max_element, merge, min, min_element,
6295 minmax, minmax_element, mismatch, next_permutation, none_of,
6296 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
6297 partition_point, pop_heap, prev_permutation, push_heap, remove,
6298 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
6299 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
6300 search, search_n, set_difference, set_intersection,
6301 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
6302 stable_partition, stable_sort, swap_ranges, transform, unique,
6303 unique_copy, upper_bound): Convert into function objects.
6304 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
6305 fill, move_backward, copy_backward): Likewise.
6306 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
6307 uninitialized_default_construct_n, uninitialized_value_construct,
6308 uninitialized_value_construct_n, uninitialized_copy,
6309 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
6310 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
6311 destroy, destroy_n): Likewise.
6312
6313 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
6314 (ranges::find_end): ... here.
6315 (ranges::__lexicographical_compare): Fold into ...
6316 (ranges::lexicographical_compare): ... here.
6317 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
6318 (ranges::equal): ... here.
6319
6320 2020-02-15 Jonathan Wakely <jwakely (a] redhat.com>
6321
6322 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
6323 * include/std/deque: Likewise.
6324 * include/std/forward_list: Likewise.
6325 * include/std/list: Likewise.
6326 * include/std/string: Likewise.
6327 * include/std/vector: Likewise.
6328 * include/std/version: Likewise.
6329 * testsuite/23_containers/deque/erasure.cc: Test for new value.
6330 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
6331 * testsuite/23_containers/list/erasure.cc: Likewise.
6332 * testsuite/23_containers/map/erasure.cc: Likewise.
6333 * testsuite/23_containers/set/erasure.cc: Likewise.
6334 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
6335 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
6336 * testsuite/23_containers/vector/erasure.cc: Likewise.
6337
6338 2020-02-15 Jonathan Wakely <jwakely (a] redhat.com>
6339
6340 * include/bits/random.h (uniform_random_bit_generator): Require min()
6341 and max() to be constant expressions and min() to be less than max().
6342 * testsuite/26_numerics/random/concept.cc: Check additional cases.
6343 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
6344
6345 2020-02-13 Patrick Palka <ppalka (a] redhat.com>
6346
6347 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
6348 * include/Makefile.in: Regenerate.
6349 * include/bits/ranges_uninitialized.h: New header.
6350 * include/std/memory: Include it.
6351 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
6352 test.
6353 * .../uninitialized_copy/constrained.cc: New test.
6354 * .../uninitialized_default_construct/constrained.cc: New test.
6355 * .../uninitialized_fill/constrained.cc: New test.
6356 * .../uninitialized_move/constrained.cc: New test.
6357 * .../uninitialized_value_construct/constrained.cc: New test.
6358
6359 * include/Makefile.am: Add bits/ranges_algobase.h
6360 * include/Makefile.in: Regenerate.
6361 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
6362 existing #includes.
6363 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
6364 __detail::__is_move_iterator, copy_result, move_result,
6365 __equal, equal, copy_result, move_result, move_backward_result,
6366 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
6367 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
6368 fill): Split out into ...
6369 * bits/range_algobase.h: ... this new header.
6370
6371 2020-02-12 Patrick Palka <ppalka (a] redhat.com>
6372
6373 LWG 3389 and LWG 3390
6374 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
6375 constructing the move_iterator with __i.
6376 (counted_iterator::counted_iterator): Use std::move when initializing
6377 M_current with __i.
6378 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
6379 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
6380
6381 2020-02-12 Sandra Loosemore <sandra (a] codesourcery.com>
6382
6383 PR libstdc++/79193
6384 PR libstdc++/88999
6385
6386 * configure: Regenerated.
6387
6388 2020-02-12 Franois Dumont <fdumont (a] gcc.gnu.org>
6389
6390 * include/bits/hashtable.h
6391 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
6392 missing std namespace qualification to forward call.
6393
6394 2020-02-09 Jonathan Wakely <jwakely (a] redhat.com>
6395
6396 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
6397 comment.
6398 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
6399
6400 * include/std/ranges: Fix non-ASCII characters in comment.
6401
6402 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
6403 equality comparison to be valid and return bool.
6404 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
6405 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
6406 type with ambiguous conversion to fundamental types.
6407 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
6408
6409 2020-02-07 Jonathan Wakely <jwakely (a] redhat.com>
6410
6411 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
6412 Use remove_cvref_t.
6413 (readable_traits): Rename to indirectly_readable_traits.
6414 (readable): Rename to indirectly_readable.
6415 (writable): Rename to indirectly_writable.
6416 (__detail::__iter_exchange_move): Do not use remove_reference_t.
6417 (indirectly_swappable): Adjust requires expression parameter types.
6418 expression.
6419 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
6420 (ranges::replace_if, ranges::generate_n, ranges::generate)
6421 (ranges::remove): Use new name for writable.
6422 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
6423 Use new name for readable.
6424 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
6425 new name for readable_traits.
6426 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
6427 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
6428 new definition of indirectly_readable.
6429
6430 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
6431 to take parameters of common_iterator, instead of the common_iterator
6432 type itself. Fix argument for __common_iter_has_arrow constraint.
6433 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
6434
6435 2020-02-07 Jonathan Wakely <jwakely (a] redhat.com>
6436
6437 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
6438 warning.
6439 (basic_istream_view::_Iterator::operator++()): Add missing return.
6440
6441 2020-02-07 Patrick Palka <ppalka (a] redhat.com>
6442
6443 * include/bits/ranges_algo.h: Remove extraneous &&.
6444
6445 * include/std/ranges (ranges::__detail::__stream_extractable,
6446 ranges::basic_istream_view, ranges::istream_view): Define.
6447 * testsuite/std/ranges/istream_view: New test.
6448
6449 Implement C++20 range adaptors
6450 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
6451 (subrange::_S_store_size): Mark as const instead of constexpr to
6452 avoid what seems to be a bug in GCC.
6453 (__detail::__box): Give it defaulted copy and move constructors.
6454 (ranges::views::_Single::operator()): Mark constexpr.
6455 (ranges::views::_Iota::operator()): Mark constexpr.
6456 (__detail::Empty): Define.
6457 (ranges::views::__closure::_RangeAdaptor,
6458 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
6459 ranges::views::all, ranges::__detail::find_if,
6460 ranges::__detail::find_if_not, ranges::__detail::mismatch,
6461 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
6462 ranges::views::transform, take_view, ranges::views::take,
6463 take_while_view, ranges::views::take_while, drop_view,
6464 ranges::views::drop, join_view, ranges::views::join,
6465 __detail::require_constant, __detail::tiny_range, split_view,
6466 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
6467 common_view, ranges::views::common, reverse_view,
6468 ranges::views::reverse,
6469 ranges::views::__detail::__is_reversible_subrange,
6470 ranges::views::__detail::__is_reverse_view, reverse_view,
6471 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
6472 ranges::views::elements, ranges::views::keys, ranges::views::values):
6473 Define.
6474 (views): Alias for ranges::views.
6475 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
6476 tuple_element<1, ranges::subrange>): New partial specializations.
6477 * testsuite/std/ranges/adaptors/all.cc: New test.
6478 * testsuite/std/ranges/adaptors/common.cc: Likewise.
6479 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
6480 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
6481 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
6482 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
6483 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
6484 * testsuite/std/ranges/adaptors/join.cc: Likewise.
6485 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
6486 * testsuite/std/ranges/adaptors/split.cc: Likewise.
6487 * testsuite/std/ranges/adaptors/take.cc: Likewise.
6488 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
6489 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
6490
6491 2020-02-07 Jonathan Wakely <jwakely (a] redhat.com>
6492
6493 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
6494 type of enumerations and comparison category types.
6495 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
6496 (__cmp_cat::_Ncmp::unordered): Change value to 2.
6497 (partial_ordering::_M_value, weak_ordering::_M_value)
6498 (strong_ordering::_M_value): Change type to __cmp_cat::type.
6499 (partial_ordering::_M_is_ordered): Remove data member.
6500 (partial_ordering): Use second bit of _M_value for unordered. Adjust
6501 comparison operators.
6502 (weak_ordering::operator partial_ordering): Simplify to remove
6503 branches.
6504 (operator<=>(unspecified, weak_ordering)): Likewise.
6505 (strong_ordering::operator partial_ordering): Likewise.
6506 (strong_ordering::operator weak_ordering): Likewise.
6507 (operator<=>(unspecified, strong_ordering)): Likewise.
6508 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
6509 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
6510 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
6511
6512 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
6513 __cpp_lib_three_way_comparison macro and use deduced return type for
6514 operator<=>.
6515 * testsuite/std/ranges/iota/iterator.cc: New test.
6516
6517 2020-02-07 Patrick Palka <ppalka (a] redhat.com>
6518 Jonathan Wakely <jwakely (a] redhat.com>
6519
6520 Implement C++20 constrained algorithms
6521 * include/Makefile.am: Add new header.
6522 * include/Makefile.in: Regenerate.
6523 * include/std/algorithm: Include <bits/ranges_algo.h>.
6524 * include/bits/ranges_algo.h: New file.
6525 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
6526 * testsuite/25_algorithms/all_of/constrained.cc: New test.
6527 * testsuite/25_algorithms/any_of/constrained.cc: New test.
6528 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
6529 * testsuite/25_algorithms/copy/constrained.cc: New test.
6530 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
6531 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
6532 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
6533 * testsuite/25_algorithms/count/constrained.cc: New test.
6534 * testsuite/25_algorithms/count_if/constrained.cc: New test.
6535 * testsuite/25_algorithms/equal/constrained.cc: New test.
6536 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
6537 * testsuite/25_algorithms/fill/constrained.cc: New test.
6538 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
6539 * testsuite/25_algorithms/find/constrained.cc: New test.
6540 * testsuite/25_algorithms/find_end/constrained.cc: New test.
6541 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
6542 * testsuite/25_algorithms/find_if/constrained.cc: New test.
6543 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
6544 * testsuite/25_algorithms/for_each/constrained.cc: New test.
6545 * testsuite/25_algorithms/generate/constrained.cc: New test.
6546 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
6547 * testsuite/25_algorithms/heap/constrained.cc: New test.
6548 * testsuite/25_algorithms/includes/constrained.cc: New test.
6549 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
6550 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
6551 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
6552 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
6553 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
6554 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
6555 test.
6556 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
6557 * testsuite/25_algorithms/max/constrained.cc: New test.
6558 * testsuite/25_algorithms/max_element/constrained.cc: New test.
6559 * testsuite/25_algorithms/merge/constrained.cc: New test.
6560 * testsuite/25_algorithms/min/constrained.cc: New test.
6561 * testsuite/25_algorithms/min_element/constrained.cc: New test.
6562 * testsuite/25_algorithms/minmax/constrained.cc: New test.
6563 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
6564 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
6565 * testsuite/25_algorithms/move/constrained.cc: New test.
6566 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
6567 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
6568 * testsuite/25_algorithms/none_of/constrained.cc: New test.
6569 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
6570 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
6571 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
6572 * testsuite/25_algorithms/partition/constrained.cc: New test.
6573 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
6574 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
6575 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
6576 * testsuite/25_algorithms/remove/constrained.cc: New test.
6577 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
6578 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
6579 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
6580 * testsuite/25_algorithms/replace/constrained.cc: New test.
6581 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
6582 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
6583 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
6584 * testsuite/25_algorithms/reverse/constrained.cc: New test.
6585 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
6586 * testsuite/25_algorithms/rotate/constrained.cc: New test.
6587 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
6588 * testsuite/25_algorithms/search/constrained.cc: New test.
6589 * testsuite/25_algorithms/search_n/constrained.cc: New test.
6590 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
6591 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
6592 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
6593 test.
6594 * testsuite/25_algorithms/set_union/constrained.cc: New test.
6595 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
6596 * testsuite/25_algorithms/sort/constrained.cc: New test.
6597 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
6598 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
6599 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
6600 * testsuite/25_algorithms/transform/constrained.cc: New test.
6601 * testsuite/25_algorithms/unique/constrained.cc: New test.
6602 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
6603 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
6604
6605 2020-02-06 Jonathan Wakely <jwakely (a] redhat.com>
6606
6607 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
6608 number in comment. Fix indentation.
6609
6610 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
6611 redundant _GLIBCXX20_CONSTEXPR.
6612
6613 * include/std/ranges (viewable_range): Replace decay_t with
6614 remove_cvref_t (LWG 3375).
6615
6616 2020-02-05 Jonathan Wakely <jwakely (a] redhat.com>
6617
6618 * include/bits/iterator_concepts.h (iter_reference_t)
6619 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
6620 Remove workarounds for PR c++/67704.
6621 * testsuite/24_iterators/aliases.cc: New test.
6622
6623 2020-02-05 Patrick Palka <ppalka (a] redhat.com>
6624
6625 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
6626 when initializing _M_current.
6627 (move_iterator::base): Split into two overloads differing in
6628 ref-qualifiers as in P1207R4 for C++20.
6629
6630 2020-02-04 Jonathan Wakely <jwakely (a] redhat.com>
6631
6632 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
6633 use.
6634
6635 PR libstdc++/93562
6636 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
6637 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
6638 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
6639
6640 2020-02-01 Andrew Burgess <andrew.burgess (a] embecosm.com>
6641
6642 * configure: Regenerate.
6643
6644 2020-01-31 Patrick Palka <ppalka (a] redhat.com>
6645
6646 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
6647 test_range::end() returns the same type as test_range::begin().
6648 * testsuite/24_iterators/range_operations/next.cc: Likewise.
6649 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
6650 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
6651 Always return a sentinel<I>.
6652
6653 2020-01-29 Jonathan Wakely <jwakely (a] redhat.com>
6654
6655 PR libstdc++/92895
6656 * include/std/stop_token (stop_token::stop_possible()): Call new
6657 _M_stop_possible() function.
6658 (stop_token::stop_requested()): Do not use stop_possible().
6659 (stop_token::binary_semaphore): New class, as temporary stand-in for
6660 std::binary_semaphore.
6661 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
6662 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
6663 New data members for symchronization with stop_callback destruction.
6664 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
6665 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
6666 Remove.
6667 (stop_token::_Stop_cb::_M_run): New member function.
6668 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
6669 Remove.
6670 (stop_token::_Stop_state::_M_owners): New data member to track
6671 reference count for ownership.
6672 (stop_token::_Stop_state::_M_value): New data member combining a
6673 spinlock, the stop requested flag, and the reference count for
6674 associated stop_source objects.
6675 (stop_token::_Stop_state::_M_requester): New data member for
6676 synchronization with stop_callback destruction.
6677 (stop_token::_Stop_state::_M_stop_possible()): New member function.
6678 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
6679 of _M_value.
6680 (stop_token::_Stop_state::_M_add_owner)
6681 (stop_token::_Stop_state::_M_release_ownership)
6682 (stop_token::_Stop_state::_M_add_ssrc)
6683 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
6684 updating reference counts.
6685 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
6686 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
6687 (stop_token::_Stop_state::_M_try_lock)
6688 (stop_token::_Stop_state::_M_try_lock_and_stop)
6689 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
6690 managing spinlock.
6691 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
6692 read and update state. Release lock while running callbacks. Use new
6693 data members to synchronize with callback destruction.
6694 (stop_token::_Stop_state::_M_remove_callback): Likewise.
6695 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
6696 to read and update state.
6697 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
6698 replacing shared_ptr.
6699 (stop_source::stop_source(const stop_source&)): Update reference count.
6700 (stop_source::operator=(const stop_source&)): Likewise.
6701 (stop_source::~stop_source()): Likewise.
6702 (stop_source::stop_source(stop_source&&)): Define as defaulted.
6703 (stop_source::operator=(stop_source&&)): Establish postcondition on
6704 parameter.
6705 (stop_callback): Enforce preconditions on template parameter. Replace
6706 base class with data member of new _Cb_impl type.
6707 (stop_callback::stop_callback(const stop_token&, Cb&&))
6708 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
6709 (stop_callback::_Cb_impl): New type wrapping _Callback member and
6710 defining the _S_execute member function.
6711 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
6712 test.
6713 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
6714 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
6715 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
6716 New test.
6717 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
6718 test.
6719 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
6720 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
6721 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
6722 test.
6723
6724 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
6725 three_way_comparable_with.
6726 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
6727 (compare_three_way::operator()): Remove redundant constraint from
6728 requires-clause.
6729 (__detail::_Synth3way::operator()): Use three_way_comparable_with
6730 instead of workaround.
6731 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
6732 output due to simplified constraints on compare_three_way::operator().
6733
6734 PR libstdc++/93479
6735 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
6736 * testsuite/18_support/comparisons/object/93479.cc: New test.
6737
6738 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
6739 returns the same type as test_range::begin(). Add comments.
6740 * testsuite/std/ranges/access/rbegin.cc: Likewise.
6741 * testsuite/std/ranges/access/rend.cc: Likewise.
6742 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
6743 test_range is the same as its iterator type.
6744 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
6745 operator- overloads to satisfy sized_sentinel_for when the iterator
6746 satisfies random_access_iterator.
6747
6748 2020-01-28 Jonathan Wakely <jwakely (a] redhat.com>
6749
6750 PR libstdc++/93470
6751 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
6752 static assertion to object types.
6753
6754 PR libstdc++/93325
6755 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
6756 clock_gettime instead of explicit glibc version check.
6757 * configure: Regenerate.
6758
6759 2020-01-28 Martin Liska <mliska (a] suse.cz>
6760
6761 PR libstdc++/93478
6762 * include/std/atomic: Fix typo.
6763 * include/std/optional: Likewise.
6764
6765 2020-01-27 Andrew Burgess <andrew.burgess (a] embecosm.com>
6766
6767 * configure: Regenerate.
6768
6769 2020-01-27 Jonathan Wakely <jwakely (a] redhat.com>
6770
6771 PR libstdc++/93426
6772 * include/std/span (span): Fix deduction guide.
6773 * testsuite/23_containers/span/deduction.cc: New test.
6774
6775 2020-01-24 Jonathan Wakely <jwakely (a] redhat.com>
6776
6777 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
6778 (__cmp_cat::_Ord::equivalent): Add enumerator.
6779 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
6780 and greater.
6781 (partial_ordering, weak_ordering, strong_ordering): Remove
6782 constructors taking __cmp_cat::_Eq parameters. Use renamed
6783 enumerators.
6784
6785 2020-01-24 Maciej W. Rozycki <macro (a] wdc.com>
6786
6787 * acinclude.m4: Handle `--with-toolexeclibdir='.
6788 * Makefile.in: Regenerate.
6789 * aclocal.m4: Regenerate.
6790 * configure: Regenerate.
6791 * doc/Makefile.in: Regenerate.
6792 * include/Makefile.in: Regenerate.
6793 * libsupc++/Makefile.in: Regenerate.
6794 * po/Makefile.in: Regenerate.
6795 * python/Makefile.in: Regenerate.
6796 * src/Makefile.in: Regenerate.
6797 * src/c++11/Makefile.in: Regenerate.
6798 * src/c++17/Makefile.in: Regenerate.
6799 * src/c++98/Makefile.in: Regenerate.
6800 * src/filesystem/Makefile.in: Regenerate.
6801 * testsuite/Makefile.in: Regenerate.
6802
6803 2020-01-23 Alexandre Oliva <oliva (a] adacore.com>
6804
6805 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
6806 * configure: Rebuild.
6807
6808 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
6809
6810 2020-01-23 Jonathan Wakely <jwakely (a] redhat.com>
6811
6812 PR libstdc++/91947
6813 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
6814 rule.
6815 * include/Makefile.in: Regenerate.
6816
6817 2020-01-20 Jonathan Wakely <jwakely (a] redhat.com>
6818
6819 * doc/xml/faq.xml: Fix grammar.
6820 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
6821 * doc/xml/manual/spine.xml: Update copyright years.
6822 * doc/html/*: Regenerate.
6823
6824 2020-01-19 Eric S. Raymond <esr (a] thyrsus.com>
6825
6826 * doc/xml/faq.xml: Update for SVN -> Git transition.
6827 * doc/xml/manual/appendix_contributing.xml: Likewise.
6828 * doc/xml/manual/status_cxx1998.xml: Likewise.
6829 * doc/xml/manual/status_cxx2011.xml: Likewise.
6830 * doc/xml/manual/status_cxx2014.xml: Likewise.
6831 * doc/xml/manual/status_cxx2017.xml: Likewise.
6832 * doc/xml/manual/status_cxx2020.xml: Likewise.
6833 * doc/xml/manual/status_cxxtr1.xml: Likewise.
6834 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
6835
6836 2020-01-18 Iain Sandoe <iain (a] sandoe.co.uk>
6837
6838 * include/Makefile.am: Add coroutine to the std set.
6839 * include/Makefile.in: Regenerated.
6840 * include/std/coroutine: New file.
6841
6842 2020-01-17 Jonathan Wakely <jwakely (a] redhat.com>
6843
6844 PR libstdc++/92376
6845 * include/bits/c++config: Only do PSTL config when the header is
6846 present, to fix freestanding.
6847 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
6848 functions if they were detected by configure.
6849
6850 2020-01-16 Kai-Uwe Eckhardt <kuehro (a] gmx.de>
6851 Matthew Bauer <mjbauer95 (a] gmail.com>
6852 Jonathan Wakely <jwakely (a] redhat.com>
6853
6854 PR bootstrap/64271 (partial)
6855 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
6856 to unsigned short.
6857 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
6858 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
6859 definitions with NetBSD upstream.
6860 (ctype_base::blank): Use _CTYPE_BL.
6861 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
6862 Declaration.
6863 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
6864 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
6865 parameters to unsigned char.
6866 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
6867
6868 2020-01-16 Franois Dumont <fdumont (a] gcc.gnu.org>
6869
6870 PR libstdc++/91263
6871 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
6872 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
6873 (_Equality_base): Remove.
6874 (_Equality<>::_M_equal): Review implementation. Use
6875 std::is_permutation.
6876 * testsuite/23_containers/unordered_multiset/operators/1.cc
6877 (Hash, Equal, test02, test03): New.
6878 * testsuite/23_containers/unordered_set/operators/1.cc
6879 (Hash, Equal, test02, test03): New.
6880
6881 2020-01-15 Jonathan Wakely <jwakely (a] redhat.com>
6882
6883 PR libstdc++/93267
6884 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
6885 Move here from <bits/range_access.h> and define using __int128 when
6886 available.
6887 (__is_integer_like, __is_signed_integer_like): Move here from
6888 <bits/range_access.h>.
6889 (weakly_incrementable): Use __is_signed_integer_like.
6890 * include/bits/range_access.h (__max_diff_type, __max_size_type)
6891 (__is_integer_like, __is_signed_integer_like): Move to
6892 <bits/iterator_concepts.h>.
6893 (__make_unsigned_like_t): Move here from <ranges>.
6894 * include/std/ranges (__make_unsigned_like_t): Move to
6895 <bits/range_access.h>.
6896 (iota_view): Replace using-directive with using-declarations.
6897 * testsuite/std/ranges/iota/93267.cc: New test.
6898 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
6899
6900 2020-01-13 Jonathan Wakely <jwakely (a] redhat.com>
6901
6902 PR libstdc++/93244
6903 * include/bits/fs_path.h (path::generic_string<C,A>)
6904 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
6905 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
6906 root-dir is converted to forward slash in generic pathname.
6907 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
6908 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
6909
6910 PR libstdc++/58605
6911 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
6912 Define.
6913 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
6914 (__atomic_float): Add default member initializer for C++20.
6915 * include/std/atomic (atomic): Likewise.
6916 (atomic::atomic()): Remove noexcept-specifier on default constructor.
6917 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
6918 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
6919 number.
6920 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
6921 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
6922 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
6923 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
6924 expected result for is_trivially_default_constructible.
6925 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
6926 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
6927 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
6928 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
6929 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
6930 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
6931 expected results for is_trivially_default_constructible.
6932 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
6933 new test generator.
6934
6935 2020-01-10 Jonathan Wakely <jwakely (a] redhat.com>
6936
6937 * testsuite/util/testsuite_iterators.h: Improve comment.
6938
6939 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
6940 initialization syntax.
6941
6942 PR libstdc++/92285
6943 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
6944 of base class independent of __cplusplus value.
6945 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
6946 type defined in the base class
6947 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
6948 * testsuite/24_iterators/istreambuf_iterator/requirements/
6949 base_classes.cc: Adjust expected base class for C++98.
6950
6951 2020-01-09 Olivier Hainque <hainque (a] adacore.com>
6952
6953 * doc/xml/manual/appendix_contributing.xml: Document _C2
6954 as a reserved identifier, by VxWorks.
6955 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
6956 * include/bits/stl_multimap.h: Likewise.
6957
6958 2020-01-09 Jonathan Wakely <jwakely (a] redhat.com>
6959
6960 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
6961 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
6962 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
6963 partial specialization to disambiguate the two constrained
6964 specializations.
6965
6966 * include/experimental/type_traits (experimental::is_pod_v): Disable
6967 -Wdeprecated-declarations warnings around reference to std::is_pod.
6968 * include/std/type_traits (is_pod_v): Likewise.
6969 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
6970 is_standard_layout and is_trivial. Do not check is_pod for C++20.
6971 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
6972 Add -Wno-deprecated for C++20.
6973 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
6974 * testsuite/20_util/is_pod/value.cc: Likewise.
6975 * testsuite/experimental/type_traits/value.cc: Likewise.
6976
6977 2020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse (a] gmail.com>
6978
6979 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
6980 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
6981 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
6982
6983 2020-01-09 Jonathan Wakely <jwakely (a] redhat.com>
6984
6985 PR libstdc++/93205
6986 * include/bits/random.h (operator>>): Check stream operation succeeds.
6987 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
6988 typedefs.
6989 (operator>>): Remove redundant __istream_type typedefs. Check stream
6990 operations succeed.
6991 (__extract_params): New function to fill a vector from a stream.
6992 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
6993
6994 PR libstdc++/93208
6995 * config/abi/pre/gnu.ver: Add new exports.
6996 * include/std/memory_resource (memory_resource::~memory_resource()):
6997 Do not define inline.
6998 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
6999 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
7000 Define.
7001 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
7002 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
7003
7004 2020-01-09 Franois Dumont <fdumont (a] gcc.gnu.org>
7005
7006 PR libstdc++/92124
7007 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
7008 template alias.
7009 (_Hashtable<>::__fwd_value_for): New.
7010 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
7011 parameter.
7012 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
7013 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
7014 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
7015 with std::move.
7016 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
7017 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
7018 Adapt.
7019 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
7020 Adapt.
7021 * testsuite/23_containers/unordered_set/92124.cc: New.
7022
7023 2020-01-08 Jonathan Wakely <jwakely (a] redhat.com>
7024
7025 PR libstdc++/93201
7026 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
7027 detailed error reporting for remove_all. Check result of recursive
7028 call before incrementing iterator.
7029 (remove_all(const path&), remove_all(const path&, error_code&)): Use
7030 do_remove_all.
7031 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
7032 result of recursive call before incrementing iterator.
7033 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
7034 are reported correctly.
7035 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
7036
7037 2020-01-07 Thomas Rodgers <trodgers (a] redhat.com>
7038
7039 * include/std/condition_variable
7040 (condition_variable_any::wait_on): Rename to match current draft
7041 standard.
7042 (condition_variable_any::wait_on_until): Likewise.
7043 (condition_variable_any::wait_on_for): Likewise.
7044 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
7045 Adjust tests to account for renamed methods.
7046
7047 2020-01-07 Franois Dumont <fdumont (a] gcc.gnu.org>
7048
7049 PR libstdc++/92124
7050 * include/bits/stl_tree.h
7051 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
7052 std::move_if_noexcept by std::move.
7053 * testsuite/23_containers/map/92124.cc: New.
7054 * testsuite/23_containers/set/92124.cc: New.
7055
7056 2020-01-06 Jonathan Wakely <jwakely (a] redhat.com>
7057
7058 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
7059 (stop_source): Likewise (LWG 3362).
7060 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
7061 comparisons.
7062
7063 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
7064 (lexicographical_compare_three_way): Do not depend on
7065 __cpp_lib_concepts.
7066 * include/std/version (__cpp_lib_three_way_comparison): Only define
7067 when __cpp_lib_concepts is defined.
7068 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
7069
7070 2020-01-03 Jonathan Wakely <jwakely (a] redhat.com>
7071
7072 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
7073 Only define four-argument overload when __cpp_lib_concepts is defined.
7074
7075 2020-01-01 John David Anglin <danglin (a] gcc.gnu.org>
7076
7077 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
7078
7079 2020-01-01 Jakub Jelinek <jakub (a] redhat.com>
7080
7081 Update copyright years.
7082
7084 Copyright (C) 2020 Free Software Foundation, Inc.
7085
7086 Copying and distribution of this file, with or without modification,
7087 are permitted in any medium without royalty provided the copyright
7088 notice and this notice are preserved.
7089