libbacktrace: use __attribute__((__fallthrough__))
[gcc.git] / libstdc++-v3 / ChangeLog
1 2020-10-19 Jonathan Wakely <jwakely@redhat.com>
2
3 * include/bits/unique_ptr.h (make_unique_for_overwrite): Define
4 for C++20.
5 * testsuite/20_util/unique_ptr/creation/array_neg.cc: Remove
6 unused header. Adjust standard reference.
7 * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: New test.
8 * testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc: New test.
9
10 2020-10-19 Jonathan Wakely <jwakely@redhat.com>
11
12 * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved
13 form of __no_unique_address__ attribute because
14 no_unique_address is not reserved prior to C++20.
15
16 2020-10-19 Jonathan Wakely <jwakely@redhat.com>
17
18 * include/bits/node_handle.h (_Node_handle_common): Replace
19 std::optional with custom type.
20 * testsuite/20_util/variant/exception_safety.cc: Add missing
21 header include.
22
23 2020-10-19 Jonathan Wakely <jwakely@redhat.com>
24
25 * include/precompiled/expc++.h: Removed.
26
27 2020-10-17 Ville Voutilainen <ville.voutilainen@gmail.com>
28
29 PR libstdc++/97449
30 * include/std/variant
31 (__gen_vtable_impl<>::_S_apply_single_alt):
32 Diagnose visitor return type mismatches here..
33 (__gen_vtable_impl</*base case*/>::_S_apply):
34 ..not here.
35
36 2020-10-15 Jonathan Wakely <jwakely@redhat.com>
37
38 * include/std/concepts: Fix typos in copyright notice.
39 * include/std/ranges: Likewise.
40
41 2020-10-14 Jonathan Wakely <jwakely@redhat.com>
42
43 PR libstdc++/97415
44 * include/std/sstream (basic_stringbuf::str()): Check for
45 null egptr() before comparing to non-null pptr().
46
47 2020-10-14 Jonathan Wakely <jwakely@redhat.com>
48
49 * testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc:
50 Do not generate debug info.
51 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc:
52 Likewise.
53
54 2020-10-14 Jonathan Wakely <jwakely@redhat.com>
55
56 * include/bits/basic_string.h (basic_string(const Alloc&))
57 (basic_string(const basic_string&)
58 (basic_string(const CharT*, size_type, const Alloc&))
59 (basic_string(const CharT*, const Alloc&))
60 (basic_string(size_type, CharT, const Alloc&))
61 (basic_string(initializer_list<CharT>, const Alloc&))
62 (basic_string(InputIterator, InputIterator, const Alloc&)):
63 Define inline in class body.
64 * include/bits/basic_string.tcc (basic_string(const Alloc&))
65 (basic_string(const basic_string&)
66 (basic_string(const CharT*, size_type, const Alloc&))
67 (basic_string(const CharT*, const Alloc&))
68 (basic_string(size_type, CharT, const Alloc&))
69 (basic_string(initializer_list<CharT>, const Alloc&))
70 (basic_string(InputIterator, InputIterator, const Alloc&)):
71 Move definitions into class body.
72
73 2020-10-14 Jonathan Wakely <jwakely@redhat.com>
74
75 * testsuite/lib/libstdc++.exp (check_effective_target_cxx11-abi):
76 Add comments about which test flags get used by the check.
77
78 2020-10-14 Jonathan Wakely <jwakely@redhat.com>
79
80 * testsuite/21_strings/basic_string/allocator/char/copy.cc: Make
81 comment more precise about what isn't supported by COW strings.
82 * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
83 Likewise.
84 * testsuite/21_strings/basic_string/allocator/char/move.cc:
85 Likewise.
86 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
87 Likewise.
88 * testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
89 Likewise.
90 * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
91 Likewise.
92 * testsuite/21_strings/basic_string/allocator/char/swap.cc:
93 Likewise.
94 * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
95 Likewise.
96 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
97 Likewise.
98 * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
99 Likewise.
100 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
101 Likewise.
102 * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
103 Likewise.
104 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
105 Likewise.
106 * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
107 Likewise.
108
109 2020-10-14 Jonathan Wakely <jwakely@redhat.com>
110
111 * testsuite/21_strings/basic_string/allocator/char/minimal.cc:
112 Do not require cxx11-abi effective target.
113 * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
114 Likewise.
115 * testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
116
117 2020-10-14 Jonathan Wakely <jwakely@redhat.com>
118
119 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
120 (basic_string(const _CharT*, const _Alloc&)): Constrain to
121 require an allocator-like type to fix CTAD ambiguity (LWG 3706).
122 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
123 Remove dg-skip-if.
124 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
125 Likewise.
126
127 2020-10-13 Nuno Lopes <nuno.lopes@ist.utl.pt>
128
129 * include/bits/stl_algo.h (any_of): Fix incorrect description
130 in comment.
131
132 2020-10-13 Jonathan Wakely <jwakely@redhat.com>
133
134 * doc/xml/manual/evolution.xml: Document some API changes
135 and deprecations.
136 * doc/xml/manual/intro.xml: Document LWG 2499.
137 * doc/xml/manual/status_cxx2020.xml: Update status.
138 * doc/html/*: Regenerate.
139
140 2020-10-13 Jonathan Wakely <jwakely@redhat.com>
141
142 * doc/xml/book.txml: Remove trailing whitespace.
143 * doc/xml/chapter.txml: Likewise.
144 * doc/xml/class.txml: Likewise.
145 * doc/xml/gnu/fdl-1.3.xml: Likewise.
146 * doc/xml/gnu/gpl-3.0.xml: Likewise.
147 * doc/xml/manual/abi.xml: Likewise.
148 * doc/xml/manual/algorithms.xml: Likewise.
149 * doc/xml/manual/allocator.xml: Likewise.
150 * doc/xml/manual/appendix_contributing.xml: Likewise.
151 * doc/xml/manual/appendix_free.xml: Likewise.
152 * doc/xml/manual/appendix_porting.xml: Likewise.
153 * doc/xml/manual/atomics.xml: Likewise.
154 * doc/xml/manual/auto_ptr.xml: Likewise.
155 * doc/xml/manual/backwards_compatibility.xml: Likewise.
156 * doc/xml/manual/bitmap_allocator.xml: Likewise.
157 * doc/xml/manual/build_hacking.xml: Likewise.
158 * doc/xml/manual/codecvt.xml: Likewise.
159 * doc/xml/manual/concurrency.xml: Likewise.
160 * doc/xml/manual/concurrency_extensions.xml: Likewise.
161 * doc/xml/manual/configure.xml: Likewise.
162 * doc/xml/manual/containers.xml: Likewise.
163 * doc/xml/manual/ctype.xml: Likewise.
164 * doc/xml/manual/debug.xml: Likewise.
165 * doc/xml/manual/debug_mode.xml: Likewise.
166 * doc/xml/manual/diagnostics.xml: Likewise.
167 * doc/xml/manual/documentation_hacking.xml: Likewise.
168 * doc/xml/manual/evolution.xml: Likewise.
169 * doc/xml/manual/internals.xml: Likewise.
170 * doc/xml/manual/intro.xml: Likewise.
171 * doc/xml/manual/io.xml: Likewise.
172 * doc/xml/manual/iterators.xml: Likewise.
173 * doc/xml/manual/locale.xml: Likewise.
174 * doc/xml/manual/localization.xml: Likewise.
175 * doc/xml/manual/messages.xml: Likewise.
176 * doc/xml/manual/mt_allocator.xml: Likewise.
177 * doc/xml/manual/numerics.xml: Likewise.
178 * doc/xml/manual/parallel_mode.xml: Likewise.
179 * doc/xml/manual/policy_data_structures.xml: Likewise.
180 * doc/xml/manual/prerequisites.xml: Likewise.
181 * doc/xml/manual/shared_ptr.xml: Likewise.
182 * doc/xml/manual/spine.xml: Likewise.
183 * doc/xml/manual/status_cxxtr1.xml: Likewise.
184 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
185 * doc/xml/manual/strings.xml: Likewise.
186 * doc/xml/manual/support.xml: Likewise.
187 * doc/xml/manual/test.xml: Likewise.
188 * doc/xml/manual/test_policy_data_structures.xml: Likewise.
189 * doc/xml/manual/using.xml: Likewise.
190 * doc/xml/manual/using_exceptions.xml: Likewise.
191 * doc/xml/manual/utilities.xml: Likewise.
192 * doc/html/*: Regenerate.
193
194 2020-10-12 Patrick Palka <ppalka@redhat.com>
195
196 * include/std/ranges (take_while_view::begin): Constrain the
197 const overload further as per LWG 3450.
198 (take_while_view::end): Likewise.
199 * testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG
200 3450.
201
202 2020-10-12 Patrick Palka <ppalka@redhat.com>
203
204 PR libstdc++/95322
205 * include/std/ranges (take_view::_CI): Define this alias
206 template as per LWG 3449 and remove ...
207 (take_view::_Sentinel::_CI): ... this type alias.
208 (take_view::_Sentinel::operator==): Adjust use of _CI
209 accordingly. Define a second overload that accepts an iterator
210 of the opposite constness as per LWG 3449.
211 (take_while_view::_Sentinel::operator==): Likewise.
212 * testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449.
213
214 2020-10-12 Jonathan Wakely <jwakely@redhat.com>
215
216 * doc/doxygen/user.cfg.in: Update to Doxygen 1.8.20 format.
217
218 2020-10-12 Jonathan Wakely <jwakely@redhat.com>
219
220 * doc/doxygen/user.cfg.in (PREDEFINED): Use __cplusplus=201703L
221 so that C++17 features are documented.
222
223 2020-10-12 Jonathan Wakely <jwakely@redhat.com>
224
225 * include/bits/stl_algobase.h (copy, move, copy_backward)
226 (move_backward): Fix documentation for returned iterator.
227
228 2020-10-12 Martin Sebor <msebor@redhat.com>
229
230 PR c++/97201
231 * libsupc++/new (operator new): Add attribute alloc_size and malloc.
232
233 2020-10-11 Clement Chigot <clement.chigot@atos.net>
234
235 * config/os/aix/t-aix: Add complementary mode object file to
236 libstdc++fs.a
237
238 2020-10-10 Jonathan Wakely <jwakely@redhat.com>
239
240 PR libstdc++/97362
241 * doc/html/manual/source_code_style.html: Regenerate.
242 * doc/xml/manual/appendix_contributing.xml: Add __deref to
243 BADNAMES.
244 * include/debug/functions.h (_Irreflexive_checker::__deref):
245 Rename to __ref.
246 * testsuite/17_intro/badnames.cc: Check __deref.
247
248 2020-10-10 Ville Voutilainen <ville.voutilainen@gmail.com>
249
250 * include/std/variant (__check_visitor_result):
251 Use size_t for indexes.
252 (__check_visitor_results): Likewise.
253
254 2020-10-09 Ville Voutilainen <ville.voutilainen@gmail.com>
255
256 PR libstdc++/95904
257 * include/std/variant (__deduce_visit_result): Add a nested ::type.
258 (__gen_vtable_impl</*base case*/>::_S_apply):
259 Check the visitor return type.
260 (__same_types): New.
261 (__check_visitor_result): Likewise.
262 (__check_visitor_results): Likewise.
263 (visit(_Visitor&&, _Variants&&...)): Use __check_visitor_results
264 in case we're visiting just one variant.
265 * testsuite/20_util/variant/visit_neg.cc: Adjust.
266
267 2020-10-09 Jonathan Wakely <jwakely@redhat.com>
268
269 PR libstdc++/97311
270 * include/bits/random.tcc (seed_seq::generate): Use uint32_t for
271 calculations. Also split the first loop into three loops to
272 avoid branching on k on every iteration, resolving PR 94823.
273 * testsuite/26_numerics/random/seed_seq/97311.cc: New test.
274 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-erro
275 line number.
276
277 2020-10-09 Daniel Lemire <lemire@gmail.com>
278
279 * include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd):
280 New member function implementing Lemire's "nearly divisionless"
281 algorithm.
282 (uniform_int_distribution::operator()): Use _S_nd when the range
283 of the URBG is the full width of the result type.
284
285 2020-10-09 Jonathan Wakely <jwakely@redhat.com>
286
287 * testsuite/Makefile.am: Set and export variable separately.
288 * testsuite/Makefile.in: Regenerate.
289
290 2020-10-09 Jonathan Wakely <jwakely@redhat.com>
291
292 * scripts/check_performance: Use gnu++11 instead of gnu++0x.
293 * testsuite/Makefile.am (check-performance): Export CXXFLAGS to
294 child process.
295 * testsuite/Makefile.in: Regenerate.
296
297 2020-10-09 Jonathan Wakely <jwakely@redhat.com>
298
299 * testsuite/performance/26_numerics/random_dist.cc: New test.
300
301 2020-10-09 Jonathan Wakely <jwakely@redhat.com>
302
303 * testsuite/util/testsuite_performance.h (report_header): Remove
304 unused variable.
305
306 2020-10-08 Patrick Palka <ppalka@redhat.com>
307
308 PR libstdc++/95788
309 * include/bits/ranges_uninitialized.h:
310 (__construct_at_fn::operator()): Rewrite in terms of
311 std::construct_at. Declare it conditionally noexcept. Qualify
312 calls to declval in its requires-clause.
313 * testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
314 New test.
315
316 2020-10-08 Jonathan Wakely <jwakely@redhat.com>
317
318 PR libstdc++/82584
319 * include/bits/random.tcc
320 (discrete_distribution::param_type::_M_initialize)
321 (piecewise_constant_distribution::param_type::_M_initialize)
322 (piecewise_linear_distribution::param_type::_M_initialize):
323 Add assertions for positive sums..
324 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
325 line.
326
327 2020-10-08 Jonathan Wakely <jwakely@redhat.com>
328
329 * include/bits/ios_base.h (ios_base::failure): Add constructors
330 takeing error_code argument. Add code() member function.
331 * testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
332 run for the old ABI but do not check for derivation from
333 std::system_error.
334 * testsuite/27_io/ios_base/failure/error_code.cc: New test.
335
336 2020-10-08 Jonathan Wakely <jwakely@redhat.com>
337
338 * include/bits/random.h (__detail::_Mod): Revert last change.
339 (__detail::__mod): Do not use _Mod for a==0 case.
340 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
341 Check other cases with a==0. Also check runtime results.
342 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
343 line.
344
345 2020-10-07 Jonathan Wakely <jwakely@redhat.com>
346
347 * include/bits/random.h (__detail::_Mod): Avoid divide by zero.
348 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
349 New test.
350
351 2020-10-07 Jonathan Wakely <jwakely@redhat.com>
352
353 * include/bits/random.h (seed_seq(initializer_list<T>)): Rename
354 parameter to use reserved name.
355 * include/bits/ranges_algo.h (shift_left, shift_right): Rename
356 template parameters to use reserved name.
357 * libsupc++/exception_ptr.h (exception_ptr): Likewise for
358 parameters and local variables.
359 * testsuite/17_intro/names.cc: Check "il". Do not check "d" and
360 "y" in C++20 mode.
361
362 2020-10-06 Jonathan Wakely <jwakely@redhat.com>
363
364 PR libstdc++/90295
365 * config/abi/pre/gnu.ver (CXXABI_1.3.13): New symbol version.
366 (exception_ptr::_M_addref(), exception_ptr::_M_release()):
367 Export symbols.
368 * libsupc++/eh_ptr.cc (exception_ptr::exception_ptr()):
369 Remove out-of-line definition.
370 (exception_ptr::exception_ptr(const exception_ptr&)):
371 Likewise.
372 (exception_ptr::~exception_ptr()): Likewise.
373 (exception_ptr::operator=(const exception_ptr&)):
374 Likewise.
375 (exception_ptr::swap(exception_ptr&)): Likewise.
376 (exception_ptr::_M_addref()): Add branch prediction.
377 * libsupc++/exception_ptr.h (exception_ptr::operator bool):
378 Add noexcept.
379 [!_GLIBCXX_EH_PTR_COMPAT] (operator==, operator!=): Define
380 inline as hidden friends. Remove declarations at namespace
381 scope.
382 (exception_ptr::exception_ptr()): Define inline.
383 (exception_ptr::exception_ptr(const exception_ptr&)):
384 Likewise.
385 (exception_ptr::~exception_ptr()): Likewise.
386 (exception_ptr::operator=(const exception_ptr&)):
387 Likewise.
388 (exception_ptr::swap(exception_ptr&)): Likewise.
389 * testsuite/util/testsuite_abi.cc: Add CXXABI_1.3.13.
390 * testsuite/18_support/exception_ptr/90295.cc: New test.
391
392 2020-10-06 Jonathan Wakely <jwakely@redhat.com>
393
394 * include/std/ranges (join_view): Remove deduction guide.
395 (views::join): Add explicit template argument list to prevent
396 deducing the wrong type.
397 * testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474
398 here, from ...
399 * testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed.
400
401 2020-10-05 Jonathan Wakely <jwakely@redhat.com>
402
403 * include/bits/regex.h: Use __int_traits<int> instead of
404 std::numeric_limits<int>.
405 * include/bits/uniform_int_dist.h: Use __int_traits<T>::__max
406 instead of std::numeric_limits<T>::max().
407 * include/bits/hashtable_policy.h: Use size_t(-1) instead of
408 std::numeric_limits<size_t>::max().
409 * include/std/regex: Include <ext/numeric_traits.h>.
410 * include/std/string_view: Use typedef for __int_traits<int>.
411 * src/c++11/hashtable_c++0x.cc: Use size_t(-1) instead of
412 std::numeric_limits<size_t>::max().
413 * testsuite/std/ranges/iota/96042.cc: Include <limits>.
414 * testsuite/std/ranges/iota/difference_type.cc: Likewise.
415 * testsuite/std/ranges/subrange/96042.cc: Likewise.
416
417 2020-10-05 Jonathan Wakely <jwakely@redhat.com>
418
419 * include/std/numeric: Move all #include directives to the top
420 of the header.
421 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
422 numbers.
423 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
424
425 2020-10-05 Jonathan Wakely <jwakely@redhat.com>
426
427 * config/abi/pre/gnu.ver: Add new symbol.
428 * include/bits/functexcept.h (__throw_bad_array_new_length):
429 Declare new function.
430 * include/ext/malloc_allocator.h (malloc_allocator::allocate):
431 Throw bad_array_new_length for impossible sizes (LWG 3190).
432 * include/ext/new_allocator.h (new_allocator::allocate):
433 Likewise.
434 * include/std/memory_resource (polymorphic_allocator::allocate)
435 (polymorphic_allocator::allocate_object): Use new function,
436 __throw_bad_array_new_length.
437 * src/c++11/functexcept.cc (__throw_bad_array_new_length):
438 Define.
439 * testsuite/20_util/allocator/lwg3190.cc: New test.
440
441 2020-10-05 Mike Crowe <mac@mcrowe.com>
442
443 PR libstdc++/91486
444 * include/bits/atomic_futex.h:
445 (__atomic_futex_unsigned::_M_load_when_equal_until): Use target
446 clock duration type when rounding.
447 * testsuite/30_threads/async/async.cc (test_pr91486_wait_for):
448 Rename from test_pr91486.
449 (float_steady_clock): New class for test.
450 (test_pr91486_wait_until): New test.
451
452 2020-10-05 Mike Crowe <mac@mcrowe.com>
453
454 * testsuite/20_util/duration_cast/rounding_c++11.cc: Copy
455 rounding.cc and alter to support compilation for C++11 and to
456 test std::chrono::__detail::ceil.
457
458 2020-10-02 Jonathan Wakely <jwakely@redhat.com>
459
460 * testsuite/29_atomics/atomic_float/value_init.cc: Use float
461 instead of double so that __atomic_load_8 isn't needed.
462
463 2020-10-02 Jonathan Wakely <jwakely@redhat.com>
464
465 * testsuite/18_support/96817.cc: Use terminate handler that
466 calls _Exit(0).
467
468 2020-10-02 Patrick Palka <ppalka@redhat.com>
469
470 * include/bits/stl_iterator.h (reverse_iterator::iter_move):
471 Define for C++20 as per P0896.
472 (reverse_iterator::iter_swap): Likewise.
473 (move_iterator::operator*): Apply P0896 changes for C++20.
474 (move_iterator::operator[]): Likewise.
475 * testsuite/24_iterators/reverse_iterator/cust.cc: New test.
476
477 2020-10-01 Jonathan Wakely <jwakely@redhat.com>
478
479 * config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE):
480 Do not try to dereference return value of __atomic_load_n.
481
482 2020-09-30 Jonathan Wakely <jwakely@redhat.com>
483
484 * config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE):
485 (_GLIBCXX_GUARD_SET_AND_RELEASE): Define for EABI.
486
487 2020-09-30 Jonathan Wakely <jwakely@redhat.com>
488
489 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME):
490 Define for GCC 11 or when !__is_identifier(__is_same).
491 (_GLIBCXX_BUILTIN_IS_SAME_AS): Remove.
492 * include/std/type_traits (is_same, is_same_v): Replace uses
493 of _GLIBCXX_BUILTIN_IS_SAME_AS.
494
495 2020-09-28 Patrick Palka <ppalka@redhat.com>
496
497 * include/std/ranges (filter_view): Declare the data member
498 _M_base last instead of first, and adjust constructors' member
499 initializer lists accordingly.
500 (transform_view): Likewise.
501 (take_view): Likewise.
502 (take_while_view): Likewise.
503 (drop_view): Likewise.
504 (drop_while_view): Likewise.
505 (join_view): Likewise.
506 (split_view): Likewise (and tweak nearby formatting).
507 (reverse_view): Likewise.
508 * testsuite/std/ranges/adaptors/sizeof.cc: Update expected
509 sizes.
510
511 2020-09-28 Patrick Palka <ppalka@redhat.com>
512
513 * testsuite/std/ranges/adaptors/sizeof.cc: New test.
514
515 2020-09-28 Patrick Palka <ppalka@redhat.com>
516
517 * include/bits/ranges_util.h (subrange::_M_end): Give it
518 [[no_unique_address]].
519 * testsuite/std/ranges/subrange/sizeof.cc: New test.
520
521 2020-09-28 Patrick Palka <ppalka@redhat.com>
522
523 * include/std/ranges (iota_view::_M_bound): Give it
524 [[no_unique_address]].
525 * testsuite/std/ranges/iota/iota_view.cc: Check that an
526 unbounded iota_view has minimal size.
527
528 2020-09-27 Clement Chigot <clement.chigot@atos.net>
529
530 * config/os/aix/t-aix: Use $(AR) without -X32_64.
531
532 2020-09-26 Jonathan Wakely <jwakely@redhat.com>
533
534 PR libstdc++/96817
535 * include/ext/atomicity.h (__gnu_cxx::__is_single_threaded()):
536 New function wrapping __libc_single_threaded if available.
537 (__exchange_and_add_dispatch, __atomic_add_dispatch): Use it.
538 * libsupc++/guard.cc (__cxa_guard_acquire, __cxa_guard_abort)
539 (__cxa_guard_release): Likewise.
540 * testsuite/18_support/96817.cc: New test.
541
542 2020-09-25 Jonathan Wakely <jwakely@redhat.com>
543
544 * libsupc++/Makefile.am: Remove redundant -std=gnu++1z flags.
545 * libsupc++/Makefile.in: Regenerate.
546
547 2020-09-24 Antony Polukhin <antoshkka@gmail.com>
548
549 PR libstdc++/71579
550 * include/std/type_traits (invoke_result, is_invocable)
551 (is_invocable_r, is_nothrow_invocable, is_nothrow_invocable_r):
552 Add static_asserts to make sure that the arguments of the type
553 traits are not misused with incomplete types.
554 * testsuite/20_util/invoke_result/incomplete_args_neg.cc: New test.
555 * testsuite/20_util/is_invocable/incomplete_args_neg.cc: New test.
556 * testsuite/20_util/is_invocable/incomplete_neg.cc: New test.
557 * testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc:
558 New test.
559 * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: Check
560 for error on incomplete type usage in trait.
561
562 2020-09-24 Patrick Palka <ppalka@redhat.com>
563
564 * include/std/ranges (__detail::__boxable): Split out the
565 associated constraints of __box into here.
566 (__detail::__box): Use the __boxable concept. Define a leaner
567 partial specialization for semiregular types.
568 (single_view::_M_value): Give it [[no_unique_address]].
569 (filter_view::_M_pred): Likewise.
570 (transform_view::_M_fun): Likewise.
571 (take_while_view::_M_pred): Likewise.
572 (drop_while_view::_M_pred):: Likewise.
573 * testsuite/std/ranges/adaptors/detail/semiregular_box.cc: New
574 test.
575
576 2020-09-24 Jonathan Wakely <jwakely@redhat.com>
577
578 * doc/xml/manual/configure.xml: Correct name of option.
579 * doc/html/*: Regenerate.
580
581 2020-09-22 Jonathan Wakely <jwakely@redhat.com>
582
583 PR libstdc++/97167
584 * src/c++17/fs_path.cc (path::_Parser::root_path()): Check
585 for empty string before inspecting the first character.
586 * testsuite/27_io/filesystem/path/append/source.cc: Append
587 empty string_view to path.
588
589 2020-09-22 Glen Joseph Fernandes <glenjofe@gmail.com>
590
591 * include/bits/align.h (align): Fix overflow handling.
592 * testsuite/20_util/align/3.cc: New test.
593
594 2020-09-22 Jonathan Wakely <jwakely@redhat.com>
595
596 * include/Makefile.am: Add new headers and adjust for renamed
597 header.
598 * include/Makefile.in: Regenerate.
599 * include/bits/iterator_concepts.h: Adjust for renamed header.
600 * include/bits/range_access.h (ranges::*): Move to new
601 <bits/ranges_base.h> header.
602 * include/bits/ranges_algobase.h: Include new <bits/ranges_base.h>
603 header instead of <ranges>.
604 * include/bits/ranges_algo.h: Include new <bits/ranges_util.h>
605 header.
606 * include/bits/range_cmp.h: Moved to...
607 * include/bits/ranges_cmp.h: ...here.
608 * include/bits/ranges_base.h: New header.
609 * include/bits/ranges_util.h: New header.
610 * include/experimental/string_view: Include new
611 <bits/ranges_base.h> header.
612 * include/std/functional: Adjust for renamed header.
613 * include/std/ranges (ranges::view_base, ranges::enable_view)
614 (ranges::dangling, ranges::borrowed_iterator_t): Move to new
615 <bits/ranges_base.h> header.
616 (ranges::view_interface, ranges::subrange)
617 (ranges::borrowed_subrange_t): Move to new <bits/ranges_util.h>
618 header.
619 * include/std/span: Include new <bits/ranges_base.h> header.
620 * include/std/string_view: Likewise.
621 * testsuite/24_iterators/back_insert_iterator/pr93884.cc: Add
622 missing <ranges> header.
623 * testsuite/24_iterators/front_insert_iterator/pr93884.cc:
624 Likewise.
625
626 2020-09-22 Jonathan Wakely <jwakely@redhat.com>
627
628 PR libstdc++/96803
629 * include/std/tuple
630 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
631 Use correct value category in __use_alloc call.
632 * testsuite/20_util/tuple/cons/96803.cc: Check with constructors
633 that require correct value category to be used.
634
635 2020-09-22 Patrick Palka <ppalka@redhat.com>
636
637 * include/std/span (span::front): Remove static_assert.
638 (span::back): Likewise.
639 (span::operator[]): Likewise.
640 * testsuite/23_containers/span/back_neg.cc: Rewrite to verify
641 that we check the preconditions of back() only when it's called.
642 * testsuite/23_containers/span/front_neg.cc: Likewise for
643 front().
644 * testsuite/23_containers/span/index_op_neg.cc: Likewise for
645 operator[].
646
647 2020-09-22 Patrick Palka <ppalka@redhat.com>
648
649 * include/bits/stl_algo.h (__sample): Exit early when the
650 input range is empty.
651 * testsuite/25_algorithms/sample/3.cc: New test.
652
653 2020-09-22 Patrick Palka <ppalka@redhat.com>
654
655 * include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20.
656 (search): Likewise for the overload that takes a searcher.
657 * testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr
658 std::for_each_n.
659 * testsuite/25_algorithms/search/constexpr.cc: Test constexpr
660 std::search overload that takes a searcher.
661
662 2020-09-21 Jonathan Wakely <jwakely@redhat.com>
663
664 * include/bits/c++config (__replacement_assert): Add noreturn
665 attribute.
666 (__glibcxx_assert_impl): Use __builtin_expect to hint that the
667 assertion is expected to pass.
668
669 2020-09-21 Jonathan Wakely <jwakely@redhat.com>
670
671 * include/std/ranges (drop_view::begin()): Adjust constraints
672 to match the correct condition for O(1) ranges::next (LWG 3482).
673 * testsuite/std/ranges/adaptors/drop.cc: Check that iterator is
674 cached for non-sized_range.
675
676 2020-09-21 Jonathan Wakely <jwakely@redhat.com>
677
678 * include/std/ranges (transform_view, elements_view): Relax
679 constraints on operator- for iterators, as per LWG 3483.
680 * testsuite/std/ranges/adaptors/elements.cc: Check that we
681 can take the difference of two iterators from a non-random
682 access range.
683 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
684
685 2020-09-21 Jonathan Wakely <jwakely@redhat.com>
686
687 PR libstdc++/97132
688 * include/bits/align.h (align) [!_GLIBCXX_USE_C99_STDINT_TR1]:
689 Remove unused code.
690 (assume_aligned): Do not use __builtin_assume_aligned during
691 constant evaluation.
692 * testsuite/20_util/assume_aligned/1.cc: Improve test.
693 * testsuite/20_util/assume_aligned/97132.cc: New test.
694
695 2020-09-20 Jonathan Wakely <jwakely@redhat.com>
696
697 PR libstdc++/97101
698 * include/std/functional (bind_front): Fix order of parameters
699 in is_nothrow_constructible_v specialization.
700 * testsuite/20_util/function_objects/bind_front/97101.cc: New test.
701
702 2020-09-11 Thomas Rodgers <trodgers@redhat.com>
703
704 * include/std/memory: Move #include <bits/align.h> inside C++11
705 conditional includes.
706
707 2020-09-11 Thomas Rodgers <trodgers@redhat.com>
708
709 * include/Makefile.am (bits_headers): Add new header.
710 * include/Makefile.in: Regenerate.
711 * include/bits/align.h: New file.
712 * include/std/memory (align): Move definition to bits/align.h.
713 (assume_aligned): Likewise.
714
715 2020-09-11 Jonathan Wakely <jwakely@redhat.com>
716
717 * include/std/chrono [C++17] (chrono::__detail::ceil): Add
718 using declaration to make chrono::ceil available for internal
719 use with a consistent name.
720 (chrono::__detail::__ceil_impl): New function template.
721 (chrono::__detail::ceil): Use __ceil_impl to compare and
722 increment the value. Remove SFINAE constraint.
723
724 2020-09-11 Jonathan Wakely <jwakely@redhat.com>
725
726 * include/bits/regex_error.h (__throw_regex_error): Fix
727 parameter declaration and use reserved attribute names.
728
729 2020-09-11 Mike Crowe <mac@mcrowe.com>
730
731 * include/std/condition_variable (condition_variable::wait_until):
732 Convert delta to steady_clock duration before adding to current
733 steady_clock time to avoid rounding errors described in PR68519.
734 (condition_variable::wait_for): Simplify calculation of absolute
735 time by using chrono::__detail::ceil in both overloads.
736 * testsuite/30_threads/condition_variable/members/68519.cc:
737 (test_wait_for): Renamed from test01. Replace unassigned val
738 variable with constant false. Reduce scope of mx and cv
739 variables to just test_wait_for function.
740 (test_wait_until): Add new test case.
741
742 2020-09-11 Mike Crowe <mac@mcrowe.com>
743
744 PR libstdc++/91486
745 * include/bits/atomic_futex.h
746 (__atomic_futex_unsigned::_M_load_when_equal_for)
747 (__atomic_futex_unsigned::_M_load_when_equal_until): Use
748 __detail::ceil to convert delta to the reference clock
749 duration type to avoid resolution problems.
750 * include/std/chrono (__detail::ceil): Move implementation
751 of std::chrono::ceil into private namespace so that it's
752 available to pre-C++17 code.
753 * testsuite/30_threads/async/async.cc (test_pr91486):
754 Test __atomic_futex_unsigned::_M_load_when_equal_for.
755
756 2020-09-11 Mike Crowe <mac@mcrowe.com>
757
758 * include/bits/atomic_futex.h
759 (__atomic_futex_unsigned::_M_load_when_equal_until): Add
760 loop on generic _Clock to check the timeout against _Clock
761 again after _M_load_when_equal_until returns indicating a
762 timeout.
763 * testsuite/30_threads/async/async.cc: Invent slow_clock
764 that runs at an eleventh of steady_clock's speed. Use it
765 to test the user-supplied-clock variant of
766 __atomic_futex_unsigned::_M_load_when_equal_until works
767 generally with test03 and loops correctly when the timeout
768 time hasn't been reached in test04.
769
770 2020-09-11 Mike Crowe <mac@mcrowe.com>
771
772 PR libstdc++/93542
773 * include/bits/atomic_futex.h (__atomic_futex_unsigned): Change
774 __clock_t typedef to use steady_clock so that unknown clocks are
775 synced to it rather than system_clock. Change existing __clock_t
776 overloads of _M_load_and_text_until_impl and
777 _M_load_when_equal_until to use system_clock explicitly. Remove
778 comment about DR 887 since these changes address that problem as
779 best as we currently able.
780
781 2020-09-11 Mike Crowe <mac@mcrowe.com>
782
783 PR libstdc++/93542
784 * config/abi/pre/gnu.ver: Update for addition of
785 __atomic_futex_unsigned_base::_M_futex_wait_until_steady.
786 * include/bits/atomic_futex.h (__atomic_futex_unsigned_base):
787 Add comments to clarify that _M_futex_wait_until and
788 _M_load_and_test_until use CLOCK_REALTIME.
789 (__atomic_futex_unsigned_base::_M_futex_wait_until_steady)
790 (__atomic_futex_unsigned_base::_M_load_and_text_until_steady):
791 New member functions that use CLOCK_MONOTONIC.
792 (__atomic_futex_unsigned_base::_M_load_and_test_until_impl)
793 (__atomic_futex_unsigned_base::_M_load_when_equal_until): Add
794 overloads that accept a steady_clock time_point and use the
795 new member functions.
796 * src/c++11/futex.cc: Include headers required for
797 clock_gettime.
798 (futex_clock_monotonic_flag): New constant to tell futex to
799 use CLOCK_MONOTONIC to match existing futex_clock_realtime_flag.
800 (futex_clock_monotonic_unavailable): New global to store the
801 result of trying to use CLOCK_MONOTONIC.
802 (__atomic_futex_unsigned_base::_M_futex_wait_until_steady): Add
803 new variant of _M_futex_wait_until that uses CLOCK_MONOTONIC to
804 support waiting using steady_clock.
805
806 2020-09-11 Mike Crowe <mac@mcrowe.com>
807
808 * src/c++11/futex.cc: Add new constants for required futex
809 flags. Add futex_clock_realtime_unavailable flag to store
810 result of trying to use FUTEX_CLOCK_REALTIME.
811 (__atomic_futex_unsigned_base::_M_futex_wait_until): Try to
812 use FUTEX_WAIT_BITSET with FUTEX_CLOCK_REALTIME and only
813 fall back to using gettimeofday and FUTEX_WAIT if that's not
814 supported.
815
816 2020-09-11 Mike Crowe <mac@mcrowe.com>
817
818 * testsuite/30_threads/async/async.cc (test02): Test steady_clock
819 with std::future::wait_until.
820 (test03): Add new test templated on clock type waiting for future
821 associated with async to resolve.
822 (main): Call test03 to test both system_clock and steady_clock.
823
824 2020-09-11 Torbjörn SVENSSON <torbjorn.svensson@st.com>
825 Christophe Lyon <christophe.lyon@linaro.org>
826
827 * libsupc++/eh_call.cc: Avoid warning with -fno-exceptions.
828
829 2020-09-11 Torbjörn SVENSSON <torbjorn.svensson@st.com>
830 Christophe Lyon <christophe.lyon@linaro.org>
831
832 * libsupc++/eh_call.cc: Avoid warning with -fno-exceptions.
833
834 2020-09-11 Christophe Lyon <christophe.lyon@linaro.org>
835
836 * include/bits/regex_error.h: Avoid warning with -fno-exceptions.
837
838 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
839
840 * include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all):
841 Add casts to compare types of the same signedness.
842
843 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
844
845 * include/bits/ranges_algobase.h (__equal_fn): Remove unused
846 typedef.
847
848 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
849
850 * include/std/version (__cpp_lib_array_constexpr):
851 (__cpp_lib_constexpr_char_traits): Only define C++17 value when
852 compiling C++17.
853
854 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
855
856 * include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&))
857 (operator=(auto_ptr&&)): Add diagnostic pragmas to suppress
858 warnings for uses of std::auto_ptr.
859 * include/experimental/type_traits (is_literal_type_v):
860 Likewise, for use of std::is_literal_type.
861 * include/std/condition_variable (condition_variable_any::_Unlock):
862 Likewise, for use of std::uncaught_exception.
863
864 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
865
866 * include/bits/fs_path.h (path::_List::type()): Avoid narrowing
867 conversion.
868 * include/std/chrono (operator+(const year&, const years&)):
869 Likewise.
870
871 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
872
873 * include/bits/codecvt.h (codecvt_byname): Remove names of
874 unused parameters.
875
876 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
877
878 * include/bits/locale_facets_nonio.tcc: Adjust whitespace.
879
880 2020-09-10 Krystian Kuźniarek <krystian.kuzniarek@gmail.com>
881
882 * include/c_global/cmath (__lerp): Avoid -Wparentheses warnings.
883
884 2020-09-10 Krystian Kuźniarek <krystian.kuzniarek@gmail.com>
885
886 * include/bits/atomic_base.h: Fix -Wunused-variable
887 warnings.
888 * include/ext/new_allocator.h: Fix -Wunused-parameter
889 warnings.
890
891 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
892
893 * include/bits/stl_iterator.h (counted_iterator): Add assertions
894 to check preconditions added by LWG 3472.
895
896 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
897
898 PR libstdc++/94160
899 * src/c++17/memory_resource.cc (munge_options): Round
900 max_blocks_per_chunk to a multiple of four.
901 (__pool_resource::_M_alloc_pools()): Simplify slightly.
902 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
903 Check that valid pointers are returned when small values are
904 used for max_blocks_per_chunk.
905
906 2020-09-10 Jonathan Wakely <jwakely@redhat.com>
907
908 PR libstdc++/96942
909 * include/std/memory_resource (monotonic_buffer_resource::do_allocate):
910 Use __builtin_expect when checking if a new buffer needs to be
911 allocated from the upstream resource, and for checks for edge
912 cases like zero sized buffers and allocations.
913 * src/c++17/memory_resource.cc (aligned_size): New class template.
914 (aligned_ceil): New helper function to round up to a given
915 alignment.
916 (monotonic_buffer_resource::chunk): Replace _M_size and _M_align
917 with an aligned_size member. Remove _M_canary member. Change _M_next
918 to pointer instead of unaligned buffer.
919 (monotonic_buffer_resource::chunk::allocate): Round up to multiple
920 of 64 instead of to power of two. Check for size overflow. Remove
921 redundant check for minimum required alignment.
922 (monotonic_buffer_resource::chunk::release): Adjust for changes
923 to data members.
924 (monotonic_buffer_resource::_M_new_buffer): Use aligned_ceil.
925 (big_block): Replace _M_size and _M_align with aligned_size
926 member.
927 (big_block::big_block): Check for size overflow.
928 (big_block::size, big_block::align): Adjust to use aligned_size.
929 (big_block::alloc_size): Use aligned_ceil.
930 (munge_options): Use aligned_ceil.
931 (__pool_resource::allocate): Use big_block::align for alignment.
932 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Check
933 upstream resource gets expected values for impossible sizes.
934 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
935 Likewise. Adjust checks for expected alignment in existing test.
936
937 2020-09-07 Jonathan Wakely <jwakely@redhat.com>
938
939 * include/std/chrono (duration::_S_gcd): Use invariant that
940 neither value is zero initially.
941
942 2020-09-07 Jonathan Wakely <jwakely@redhat.com>
943
944 * include/std/ranges (__box): Simplify constraints as per LWG 3477.
945
946 2020-09-03 Jonathan Wakely <jwakely@redhat.com>
947
948 PR libstdc++/96592
949 * include/std/tuple (_TupleConstraints<true, T...>): Use
950 alternative is_constructible instead of std::is_constructible.
951 * testsuite/20_util/tuple/cons/96592.cc: New test.
952
953 2020-09-03 Jonathan Wakely <jwakely@redhat.com>
954
955 * include/std/chrono (duration::_S_gcd): Use iterative algorithm
956 for C++14 and later.
957 * include/std/numeric (__detail::__gcd): Replace recursive
958 Euclidean algorithm with iterative version of binary GCD algorithm.
959 * testsuite/26_numerics/gcd/1.cc: Test additional inputs.
960 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines.
961 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
962 * testsuite/experimental/numeric/gcd.cc: Test additional inputs.
963 * testsuite/26_numerics/gcd/2.cc: New test.
964
965 2020-09-02 Jonathan Wakely <jwakely@redhat.com>
966
967 PR libstdc++/92978
968 * testsuite/experimental/numeric/92978.cc: Use experimental::lcm
969 not std::lcm.
970
971 2020-09-02 Jonathan Wakely <jwakely@redhat.com>
972
973 PR libstdc++/96851
974 * include/bits/cpp_type_traits.h (__is_memcmp_ordered):
975 New trait that says if memcmp can be used for ordering.
976 (__is_memcmp_ordered_with): Likewise, for two types.
977 * include/bits/deque.tcc (__lex_cmp_dit): Use new traits
978 instead of __is_byte and __numeric_traits.
979 (__lexicographical_compare_aux1): Likewise.
980 * include/bits/ranges_algo.h (__lexicographical_compare_fn):
981 Likewise.
982 * include/bits/stl_algobase.h (__lexicographical_compare_aux1)
983 (__is_byte_iter): Likewise.
984 * include/std/array (operator<=>): Likewise. Only use memcmp
985 when std::is_constant_evaluated() is false.
986 * testsuite/23_containers/array/comparison_operators/96851.cc:
987 New test.
988 * testsuite/23_containers/array/tuple_interface/get_neg.cc:
989 Adjust dg-error line numbers.
990
991 2020-09-02 Jonathan Wakely <jwakely@redhat.com>
992
993 * include/bits/stl_iterator.h: Include <bits/exception_defines.h>
994 for definitions of __try, __catch and __throw_exception_again.
995 (counted_iterator::operator++(int)): Use __throw_exception_again
996 instead of throw.
997 * libsupc++/new: Include <bits/exception.h> not <exception>.
998 * libsupc++/new_opvnt.cc: Include <bits/exception_defines.h>.
999 * testsuite/18_support/destroying_delete.cc: Include
1000 <type_traits> for std::is_same_v definition.
1001 * testsuite/20_util/variant/index_type.cc: Qualify size_t.
1002
1003 2020-09-01 Jonathan Wakely <jwakely@redhat.com>
1004
1005 PR libstdc++/71960
1006 * include/bits/c++config (__glibcxx_assert_impl): Remove
1007 do-while so that uses of the macro need to add it.
1008 (__glibcxx_assert): Rename macro for runtime assertions
1009 to __glibcxx_assert_2.
1010 (__glibcxx_assert_1): Define macro for constexpr assertions.
1011 (__glibcxx_assert): Define macro for constexpr and runtime
1012 assertions.
1013 * include/bits/range_access.h (ranges::advance): Remove
1014 redundant precondition checks during constant evaluation.
1015 * include/parallel/base.h (_GLIBCXX_PARALLEL_ASSERT): Always
1016 use do-while in macro expansion.
1017 * include/std/ranges (iota_view::iota_view(W, B)): Remove
1018 redundant braces.
1019
1020 2020-09-01 Jonathan Wakely <jwakely@redhat.com>
1021
1022 * include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)):
1023 New helper function for finding GCD of two positive intmax_t
1024 values.
1025 (duration::__divide): New helper alias for dividing one period
1026 by another.
1027 (duration::__is_harmonic): Use __divide not ratio_divide.
1028 (duration(const duration<R2, P2>&)): Require the duration rep
1029 types to be convertible.
1030 * testsuite/20_util/duration/cons/dr2094.cc: New test.
1031 * testsuite/20_util/duration/requirements/reduced_period.cc:
1032 Fix definition of unused member functions in test type.
1033 * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
1034 Adjust expected errors.
1035
1036 2020-08-29 Jonathan Wakely <jwakely@redhat.com>
1037
1038 * include/std/numeric (__detail::__absu(bool)): Make deleted
1039 function a function template, so it will be chosen for calls
1040 with an explicit template argument list.
1041 * testsuite/26_numerics/gcd/gcd_neg.cc: Add dg-prune-output.
1042 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1043
1044 2020-08-28 Jonathan Wakely <jwakely@redhat.com>
1045
1046 * include/std/chrono (common_type): Fix partial specializations
1047 for a single duration type to use the common_type of the rep.
1048 (duration::operator+, duration::operator-): Fix return types
1049 to also use the common_type of the rep.
1050 * testsuite/20_util/duration/requirements/reduced_period.cc:
1051 Check duration using a rep that has common_type specialized.
1052
1053 2020-08-28 Jonathan Wakely <jwakely@redhat.com>
1054
1055 PR libstdc++/92978
1056 * include/std/numeric (__abs_integral): Replace with ...
1057 (__detail::__absu): New function template that returns an
1058 unsigned type, guaranteeing it can represent the most
1059 negative signed value.
1060 (__detail::__gcd, __detail::__lcm): Require arguments to
1061 be unsigned and therefore already non-negative.
1062 (gcd, lcm): Convert arguments to absolute value as unsigned
1063 type before calling __detail::__gcd or __detail::__lcm.
1064 * include/experimental/numeric (gcd, lcm): Likewise.
1065 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected
1066 errors.
1067 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1068 * testsuite/26_numerics/gcd/92978.cc: New test.
1069 * testsuite/26_numerics/lcm/92978.cc: New test.
1070 * testsuite/experimental/numeric/92978.cc: New test.
1071
1072 2020-08-27 Jonathan Wakely <jwakely@redhat.com>
1073
1074 * include/std/chrono (__duration_common_type): Ensure the
1075 reduced ratio is used. Remove unused partial specialization
1076 using __failure_type.
1077 (common_type): Pass reduced ratios to __duration_common_type.
1078 Add partial specializations for simple cases involving a single
1079 duration or time_point type.
1080 (duration::period): Use reduced ratio.
1081 (duration::operator+(), duration::operator-()): Return duration
1082 type using the reduced ratio.
1083 * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
1084 Adjust expected errors.
1085 * testsuite/20_util/duration/requirements/reduced_period.cc: New test.
1086
1087 2020-08-27 Patrick Palka <ppalka@redhat.com>
1088
1089 * include/std/chrono (year_month::operator+): Properly handle a
1090 month value of 0 by casting the month value to int before
1091 subtracting 1 from it so that the difference is sign-extended in
1092 the subsequent addition.
1093 * testsuite/std/time/year_month/1.cc: Test adding months to a
1094 year_month whose month component is below or above the
1095 normalized range of [1,12].
1096
1097 2020-08-27 Patrick Palka <ppalka@redhat.com>
1098
1099 * include/std/chrono
1100 (__detail::__months_years_conversion_disambiguator): Define.
1101 (year_month::operator+=): Templatize the 'months'-based overload
1102 so that the 'years'-based overload is selected in case of
1103 equally-ranked implicit conversion sequences to both 'months'
1104 and 'years' from the supplied argument.
1105 (year_month::operator-=): Likewise.
1106 (year_month::operator+): Likewise.
1107 (year_month::operator-): Likewise.
1108 (year_month_day::operator+=): Likewise.
1109 (year_month_day::operator-=): Likewise.
1110 (year_month_day::operator+): Likewise.
1111 (year_month_day::operator-): Likewise.
1112 (year_month_day_last::operator+=): Likewise.
1113 (year_month_day_last::operator-=): Likewise.
1114 (year_month_day_last::operator+): Likewise
1115 (year_month_day_last::operator-): Likewise.
1116 (year_month_day_weekday::operator+=): Likewise
1117 (year_month_day_weekday::operator-=): Likewise.
1118 (year_month_day_weekday::operator+): Likewise.
1119 (year_month_day_weekday::operator-): Likewise.
1120 (year_month_day_weekday_last::operator+=): Likewise
1121 (year_month_day_weekday_last::operator-=): Likewise.
1122 (year_month_day_weekday_last::operator+): Likewise.
1123 (year_month_day_weekday_last::operator-): Likewise.
1124 (testsuite/std/time/year_month/2.cc): New test.
1125 (testsuite/std/time/year_month_day/2.cc): New test.
1126 (testsuite/std/time/year_month_day_last/2.cc): New test.
1127 (testsuite/std/time/year_month_weekday/2.cc): New test.
1128 (testsuite/std/time/year_month_weekday_last/2.cc): New test.
1129 * testsuite/std/time/year_month/2.cc: New file.
1130 * testsuite/std/time/year_month_day/2.cc: New file.
1131 * testsuite/std/time/year_month_day_last/2.cc: New file.
1132 * testsuite/std/time/year_month_weekday/2.cc: New file.
1133 * testsuite/std/time/year_month_weekday_last/2.cc: New file.
1134
1135 2020-08-27 Patrick Palka <ppalka@redhat.com>
1136
1137 PR libstdc++/95322
1138 * include/std/ranges (transform_view::sentinel::__distance_from):
1139 Give this a deduced return type.
1140 (transform_view::sentinel::operator-): Adjust the return type so
1141 that it's based on the constness of the iterator rather than
1142 that of the sentinel.
1143 * testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488.
1144
1145 2020-08-27 Patrick Palka <ppalka@redhat.com>
1146
1147 * include/std/ranges (elements_view::begin): Adjust constraints.
1148 (elements_view::end): Likewise.
1149 (elements_view::_Sentinel::operator==): Templatize to take both
1150 _Iterator<true> and _Iterator<false>.
1151 (elements_view::_Sentinel::operator-): Likewise.
1152 * testsuite/std/ranges/adaptors/elements.cc: Add testcase for
1153 the example from P1994R1.
1154 * testsuite/std/ranges/adaptors/lwg3406.cc: New test.
1155
1156 2020-08-27 Patrick Palka <ppalka@redhat.com>
1157
1158 * include/std/ranges (elements_view::end): Replace these two
1159 overloads with four new overloads.
1160 (elements_view::_Iterator::operator==): Remove.
1161 (elements_view::_Iterator::operator-): Likewise.
1162 (elements_view::_Sentinel): Define.
1163
1164 2020-08-26 Jonathan Wakely <jwakely@redhat.com>
1165
1166 * include/std/tuple (_Tuple_impl): Whitespaces changes for
1167 consistent indentation. Also use __enable_if_t alias template.
1168
1169 2020-08-26 Jonathan Wakely <jwakely@redhat.com>
1170
1171 PR libstdc++/96803
1172 * include/std/tuple
1173 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
1174 Replace parameter pack with a type parameter and a pack and pass
1175 the first type to __use_alloc.
1176 * testsuite/20_util/tuple/cons/96803.cc: New test.
1177
1178 2020-08-26 Patrick Palka <ppalka@redhat.com>
1179
1180 * include/std/chrono (year_month_weekday::operator==): Compare
1181 weekday_indexed instead of weekday.
1182 * testsuite/std/time/year_month_weekday/1.cc: Augment testcase.
1183
1184 2020-08-26 Jonathan Wakely <jwakely@redhat.com>
1185
1186 * include/bits/hashtable_policy.h (_Hash_code_base): Change
1187 index of _Hashtable_ebo_helper base class.
1188 * testsuite/23_containers/unordered_map/dup_types.cc: New test.
1189
1190 2020-08-26 Jonathan Wakely <jwakely@redhat.com>
1191
1192 PR libstdc++/71960
1193 * include/experimental/string_view (basic_string_view):
1194 Enable debug assertions.
1195 * include/std/string_view (basic_string_view):
1196 Likewise.
1197
1198 2020-08-26 François Dumont <fdumont@gcc.gnu.org>
1199
1200 * include/bits/hashtable_policy.h (_Hashtable<>): Rename _H1 into _Hash
1201 _H2 into _RangeHash and _Hash into _Unused.
1202 (_Hastable_base<>): Likewise.
1203 (_Map_base<>): Likewise.
1204 (_Insert_base<>): Likewise.
1205 (_Insert<>): Likewise.
1206 (_Rehash_base<>): Likewise.
1207 (_Local_iterator_base<>): Likewise.
1208 (_Hash_code_base<>): Likewise.
1209 (_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false>):
1210 Remove.
1211 (_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>):
1212 Remove.
1213 (_Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHas, _Unused,
1214 bool>): Remove _Hashtable_ebo_helper<2, _RangeHash> base type..
1215 (_Hash_code_base<>::_M_bucket_index(const _Key&, __hash_code, size_t)):
1216 Replace by...
1217 (_Hash_code_base<>::_M_bucket_index(__hash_code, size_t)): ...this.
1218 (_Local_iterator<>): Remove _H1 and _H2 template parameters.
1219 (_Local_const_iterator<>): Likewise.
1220 (_Equality<>): Likewise.
1221 (_Map_base<>::operator[](const key_type&): Adapt.
1222 (_Map_base<>::operator[](key_type&&): Adapt.
1223 (_Identity::operator()): Add noexcept.
1224 (_Select1st::operator()): Likewise.
1225 (_Hash_code_base<>): Remove _Hashtable_ebo_helper<0, _ExtractKey> base
1226 type.
1227 (_Hash_code_base::_M_extract): Remove.
1228 * include/bits/hashtable.h (_Hashtable<>): Remove _H1 and _H2 template
1229 parameters. Remove _ExtractKey from constructors.
1230 (_Hashtable<>::_M_insert_unique_node(const key_type&, size_t,
1231 __hash_code, __node_type*, size_t)): Replace by...
1232 (_Hashtable<>::_M_insert_unique_node(size_t, __hash_code,
1233 __node_type*, size_t)): ...this.
1234 (_Hashtable<>::_M_insert_muti_node(__node_type*, const key_type&,
1235 __hash_code, __node_type*)): Replace by...
1236 (_Hashtable<>::_M_insert_multi_node(__node_type*, __hash_code,
1237 __node_type*)): ...this.
1238 (_Hashtable<>::__key_extract): Remove.
1239 * include/bits/node_handle.h: Adapt.
1240
1241 2020-08-25 Jonathan Wakely <jwakely@redhat.com>
1242
1243 * testsuite/21_strings/debug/iterator_self_move_assign_neg.cc: Removed.
1244 * testsuite/21_strings/debug/self_move_assign_neg.cc: Removed.
1245 * testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc: Removed.
1246 * testsuite/23_containers/deque/debug/self_move_assign_neg.cc: Removed.
1247 * testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc: Removed.
1248 * testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc: Removed.
1249 * testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc: Removed.
1250 * testsuite/23_containers/list/debug/self_move_assign_neg.cc: Removed.
1251 * testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc: Removed.
1252 * testsuite/23_containers/map/debug/self_move_assign_neg.cc: Removed.
1253 * testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc: Removed.
1254 * testsuite/23_containers/multimap/debug/self_move_assign_neg.cc: Removed.
1255 * testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc: Removed.
1256 * testsuite/23_containers/multiset/debug/self_move_assign_neg.cc: Removed.
1257 * testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc: Removed.
1258 * testsuite/23_containers/set/debug/self_move_assign_neg.cc: Removed.
1259 * testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc: Removed.
1260 * testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc: Removed.
1261 * testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc:
1262 Removed.
1263 * testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc: Removed.
1264 * testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc:
1265 Removed.
1266 * testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc: Removed.
1267 * testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc: Removed.
1268 * testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc: Removed.
1269 * testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc: Removed.
1270 * testsuite/23_containers/vector/debug/self_move_assign_neg.cc: Removed.
1271
1272 2020-08-25 Patrick Palka <ppalka@redhat.com>
1273
1274 * include/std/chrono (year_month_weekday::ok): Fix assert.
1275
1276 2020-08-25 Jonathan Wakely <jwakely@redhat.com>
1277
1278 * include/std/future (future, shared_future. promise): Add
1279 is_destructible assertion (LWG 3466). Adjust string-literal for
1280 !is_array and !is_function assertions.
1281 * testsuite/30_threads/future/requirements/lwg3458.cc: Check
1282 types with no accessible destructor. Adjust expected errors.
1283 * testsuite/30_threads/promise/requirements/lwg3466.cc:
1284 Likewise.
1285 * testsuite/30_threads/shared_future/requirements/lwg3458.cc:
1286 Likewise.
1287
1288 2020-08-25 Patrick Palka <ppalka@redhat.com>
1289 Ed Smith-Rowland <3dw4rd@verizon.net>
1290 Jonathan Wakely <jwakely@redhat.com>
1291
1292 * include/std/chrono (time_point::operator++)
1293 (time_point::operator--): Define.
1294 (utc_clock, tai_clock, gps_clock): Forward declare.
1295 (utc_time, utc_seconds, tai_time, tai_seconds, gps_time)
1296 (gps_seconds): Define.
1297 (is_clock<utc_clock>, is_clock<tai_clock>, is_clock<gps_clock>)
1298 (is_clock_v<utc_clock>, is_clock_v<tai_clock>)
1299 (is_clock_v<gps_clock>): Define these specializations.
1300 (leap_second_info): Define.
1301 (day, month, year, weekday, weekday_indexed)
1302 (weekday_last, month_day, month_day_last, month_weekday)
1303 (month_weekday_last, year_month, year_month_day)
1304 (year_month_day_last, year_month_weekday, year_month_weekday_last):
1305 Declare and later define.
1306 (last_spec, last, __detail::__days_per_month)
1307 (__detail::__days_per_month, __detail::__last_day): Define.
1308 (January, February, March, April, May, June, July, August)
1309 (September, October, November, December, Sunday, Monday, Tuesday)
1310 (Wednesday, Thursday, Friday, Saturday): Define.
1311 (weekday::operator[]): Define out-of-line.
1312 (year_month_day::_S_from_days, year_month_day::M_days_since_epoch):
1313 Likewise.
1314 (year_month_day::year_month_day, year_month_day::ok): Likewise.
1315 (__detail::__pow10, hh_mm_ss): Define.
1316 (literals::chrono_literals::operator""d)
1317 (literals::chrono_literals::operator""y): Define.
1318 (is_am, is_pm, make12, make24): Define.
1319 * testsuite/20_util/time_point/4.cc: New test.
1320 * testsuite/std/time/day/1.cc: New test.
1321 * testsuite/std/time/hh_mm_ss/1.cc: New test.
1322 * testsuite/std/time/is_am/1.cc: New test.
1323 * testsuite/std/time/is_pm/1.cc: New test.
1324 * testsuite/std/time/make12/1.cc: New test.
1325 * testsuite/std/time/make24/1.cc: New test.
1326 * testsuite/std/time/month/1.cc: New test.
1327 * testsuite/std/time/month_day/1.cc: New test.
1328 * testsuite/std/time/month_day_last/1.cc: New test.
1329 * testsuite/std/time/month_weekday/1.cc: New test.
1330 * testsuite/std/time/month_weekday_last/1.cc: New test.
1331 * testsuite/std/time/weekday/1.cc: New test.
1332 * testsuite/std/time/weekday_indexed/1.cc: New test.
1333 * testsuite/std/time/weekday_last/1.cc: New test.
1334 * testsuite/std/time/year/1.cc: New test.
1335 * testsuite/std/time/year_month/1.cc: New test.
1336 * testsuite/std/time/year_month_day/1.cc: New test.
1337 * testsuite/std/time/year_month_day_last/1.cc: New test.
1338 * testsuite/std/time/year_month_weekday/1.cc: New test.
1339 * testsuite/std/time/year_month_weekday_last/1.cc: New test.
1340
1341 2020-08-24 Jonathan Wakely <jwakely@redhat.com>
1342
1343 * include/std/ranges (join_view): Add deduction guide (LWG 3474).
1344 * testsuite/std/ranges/adaptors/join_lwg3474.cc: New test.
1345
1346 2020-08-24 Jonathan Wakely <jwakely@redhat.com>
1347
1348 * include/bits/iterator_concepts.h (indirectly_readable): Add
1349 partial specializations to resolve ambiguities (LWG 3446).
1350 * testsuite/24_iterators/associated_types/readable.traits.cc:
1351 Check types with both value_type and element_type.
1352
1353 2020-08-24 Jonathan Wakely <jwakely@redhat.com>
1354
1355 * include/std/ranges (ranges::iota_view::size()): Perform all
1356 calculations in the right unsigned types.
1357 * testsuite/std/ranges/iota/size.cc: New test.
1358
1359 2020-08-24 Jonathan Wakely <jwakely@redhat.com>
1360
1361 PR libstdc++/96766
1362 * include/std/variant (_Variant_storage): Replace implicit
1363 conversions from size_t to __index_type with explicit casts.
1364
1365 2020-08-24 Jonathan Wakely <jwakely@redhat.com>
1366
1367 * testsuite/30_threads/packaged_task/cons/alloc.cc: Run for
1368 C++11 and skip for C++17 or later.
1369
1370 2020-08-24 Corentin Gay <gay@adacore.com>
1371
1372 * testsuite/20_util/shared_ptr/atomic/3.cc: Do not require POSIX
1373 threads and add -pthread only on targets supporting them.
1374 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
1375 Likewise.
1376 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc:
1377 Likewise.
1378 * testsuite/30_threads/async/42819.cc: Likewise.
1379 * testsuite/30_threads/async/49668.cc: Likewise.
1380 * testsuite/30_threads/async/54297.cc: Likewise.
1381 * testsuite/30_threads/async/any.cc: Likewise.
1382 * testsuite/30_threads/async/async.cc: Likewise.
1383 * testsuite/30_threads/async/except.cc: Likewise.
1384 * testsuite/30_threads/async/launch.cc: Likewise.
1385 * testsuite/30_threads/async/lwg2021.cc: Likewise.
1386 * testsuite/30_threads/async/sync.cc: Likewise. : Likewise.
1387 * testsuite/30_threads/call_once/39909.cc: Likewise.
1388 * testsuite/30_threads/call_once/49668.cc: Likewise.
1389 * testsuite/30_threads/call_once/60497.cc: Likewise.
1390 * testsuite/30_threads/call_once/call_once1.cc: Likewise.
1391 * testsuite/30_threads/call_once/dr2442.cc: Likewise.
1392 * testsuite/30_threads/condition_variable/54185.cc: Likewise.
1393 * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
1394 * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
1395 * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
1396 * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
1397 * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
1398 * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
1399 * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
1400 Likewise.
1401 * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
1402 * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
1403 * testsuite/30_threads/condition_variable_any/cond.cc: Likewise.
1404 * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
1405 * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
1406 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
1407 * testsuite/30_threads/future/cons/move.cc: Likewise.
1408 * testsuite/30_threads/future/members/45133.cc: Likewise.
1409 * testsuite/30_threads/future/members/get.cc: Likewise.
1410 * testsuite/30_threads/future/members/get2.cc: Likewise.
1411 * testsuite/30_threads/future/members/share.cc: Likewise.
1412 * testsuite/30_threads/future/members/valid.cc: Likewise.
1413 * testsuite/30_threads/future/members/wait.cc: Likewise.
1414 * testsuite/30_threads/future/members/wait_for.cc: Likewise.
1415 * testsuite/30_threads/future/members/wait_until.cc: Likewise.
1416 * testsuite/30_threads/lock/1.cc: Likewise.
1417 * testsuite/30_threads/lock/2.cc: Likewise.
1418 * testsuite/30_threads/lock/3.cc: Likewise.
1419 * testsuite/30_threads/lock/4.cc: Likewise.
1420 * testsuite/30_threads/mutex/cons/1.cc: Likewise.
1421 * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
1422 * testsuite/30_threads/mutex/lock/1.cc: Likewise.
1423 * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
1424 * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
1425 * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
1426 * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
1427 * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
1428 * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
1429 * testsuite/30_threads/packaged_task/49668.cc: Likewise.
1430 * testsuite/30_threads/packaged_task/60564.cc: Likewise.
1431 * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
1432 * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
1433 * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
1434 * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
1435 * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
1436 * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
1437 * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
1438 * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
1439 Likewise.
1440 * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
1441 * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
1442 * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
1443 * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
1444 * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
1445 * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
1446 * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
1447 * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
1448 * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
1449 * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
1450 * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
1451 * testsuite/30_threads/promise/60966.cc: Likewise.
1452 * testsuite/30_threads/promise/cons/1.cc: Likewise.
1453 * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
1454 * testsuite/30_threads/promise/cons/move.cc: Likewise.
1455 * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
1456 * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
1457 * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
1458 * testsuite/30_threads/promise/members/get_future.cc: Likewise.
1459 * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
1460 * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
1461 * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
1462 * testsuite/30_threads/promise/members/set_value.cc: Likewise.
1463 * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
1464 * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
1465 * testsuite/30_threads/promise/members/swap.cc: Likewise.
1466 * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
1467 * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
1468 Likewise.
1469 * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
1470 * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
1471 * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
1472 Likewise.
1473 * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
1474 * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
1475 * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
1476 * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
1477 * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
1478 * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
1479 Likewise.
1480 * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
1481 * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
1482 * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
1483 Likewise.
1484 * testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
1485 Likewise.
1486 * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
1487 * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
1488 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
1489 Likewise.
1490 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
1491 Likewise.
1492 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
1493 Likewise.
1494 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
1495 Likewise.
1496 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
1497 Likewise.
1498 * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
1499 * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
1500 * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
1501 * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
1502 * testsuite/30_threads/shared_future/members/get.cc: Likewise.
1503 * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
1504 * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
1505 * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
1506 * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
1507 * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
1508 * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
1509 * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
1510 * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
1511 * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
1512 * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
1513 * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
1514 * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
1515 * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
1516 * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
1517 * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
1518 * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
1519 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
1520 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
1521 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
1522 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
1523 * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
1524 * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
1525 * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
1526 * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
1527 * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
1528 * testsuite/30_threads/this_thread/1.cc: Likewise.
1529 * testsuite/30_threads/this_thread/sleep_for-mt.cc: Likewise.
1530 * testsuite/30_threads/this_thread/sleep_until-mt.cc: Likewise.
1531 * testsuite/30_threads/thread/cons/1.cc: Likewise.
1532 * testsuite/30_threads/thread/cons/2.cc: Likewise.
1533 * testsuite/30_threads/thread/cons/3.cc: Likewise.
1534 * testsuite/30_threads/thread/cons/4.cc: Likewise.
1535 * testsuite/30_threads/thread/cons/49668.cc: Likewise.
1536 * testsuite/30_threads/thread/cons/5.cc: Likewise.
1537 * testsuite/30_threads/thread/cons/6.cc: Likewise.
1538 * testsuite/30_threads/thread/cons/7.cc: Likewise.
1539 * testsuite/30_threads/thread/cons/8.cc: Likewise.
1540 * testsuite/30_threads/thread/cons/9.cc: Likewise.
1541 * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
1542 * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
1543 * testsuite/30_threads/thread/members/1.cc: Likewise.
1544 * testsuite/30_threads/thread/members/2.cc: Likewise.
1545 * testsuite/30_threads/thread/members/3.cc: Likewise.
1546 * testsuite/30_threads/thread/members/4.cc: Likewise.
1547 * testsuite/30_threads/thread/members/5.cc: Likewise.
1548 * testsuite/30_threads/thread/members/hardware_concurrency.cc:
1549 Likewise.
1550 * testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise.
1551 * testsuite/30_threads/thread/swap/1.cc: Likewise.
1552 * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
1553 * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc:
1554 Likewise.
1555 * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
1556 * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
1557 * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
1558 Likewise.
1559 * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
1560 * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
1561 * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
1562 * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
1563 * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
1564 * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
1565 * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
1566 * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
1567 * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
1568 * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
1569 * testsuite/30_threads/try_lock/1.cc: Likewise.
1570 * testsuite/30_threads/try_lock/2.cc: Likewise.
1571 * testsuite/30_threads/try_lock/3.cc: Likewise.
1572 * testsuite/30_threads/try_lock/4.cc: Likewise.
1573 * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
1574 * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
1575 * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
1576 * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
1577 * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
1578 * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
1579 * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
1580 * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
1581 * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
1582 * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
1583 * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
1584
1585 2020-08-21 Jonathan Wakely <jwakely@redhat.com>
1586
1587 PR libstdc++/96736
1588 * testsuite/17_intro/headers/c++1998/all_attributes.cc: Do not
1589 test "cold" on darwin.
1590 * testsuite/17_intro/headers/c++2011/all_attributes.cc:
1591 Likewise.
1592 * testsuite/17_intro/headers/c++2014/all_attributes.cc:
1593 Likewise.
1594 * testsuite/17_intro/headers/c++2017/all_attributes.cc:
1595 Likewise.
1596 * testsuite/17_intro/headers/c++2020/all_attributes.cc:
1597 Likewise.
1598
1599 2020-08-21 Jonathan Wakely <jwakely@redhat.com>
1600
1601 PR libstdc++/96718
1602 * testsuite/25_algorithms/pstl/feature_test-2.cc: Require
1603 tbb-backend effective target.
1604 * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
1605 * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
1606 * testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
1607
1608 2020-08-20 Jonathan Wakely <jwakely@redhat.com>
1609
1610 * include/bits/iterator_concepts.h [__STRICT_ANSI__]
1611 (incrementable_traits<__int128>): Define specialization.
1612 (incrementable_traits<unsigned __int128>): Likewise.
1613 * testsuite/std/ranges/iota/96042.cc: Test iota_view with
1614 __int128.
1615
1616 2020-08-19 Jonathan Wakely <jwakely@redhat.com>
1617 Patrick Palka <ppalka@redhat.com>
1618
1619 PR libstdc++/96042
1620 * include/bits/range_access.h (__detail::__to_unsigned_like):
1621 Do not use make_unsigned_t<T> in the return type, as it can
1622 result in an error before the integral<T> constraint is checked.
1623 [__STRICT_ANSI__]: Add overloads for 128-bit integer types.
1624 (__detail::__make_unsigned_like_t): Define as the return type
1625 of __to_unsigned_like.
1626 * testsuite/std/ranges/subrange/96042.cc: New test.
1627
1628 2020-08-19 Jonathan Wakely <jwakely@redhat.com>
1629
1630 * include/bits/stl_tree.h (operator!=, operator>, operator<=)
1631 (operator>=): Remove deprecated functions.
1632
1633 2020-08-19 Jonathan Wakely <jwakely@redhat.com>
1634
1635 PR libstdc++/96042
1636 * include/ext/numeric_traits.h (__is_integer_nonstrict): New
1637 trait which is true for 128-bit integers even in strict modes.
1638 (__numeric_traits_integer, __numeric_traits): Use
1639 __is_integer_nonstrict instead of __is_integer.
1640 * include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__]
1641 (numeric_limits<__int128>, (numeric_limits<unsigned __int128>):
1642 Define.
1643 * testsuite/std/ranges/iota/96042.cc: New test.
1644
1645 2020-08-19 Jonathan Wakely <jwakely@redhat.com>
1646
1647 * include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST)
1648 (_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST)
1649 (_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
1650 Add new macros to comment.
1651
1652 2020-08-19 Patrick Palka <ppalka@redhat.com>
1653
1654 * include/Makefile.am (bits_headers): Add new header
1655 <bits/max_size_type.h>.
1656 * include/Makefile.in: Regenerate.
1657 * include/bits/iterator_concepts.h
1658 (ranges::__detail::__max_diff_type): Remove definition, replace
1659 with forward declaration of class __max_diff_type.
1660 (__detail::__max_size_type): Remove definition, replace with
1661 forward declaration of class __max_size_type.
1662 (__detail::__is_unsigned_int128, __is_signed_int128)
1663 (__is_int128): New concepts.
1664 (__detail::__is_integer_like): Accept __int128 and unsigned
1665 __int128.
1666 (__detail::__is_signed_integer_like): Accept __int128.
1667 * include/bits/max_size_type.h: New header.
1668 * include/bits/range_access.h: Include <bits/max_size_type.h>.
1669 (__detail::__to_unsigned_like): Two new overloads.
1670 * testsuite/std/ranges/iota/difference_type.cc: New test.
1671 * testsuite/std/ranges/iota/max_size_type.cc: New test.
1672
1673 2020-08-19 Jonathan Wakely <jwakely@redhat.com>
1674
1675 * include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all
1676 standard modes.
1677 (_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead"
1678 message in deprecated warnings.
1679 (_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New
1680 macros for marking features deprecated in C++11.
1681 (_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
1682 New macros.
1683 * include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>):
1684 Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED.
1685 (auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST.
1686 * include/backward/binders.h (binder1st, binder2nd): Likewise.
1687 * include/bits/ios_base.h (io_state, open_mode, seek_dir)
1688 (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
1689 * include/std/streambuf (stossc): Replace C++11 attribute
1690 with _GLIBCXX_DEPRECATED_SUGGEST.
1691 * include/std/type_traits (__is_nullptr_t): Use
1692 _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
1693 * testsuite/27_io/types/1.cc: Check for deprecated warnings.
1694 Also check for io_state, open_mode and seek_dir typedefs.
1695
1696 2020-08-19 Antony Polukhin <antoshkka@gmail.com>
1697
1698 PR libstdc++/71579
1699 * include/std/type_traits (invoke_result, is_nothrow_invocable_r)
1700 Add static_asserts to make sure that the argument of the type
1701 trait is not misused with incomplete types.
1702 (is_swappable_with, is_nothrow_swappable_with): Add static_asserts
1703 to make sure that the first and second arguments of the type trait
1704 are not misused with incomplete types.
1705 * testsuite/20_util/invoke_result/incomplete_neg.cc: New test.
1706 * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: New test.
1707 * testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc: New test.
1708 * testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc: New
1709 test.
1710 * testsuite/20_util/is_swappable_with/incomplete_neg.cc: New test.
1711
1712 2020-08-18 David Edelsohn <dje.gcc@gmail.com>
1713 Clement Chigot <clement.chigot@atos.net>
1714
1715 * config/os/aix/t-aix: Add complementary mode object files to
1716 libsupc++.a
1717
1718 2020-08-18 Jonathan Wakely <jwakely@redhat.com>
1719
1720 * testsuite/17_intro/headers/c++1998/all_attributes.cc: Check
1721 "cold" isn't used in the library. Also check <cxxabi.h>.
1722 * testsuite/17_intro/headers/c++2011/all_attributes.cc:
1723 Likewise.
1724 * testsuite/17_intro/headers/c++2014/all_attributes.cc:
1725 Likewise.
1726 * testsuite/17_intro/headers/c++2017/all_attributes.cc:
1727 Likewise.
1728 * testsuite/17_intro/headers/c++2020/all_attributes.cc:
1729 Likewise.
1730
1731 2020-08-18 Jonathan Wakely <jwakely@redhat.com>
1732
1733 PR libstdc++/69724
1734 * include/std/future (__future_base::_S_make_deferred_state)
1735 (__future_base::_S_make_async_state): Remove.
1736 (__future_base::_Deferred_state): Change constructor to accept a
1737 parameter pack of arguments and forward them to the call
1738 wrapper.
1739 (__future_base::_Async_state_impl): Likewise. Replace lambda
1740 expression with a named member function.
1741 (async): Construct state object directly from the arguments,
1742 instead of using thread::__make_invoker, _S_make_deferred_state
1743 and _S_make_async_state. Move shared state into the returned
1744 future.
1745 * include/std/thread (thread::_Call_wrapper): New alias
1746 template for use by constructor and std::async.
1747 (thread::thread(Callable&&, Args&&...)): Create state object
1748 directly instead of using _S_make_state.
1749 (thread::__make_invoker, thread::__decayed_tuple)
1750 (thread::_S_make_state): Remove.
1751 * testsuite/30_threads/async/69724.cc: New test.
1752
1753 2020-08-17 Jonathan Wakely <jwakely@redhat.com>
1754
1755 PR libstdc++/55713
1756 PR libstdc++/71096
1757 PR libstdc++/93147
1758 * include/std/tuple [__has_cpp_attribute(no_unique_address)]
1759 (_Head_base<Idx, Head, true>): New definition of the partial
1760 specialization, using [[no_unique_address]] instead of
1761 inheritance.
1762 * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected
1763 output.
1764 * testsuite/20_util/tuple/comparison_operators/93147.cc: New test.
1765 * testsuite/20_util/tuple/creation_functions/55713.cc: New test.
1766 * testsuite/20_util/tuple/element_access/71096.cc: New test.
1767
1768 2020-08-14 Lewis Hyatt <lhyatt@gmail.com>
1769
1770 * testsuite/lib/libstdc++.exp: Use the new option
1771 -fdiagnostics-plain-output.
1772
1773 2020-08-13 Jonathan Wakely <jwakely@redhat.com>
1774
1775 * acinclude.m4 (GLIBCXX_ENABLE_CHEADERS): Warn if the c_std
1776 option is used and fail unless --enable-cheaders-obsolete is
1777 also used.
1778 * configure: Regenerate.
1779
1780 2020-08-12 Jonathan Wakely <jwakely@redhat.com>
1781
1782 PR libstdc++/85828
1783 * include/bits/basic_string.h (operator=(basic_string&&)): Check
1784 for self-move before copying with char_traits::copy.
1785 * include/bits/hashtable.h (operator=(_Hashtable&&)): Check for
1786 self-move.
1787 * include/bits/stl_deque.h (_M_move_assign1(deque&&, false_type)):
1788 Check for equal allocators.
1789 * include/bits/stl_list.h (_M_move_assign(list&&, true_type)):
1790 Call clear() instead of _M_clear().
1791 * include/debug/formatter.h (__msg_self_move_assign): Change
1792 comment.
1793 * include/debug/macros.h (__glibcxx_check_self_move_assign):
1794 (_GLIBCXX_DEBUG_VERIFY): Remove.
1795 * include/debug/safe_container.h (operator=(_Safe_container&&)):
1796 Remove assertion check for safe move and make it well-defined.
1797 * include/debug/safe_iterator.h (operator=(_Safe_iterator&&)):
1798 Remove assertion check for self-move.
1799 * include/debug/safe_local_iterator.h
1800 (operator=(_Safe_local_iterator&&)): Likewise.
1801 * testsuite/21_strings/basic_string/cons/char/self_move.cc: New test.
1802 * testsuite/23_containers/deque/cons/self_move.cc: New test.
1803 * testsuite/23_containers/forward_list/cons/self_move.cc: New test.
1804 * testsuite/23_containers/list/cons/self_move.cc: New test.
1805 * testsuite/23_containers/set/cons/self_move.cc: New test.
1806 * testsuite/23_containers/unordered_set/cons/self_move.cc: New test.
1807 * testsuite/23_containers/vector/cons/self_move.cc: New test.
1808
1809 2020-08-11 François Dumont <fdumont@gcc.gnu.org>
1810
1811 PR libstdc++/91620
1812 * include/bits/forward_list.tcc (forward_list<>::remove): Collect nodes
1813 to destroy in an intermediate forward_list.
1814 (forward_list<>::remove_if, forward_list<>::unique): Likewise.
1815 * include/bits/list.tcc (list<>::remove, list<>::unique): Likewise.
1816 (list<>::remove_if): Likewise.
1817 * include/debug/forward_list (forward_list<>::_M_erase_after): Remove.
1818 (forward_list<>::erase_after): Adapt.
1819 (forward_list<>::remove, forward_list<>::remove_if): Collect nodes to
1820 destroy in an intermediate forward_list.
1821 (forward_list<>::unique): Likewise.
1822 * include/debug/list (list<>::remove, list<>::unique): Likewise.
1823 (list<>::remove_if): Likewise.
1824 * testsuite/23_containers/forward_list/operations/91620.cc: New test.
1825 * testsuite/23_containers/list/operations/91620.cc: New test.
1826
1827 2020-08-11 Jonathan Wakely <jwakely@redhat.com>
1828
1829 * testsuite/30_threads/thread/cons/84535.cc: Use a custom
1830 namespace.
1831 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
1832
1833 2020-08-11 Jonathan Wakely <jwakely@redhat.com>
1834
1835 PR libstdc++/89760
1836 * include/experimental/executor [!_GLIBCXX_HAS_GTHREADS]:
1837 (execution_context::mutex_type): Define dummy mutex type.
1838 (system_context): Use execution_context::mutex_type.
1839 (system_context) [!_GLIBCXX_HAS_GTHREADS]: Define dummy
1840 thread and condition variable types.
1841 [!_GLIBCXX_HAS_GTHREADS] (system_context::_M_run()): Do not
1842 define.
1843 (system_context::_M_post) [!_GLIBCXX_HAS_GTHREADS]: Throw
1844 an exception when threads aren't available.
1845 (strand::running_in_this_thread()): Defer to _M_state.
1846 (strand::_State::running_in_this_thread()): New function.
1847 (use_future_t): Do not depend on _GLIBCXX_USE_C99_STDINT_TR1.
1848 * include/experimental/io_context (io_context): Use the
1849 execution_context::mutex_type alias. Replace stack of thread
1850 IDs with counter.
1851 * testsuite/experimental/net/execution_context/use_service.cc:
1852 Enable test for non-pthread targets.
1853
1854 2020-08-11 Jonathan Wakely <jwakely@redhat.com>
1855
1856 * include/experimental/executor (system_context::a__tag): Make
1857 default constructor explicit.
1858
1859 2020-08-11 Jonathan Wakely <jwakely@redhat.com>
1860
1861 * include/experimental/executor (system_context::_M_run()):
1862 Fix predicate.
1863 * testsuite/experimental/net/system_context/1.cc: New test.
1864
1865 2020-08-11 Jonathan Wakely <jwakely@redhat.com>
1866
1867 * include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using
1868 #ifdef instead of #if.
1869 (stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before
1870 using __gthread_yield.
1871
1872 2020-08-11 Jonathan Wakely <jwakely@redhat.com>
1873
1874 * include/std/thread [!_GLIBCXX_HAS_GTHREADS] (this_thread::yield)
1875 (this_thread::sleep_until): Define.
1876 [!_GLIBCXX_HAS_GTHREADS] (this_thread::sleep_for): Define. Replace
1877 use of __gthread_time_t typedef with timespec.
1878 * src/c++11/thread.cc [!_GLIBCXX_HAS_GTHREADS] (__sleep_for):
1879 Likewise.
1880 * testsuite/30_threads/this_thread/2.cc: Moved to...
1881 * testsuite/30_threads/this_thread/yield.cc: ...here.
1882 * testsuite/30_threads/this_thread/3.cc: Moved to...
1883 * testsuite/30_threads/this_thread/sleep_for-mt.cc: ...here.
1884 * testsuite/30_threads/this_thread/4.cc: Moved to...
1885 * testsuite/30_threads/this_thread/sleep_until-mt.cc: ...here.
1886 * testsuite/30_threads/this_thread/58038.cc: Add
1887 dg-require-sleep.
1888 * testsuite/30_threads/this_thread/60421.cc: Likewise.
1889 * testsuite/30_threads/this_thread/sleep_for.cc: New test.
1890 * testsuite/30_threads/this_thread/sleep_until.cc: New test.
1891
1892 2020-08-10 Jonathan Wakely <jwakely@redhat.com>
1893
1894 PR libstdc++/94681
1895 * src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead
1896 of calling ::lstat directly.
1897 * src/filesystem/ops.cc (read_symlink): Likewise.
1898
1899 2020-08-10 Jonathan Wakely <jwakely@redhat.com>
1900
1901 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
1902 Use gdb.Type.strip_typedefs().
1903 * testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in
1904 the emulated old type.
1905
1906 2020-08-10 Jonathan Wakely <jwakely@redhat.com>
1907
1908 PR libstdc++/94681
1909 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
1910 $enable_libstdcxx_filesystem_ts.
1911 * configure: Regenerate.
1912
1913 2020-08-10 Jonathan Wakely <jwakely@redhat.com>
1914
1915 PR libstdc++/93904
1916 * include/bits/stl_iterator.h (inserter): Do not deduce
1917 iterator type (LWG 561).
1918 * testsuite/24_iterators/insert_iterator/dr561.cc: New test.
1919
1920 2020-08-10 Jonathan Wakely <jwakely@redhat.com>
1921
1922 * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI=0]
1923 (basic_string::reserve()): Do nothing if exceptions are not
1924 enabled.
1925
1926 2020-08-10 Jonathan Wakely <jwakely@redhat.com>
1927
1928 PR libstdc++/95749
1929 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
1930 (stat_type): Change to __stat64.
1931 (stat): Use _wstat64.
1932
1933 2020-08-07 Jonathan Wakely <jwakely@redhat.com>
1934
1935 PR libstdc++/96303
1936 * include/debug/bitset (bitset::operator==): Call _M_base() on
1937 right operand.
1938 (bitset::operator!=): Likewise, but don't define it at all when
1939 default comparisons are supported by the compiler.
1940 * testsuite/23_containers/bitset/operations/96303.cc: New test.
1941
1942 2020-08-07 Jonathan Wakely <jwakely@redhat.com>
1943
1944 * testsuite/18_support/comparisons/algorithms/partial_order.cc:
1945 Replace VERIFY with static_assert where the compiler now
1946 allows it.
1947 * testsuite/18_support/comparisons/algorithms/weak_order.cc:
1948 Likewise.
1949
1950 2020-08-07 Jonathan Wakely <jwakely@redhat.com>
1951
1952 * config/abi/pre/gnu.ver: Fix wildcards for wstring symbols.
1953
1954 2020-08-06 Andrew Luo <andrewluotechnologies@outlook.com>
1955 Jonathan Wakely <jwakely@redhat.com>
1956
1957 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Use less greedy
1958 patterns for basic_string members.
1959 (GLIBCXX_3.4.29): Export new basic_string::reserve symbols.
1960 * doc/xml/manual/status_cxx2020.xml: Update P0966 status.
1961 * include/bits/basic_string.h (shrink_to_fit()): Call reserve().
1962 (reserve(size_type)): Remove default argument.
1963 (reserve()): Declare new overload.
1964 [!_GLIBCXX_USE_CXX11_ABI] (shrink_to_fit, reserve): Likewise.
1965 * include/bits/basic_string.tcc (reserve(size_type)): Remove
1966 support for shrinking capacity.
1967 (reserve()): Perform shrink-to-fit operation.
1968 [!_GLIBCXX_USE_CXX11_ABI] (reserve): Likewise.
1969 * testsuite/21_strings/basic_string/capacity/1.cc: Adjust to
1970 reflect new behavior.
1971 * testsuite/21_strings/basic_string/capacity/char/1.cc:
1972 Likewise.
1973 * testsuite/21_strings/basic_string/capacity/char/18654.cc:
1974 Likewise.
1975 * testsuite/21_strings/basic_string/capacity/char/2.cc:
1976 Likewise.
1977 * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc:
1978 Likewise.
1979 * testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
1980 Likewise.
1981 * testsuite/21_strings/basic_string/capacity/wchar_t/2.cc:
1982 Likewise.
1983
1984 2020-08-06 Jonathan Wakely <jwakely@redhat.com>
1985
1986 * include/bits/basic_string.tcc
1987 (operator>>(basic_istream&, basic_string&)): Do not set eofbit
1988 if extraction stopped after in.width() characters.
1989 * src/c++98/istream-string.cc (operator>>(istream&, string&)):
1990 Likewise.
1991 * include/bits/istream.tcc (__istream_extract): Do not set
1992 eofbit if extraction stopped after n-1 characters.
1993 * src/c++98/istream.cc (__istream_extract): Likewise.
1994 * testsuite/21_strings/basic_string/inserters_extractors/char/13.cc: New test.
1995 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc: New test.
1996 * testsuite/27_io/basic_istream/extractors_character/char/5.cc: New test.
1997 * testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc: New test.
1998
1999 2020-08-06 Jonathan Wakely <jwakely@redhat.com>
2000
2001 PR libstdc++/96484
2002 * src/c++17/fs_ops.cc (fs::read_symlink): Return an error
2003 immediately for non-symlinks.
2004 * src/filesystem/ops.cc (fs::read_symlink): Likewise.
2005
2006 2020-08-06 Jonathan Wakely <jwakely@redhat.com>
2007
2008 * include/std/istream (operator>>(istream&, char*)): Add
2009 attributes to get warnings for pointers that are null or known
2010 to point to the end of a buffer. Request upper bound from
2011 __builtin_object_size check and handle zero-sized buffer case.
2012 (operator>>(istream&, signed char))
2013 (operator>>(istream&, unsigned char*)): Add attributes.
2014 * testsuite/27_io/basic_istream/extractors_character/char/overflow.cc:
2015 Check extracting into the middle of a buffer.
2016 * testsuite/27_io/basic_istream/extractors_character/wchar_t/overflow.cc: New test.
2017
2018 2020-08-05 Jonathan Wakely <jwakely@redhat.com>
2019
2020 * include/std/atomic (atomic<T>::store): Reformat.
2021
2022 2020-08-05 Jonathan Wakely <jwakely@redhat.com>
2023
2024 * doc/xml/manual/status_cxx2017.xml: Replace oneAPI DPC++ link
2025 with LLVM repo for PSTL.
2026 * doc/html/manual/status.html: Regenerate.
2027
2028 2020-08-05 Jonathan Wakely <jwakely@redhat.com>
2029
2030 * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Export new symbols.
2031 * include/bits/istream.tcc (__istream_extract): New function
2032 template implementing both of operator>>(istream&, char*) and
2033 operator>>(istream&, char(&)[N]). Add explicit instantiation
2034 declaration for it. Remove explicit instantiation declarations
2035 for old function templates.
2036 * include/std/istream (__istream_extract): Declare.
2037 (operator>>(basic_istream<C,T>&, C*)): Define inline and simply
2038 call __istream_extract.
2039 (operator>>(basic_istream<char,T>&, signed char*)): Likewise.
2040 (operator>>(basic_istream<char,T>&, unsigned char*)): Likewise.
2041 (operator>>(basic_istream<C,T>&, C(7)[N])): Define for LWG 2499.
2042 (operator>>(basic_istream<char,T>&, signed char(&)[N])):
2043 Likewise.
2044 (operator>>(basic_istream<char,T>&, unsigned char(&)[N])):
2045 Likewise.
2046 * include/std/streambuf (basic_streambuf): Declare char overload
2047 of __istream_extract as a friend.
2048 * src/c++11/istream-inst.cc: Add explicit instantiation
2049 definition for wchar_t overload of __istream_extract. Remove
2050 explicit instantiation definitions of old operator>> overloads
2051 for versioned-namespace build.
2052 * src/c++98/istream.cc (operator>>(istream&, char*)): Replace
2053 with __istream_extract(istream&, char*, streamsize).
2054 * testsuite/27_io/basic_istream/extractors_character/char/3.cc:
2055 Do not use variable-length array.
2056 * testsuite/27_io/basic_istream/extractors_character/char/4.cc:
2057 Do not run test for C++20.
2058 * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
2059 Do not test writing to pointers for C++20.
2060 * testsuite/27_io/basic_istream/extractors_character/char/9826.cc:
2061 Use array instead of pointer.
2062 * testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc:
2063 Do not use variable-length array.
2064 * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
2065 Do not run test for C++20.
2066 * testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc:
2067 Do not test writing to pointers for C++20.
2068 * testsuite/27_io/basic_istream/extractors_character/char/lwg2499.cc:
2069 New test.
2070 * testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc:
2071 New test.
2072 * testsuite/27_io/basic_istream/extractors_character/char/overflow.cc:
2073 New test.
2074 * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc:
2075 New test.
2076 * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc:
2077 New test.
2078
2079 2020-08-01 Gerald Pfeifer <gerald@pfeifer.com>
2080
2081 * doc/xml/manual/using_exceptions.xml: Move www.stroustrup.com to
2082 https.
2083 * doc/html/manual/using_exceptions.html: Regenerate.
2084
2085 2020-07-31 Gerald Pfeifer <gerald@pfeifer.com>
2086
2087 * doc/xml/manual/status_cxx2017.xml: ParallelSTL is now part
2088 of oneAPI DPC++ Library on Github.
2089 * doc/html/manual/status.html: Regenerate.
2090
2091 2020-07-31 François Dumont <fdumont@gcc.gnu.org>
2092
2093 * include/bits/stl_bvector.h
2094 [_GLIBCXX_INLINE_VERSION](_Bvector_impl_data::_M_start): Define as
2095 _Bit_type*.
2096 (_Bvector_impl_data(const _Bvector_impl_data&)): Default.
2097 (_Bvector_impl_data(_Bvector_impl_data&&)): Delegate to latter.
2098 (_Bvector_impl_data::operator=(const _Bvector_impl_data&)): Default.
2099 (_Bvector_impl_data::_M_move_data(_Bvector_impl_data&&)): Use latter.
2100 (_Bvector_impl_data::_M_reset()): Likewise.
2101 (_Bvector_impl_data::_M_swap_data): New.
2102 (_Bvector_impl::_Bvector_impl(_Bvector_impl&&)): Implement explicitely.
2103 (_Bvector_impl::_Bvector_impl(_Bit_alloc_type&&, _Bvector_impl&&)): New.
2104 (_Bvector_base::_Bvector_base(_Bvector_base&&, const allocator_type&)):
2105 New, use latter.
2106 (vector::vector(vector&&, const allocator_type&, true_type)): New, use
2107 latter.
2108 (vector::vector(vector&&, const allocator_type&, false_type)): New.
2109 (vector::vector(vector&&, const allocator_type&)): Use latters.
2110 (vector::vector(const vector&, const allocator_type&)): Adapt.
2111 [__cplusplus >= 201103](vector::vector(_InputIt, _InputIt,
2112 const allocator_type&)): Use _M_initialize_range.
2113 (vector::operator[](size_type)): Use iterator operator[].
2114 (vector::operator[](size_type) const): Use const_iterator operator[].
2115 (vector::swap(vector&)): Add assertions on allocators. Use _M_swap_data.
2116 [__cplusplus >= 201103](vector::insert(const_iterator, _InputIt,
2117 _InputIt)): Use _M_insert_range.
2118 (vector::_M_initialize(size_type)): Adapt.
2119 [__cplusplus >= 201103](vector::_M_initialize_dispatch): Remove.
2120 [__cplusplus >= 201103](vector::_M_insert_dispatch): Remove.
2121 * python/libstdcxx/v6/printers.py (StdVectorPrinter._iterator): Stop
2122 using start _M_offset.
2123 (StdVectorPrinter.to_string): Likewise.
2124 * testsuite/23_containers/vector/bool/allocator/swap.cc: Adapt.
2125 * testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc:
2126 Add check.
2127
2128 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2129
2130 * testsuite/27_io/basic_istream/ignore/char/94749.cc: Use 0
2131 instead of nullptr.
2132 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc:
2133 Likewise.
2134
2135 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2136
2137 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
2138 Move struct to namespace scope.
2139
2140 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2141
2142 * testsuite/26_numerics/numbers/float128.cc: Check
2143 __STRICT_ANSI__ before using __float128.
2144 * testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc:
2145 Likewise.
2146
2147 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2148
2149 * testsuite/18_support/set_terminate.cc: Require C++11 or
2150 higher.
2151 * testsuite/28_regex/simple_c++11.cc: Likewise.
2152 * testsuite/tr1/headers/c++200x/complex.cc: Likewise.
2153 * testsuite/24_iterators/headers/iterator/synopsis.cc:
2154 Require C++14 or lower.
2155
2156 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2157
2158 * testsuite/23_containers/span/back_assert_neg.cc: Split c++2a
2159 effective-target from xfail selector.
2160 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
2161 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
2162 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
2163 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
2164 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
2165 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
2166 * testsuite/23_containers/span/subspan_2_assert_neg.cc:
2167 Likewise.
2168 * testsuite/23_containers/span/subspan_3_assert_neg.cc:
2169 Likewise.
2170 * testsuite/23_containers/span/subspan_4_assert_neg.cc:
2171 Likewise.
2172 * testsuite/23_containers/span/subspan_5_assert_neg.cc:
2173 Likewise.
2174 * testsuite/23_containers/span/subspan_6_assert_neg.cc:
2175 Likewise.
2176 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
2177
2178 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2179
2180 * testsuite/20_util/reference_wrapper/83427.cc: Adjust
2181 effective-target to specific language mode only.
2182 * testsuite/24_iterators/headers/iterator/range_access_c++11.cc:
2183 Likewise.
2184 * testsuite/24_iterators/headers/iterator/range_access_c++14.cc:
2185 Likewise.
2186 * testsuite/24_iterators/headers/iterator/synopsis_c++11.cc:
2187 Likewise.
2188 * testsuite/24_iterators/headers/iterator/synopsis_c++14.cc:
2189 Likewise.
2190 * testsuite/26_numerics/valarray/69116.cc:
2191 Likewise.
2192 * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
2193 Remove whitespace at end of file.
2194 * testsuite/30_threads/headers/future/std_c++0x_neg.cc:
2195 Likewise.
2196
2197 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2198
2199 * testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
2200 c++17 effective-target.
2201 * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc:
2202 Likewise.
2203 * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: Likewise.
2204 * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc:
2205 Likewise.
2206 * testsuite/17_intro/headers/c++2017/operator_names.cc:
2207 Likewise.
2208 * testsuite/17_intro/headers/c++2017/stdc++.cc: Likewise.
2209 * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
2210 Likewise.
2211 * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
2212 Likewise.
2213 * testsuite/19_diagnostics/error_code/is_error_code_v.cc:
2214 Likewise.
2215 * testsuite/20_util/any/assign/1.cc: Likewise.
2216 * testsuite/20_util/any/assign/2.cc: Likewise.
2217 * testsuite/20_util/any/assign/emplace.cc: Likewise.
2218 * testsuite/20_util/any/assign/exception.cc: Likewise.
2219 * testsuite/20_util/any/assign/self.cc: Likewise.
2220 * testsuite/20_util/any/cons/1.cc: Likewise.
2221 * testsuite/20_util/any/cons/2.cc: Likewise.
2222 * testsuite/20_util/any/cons/aligned.cc: Likewise.
2223 * testsuite/20_util/any/cons/explicit.cc: Likewise.
2224 * testsuite/20_util/any/cons/in_place.cc: Likewise.
2225 * testsuite/20_util/any/cons/nontrivial.cc: Likewise.
2226 * testsuite/20_util/any/make_any.cc: Likewise.
2227 * testsuite/20_util/any/misc/any_cast.cc: Likewise.
2228 * testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise.
2229 * testsuite/20_util/any/misc/swap.cc: Likewise.
2230 * testsuite/20_util/any/modifiers/1.cc: Likewise.
2231 * testsuite/20_util/any/observers/type.cc: Likewise.
2232 * testsuite/20_util/any/requirements.cc: Likewise.
2233 * testsuite/20_util/any/typedefs.cc: Likewise.
2234 * testsuite/20_util/as_const/1.cc: Likewise.
2235 * testsuite/20_util/as_const/rvalue_neg.cc: Likewise.
2236 * testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
2237 * testsuite/20_util/bool_constant/requirements.cc: Likewise.
2238 * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
2239 Likewise.
2240 * testsuite/20_util/duration_cast/rounding.cc: Likewise.
2241 * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
2242 Likewise.
2243 * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
2244 * testsuite/20_util/function_objects/not_fn/1.cc: Likewise.
2245 * testsuite/20_util/function_objects/searchers.cc: Likewise.
2246 * testsuite/20_util/in_place/requirements.cc: Likewise.
2247 * testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc:
2248 Likewise.
2249 * testsuite/20_util/is_invocable/requirements/typedefs.cc:
2250 Likewise.
2251 * testsuite/20_util/is_invocable/value.cc: Likewise.
2252 * testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc:
2253 Likewise.
2254 * testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc:
2255 Likewise.
2256 * testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc:
2257 Likewise.
2258 * testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
2259 Likewise.
2260 * testsuite/20_util/is_nothrow_swappable/value.cc: Likewise.
2261 * testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc:
2262 Likewise.
2263 * testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc:
2264 Likewise.
2265 * testsuite/20_util/is_nothrow_swappable_with/value.cc:
2266 Likewise.
2267 * testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc:
2268 Likewise.
2269 * testsuite/20_util/is_swappable/requirements/typedefs.cc:
2270 Likewise.
2271 * testsuite/20_util/is_swappable/value.cc: Likewise.
2272 * testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc:
2273 Likewise.
2274 * testsuite/20_util/is_swappable_with/requirements/typedefs.cc:
2275 Likewise.
2276 * testsuite/20_util/is_swappable_with/value.cc: Likewise.
2277 * testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc:
2278 Likewise.
2279 * testsuite/20_util/logical_traits/requirements/typedefs.cc:
2280 Likewise.
2281 * testsuite/20_util/logical_traits/value.cc: Likewise.
2282 * testsuite/20_util/optional/constexpr/make_optional.cc: Likewise.
2283 * testsuite/20_util/optional/constexpr/observers/2.cc: Likewise.
2284 * testsuite/20_util/optional/constexpr/observers/3.cc: Likewise.
2285 * testsuite/20_util/optional/hash.cc: Likewise.
2286 * testsuite/20_util/pair/swap_cxx17.cc: Likewise.
2287 * testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise.
2288 * testsuite/20_util/shared_ptr/requirements/weak_type.cc:
2289 Likewise.
2290 * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
2291 Likewise.
2292 * testsuite/20_util/tuple/apply/1.cc: Likewise.
2293 * testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.
2294 * testsuite/20_util/tuple/swap_cxx17.cc: Likewise.
2295 * testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
2296 * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
2297 Likewise.
2298 * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
2299 Likewise.
2300 * testsuite/20_util/variant/any.cc: Likewise.
2301 * testsuite/20_util/variant/compile.cc: Likewise.
2302 * testsuite/20_util/variant/hash.cc: Likewise.
2303 * testsuite/20_util/variant/index_type.cc: Likewise.
2304 * testsuite/20_util/variant/run.cc: Likewise.
2305 * testsuite/20_util/void_t/1.cc: Likewise.
2306 * testsuite/21_strings/basic_string/79162.cc: Likewise.
2307 * testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
2308 * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
2309 * testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
2310 * testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
2311 * testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
2312 Likewise.
2313 * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
2314 Likewise.
2315 * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
2316 Likewise.
2317 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
2318 Likewise.
2319 * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
2320 Likewise.
2321 * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
2322 Likewise.
2323 * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
2324 Likewise.
2325 * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
2326 Likewise.
2327 * testsuite/21_strings/basic_string/operations/compare/char/2.cc:
2328 Likewise.
2329 * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
2330 Likewise.
2331 * testsuite/21_strings/basic_string/operations/data/char/2.cc:
2332 Likewise.
2333 * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc:
2334 Likewise.
2335 * testsuite/21_strings/basic_string/operations/find/char/5.cc:
2336 Likewise.
2337 * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
2338 Likewise.
2339 * testsuite/21_strings/basic_string/operators/char/5.cc: Likewise.
2340 * testsuite/21_strings/basic_string/operators/wchar_t/5.cc:
2341 Likewise.
2342 * testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise.
2343 * testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise.
2344 * testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise.
2345 * testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise.
2346 * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc:
2347 Likewise.
2348 * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc:
2349 Likewise.
2350 * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc:
2351 Likewise.
2352 * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
2353 Likewise.
2354 * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
2355 Likewise.
2356 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
2357 Likewise.
2358 * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
2359 Likewise.
2360 * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
2361 Likewise.
2362 * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
2363 Likewise.
2364 * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
2365 Likewise.
2366 * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
2367 Likewise.
2368 * testsuite/21_strings/basic_string_view/include.cc: Likewise.
2369 * testsuite/21_strings/basic_string_view/inserters/char/1.cc:
2370 Likewise.
2371 * testsuite/21_strings/basic_string_view/inserters/char/2.cc:
2372 Likewise.
2373 * testsuite/21_strings/basic_string_view/inserters/char/3.cc:
2374 Likewise.
2375 * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
2376 Likewise.
2377 * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
2378 Likewise.
2379 * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
2380 Likewise.
2381 * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
2382 Likewise.
2383 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
2384 Likewise.
2385 * testsuite/21_strings/basic_string_view/literals/types.cc:
2386 Likewise.
2387 * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
2388 Likewise.
2389 * testsuite/21_strings/basic_string_view/literals/values.cc:
2390 Likewise.
2391 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
2392 Likewise.
2393 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
2394 Likewise.
2395 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
2396 Likewise.
2397 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
2398 Likewise.
2399 * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
2400 Likewise.
2401 * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
2402 Likewise.
2403 * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
2404 Likewise.
2405 * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
2406 Likewise.
2407 * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
2408 Likewise.
2409 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
2410 Likewise.
2411 * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
2412 Likewise.
2413 * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
2414 Likewise.
2415 * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
2416 Likewise.
2417 * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
2418 Likewise.
2419 * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
2420 Likewise.
2421 * testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
2422 Likewise.
2423 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
2424 Likewise.
2425 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
2426 Likewise.
2427 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
2428 Likewise.
2429 * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
2430 Likewise.
2431 * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
2432 Likewise.
2433 * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
2434 Likewise.
2435 * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
2436 Likewise.
2437 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
2438 Likewise.
2439 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
2440 Likewise.
2441 * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
2442 Likewise.
2443 * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
2444 Likewise.
2445 * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
2446 Likewise.
2447 * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
2448 Likewise.
2449 * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
2450 Likewise.
2451 * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
2452 Likewise.
2453 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
2454 Likewise.
2455 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
2456 Likewise.
2457 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
2458 Likewise.
2459 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
2460 Likewise.
2461 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
2462 Likewise.
2463 * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
2464 Likewise.
2465 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
2466 Likewise.
2467 * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
2468 * testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
2469 * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
2470 Likewise.
2471 * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
2472 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
2473 Likewise.
2474 * testsuite/23_containers/map/modifiers/merge.cc: Likewise.
2475 * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
2476 * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
2477 * testsuite/23_containers/multimap/modifiers/merge.cc: Likewise.
2478 * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
2479 * testsuite/23_containers/multiset/modifiers/merge.cc: Likewise.
2480 * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
2481 * testsuite/23_containers/set/modifiers/merge.cc: Likewise.
2482 * testsuite/23_containers/unordered_map/modifiers/extract.cc:
2483 Likewise.
2484 * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
2485 Likewise.
2486 * testsuite/23_containers/unordered_map/modifiers/merge.cc:
2487 Likewise.
2488 * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
2489 Likewise.
2490 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
2491 Likewise.
2492 * testsuite/23_containers/unordered_multimap/modifiers/merge.cc:
2493 Likewise.
2494 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
2495 Likewise.
2496 * testsuite/23_containers/unordered_multiset/modifiers/merge.cc:
2497 Likewise.
2498 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
2499 Likewise.
2500 * testsuite/23_containers/unordered_set/modifiers/merge.cc:
2501 Likewise.
2502 * testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
2503 Likewise.
2504 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc:
2505 Likewise.
2506 * testsuite/25_algorithms/clamp/1.cc: Likewise.
2507 * testsuite/25_algorithms/clamp/2.cc: Likewise.
2508 * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
2509 * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc:
2510 Likewise.
2511 * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc:
2512 Likewise.
2513 * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc:
2514 Likewise.
2515 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
2516 Likewise.
2517 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc:
2518 Likewise.
2519 * testsuite/29_atomics/atomic/is_always_lock_free.cc: Likewise.
2520 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
2521 Likewise.
2522 * testsuite/30_threads/shared_lock/70766.cc: Likewise.
2523 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
2524 * testsuite/30_threads/shared_mutex/cons/assign_neg.cc:
2525 Likewise.
2526 * testsuite/30_threads/shared_mutex/cons/copy_neg.cc:
2527 Likewise.
2528 * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
2529 Likewise.
2530 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
2531 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
2532 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
2533
2534 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2535
2536 PR libstdc++/96382
2537 * include/bits/stl_iterator.h (reverse_iterator): Friend
2538 declaration should not depend on __cplusplus.
2539
2540 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2541
2542 * testsuite/experimental/filesystem/filesystem_error/cons.cc:
2543 Remove -std=gnu++17 option.
2544
2545 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2546
2547 * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to
2548 definition of aggregates in C++20.
2549 * testsuite/20_util/optional/requirements.cc: Adjust for
2550 defaulted comparisons in C++20.
2551
2552 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2553
2554 * testsuite/20_util/tuple/78939.cc: Suppress warnings about
2555 deprecation of volatile-qualified structured bindings in C++20.
2556 * testsuite/20_util/variable_templates_for_traits.cc: Likewise
2557 for deprecation of is_pod in C++20
2558
2559 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2560
2561 * testsuite/20_util/time_point_cast/rounding.cc: Remove
2562 duplicate dg-do directive and add c++17 effective target.
2563
2564 2020-07-31 Jonathan Wakely <jwakely@redhat.com>
2565
2566 * src/c++17/floating_from_chars.cc (from_chars_impl): Use
2567 LC_ALL_MASK not LC_ALL.
2568
2569 2020-07-31 Richard Biener <rguenther@suse.de>
2570
2571 PR debug/96383
2572 * testsuite/20_util/assume_aligned/3.cc: Use -g0.
2573
2574 2020-07-30 Jonathan Wakely <jwakely@redhat.com>
2575
2576 * include/bits/basic_string.h (size_type, difference_type):
2577 Use allocator_traits to obtain the allocator's size_type and
2578 difference_type.
2579
2580 2020-07-30 Jonathan Wakely <jwakely@redhat.com>
2581
2582 PR libstdc++/96279
2583 * src/c++17/floating_from_chars.cc (from_chars_impl): Use
2584 isinf unqualified.
2585 [!_GLIBCXX_USE_C99_STDLIB]: Use strtod for float and long
2586 double.
2587
2588 2020-07-30 Jonathan Wakely <jwakely@redhat.com>
2589
2590 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
2591 Use allocator with the correct value type.
2592 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
2593 Likewise.
2594
2595 2020-07-30 Jonathan Wakely <jwakely@redhat.com>
2596
2597 * testsuite/20_util/from_chars/4.cc: Pass non-const iterator
2598 to string::insert.
2599
2600 2020-07-30 Jonathan Wakely <jwakely@redhat.com>
2601
2602 * include/bits/iterator_concepts.h (__detail::__cv_bool): New
2603 helper concept.
2604 (__detail::__integral_nonbool): Likewise.
2605 (__detail::__is_integer_like): Use __integral_nonbool.
2606 * testsuite/std/ranges/access/lwg3467.cc: New test.
2607
2608 2020-07-30 Jonathan Wakely <jwakely@redhat.com>
2609
2610 * testsuite/20_util/from_chars/4.cc: Use dg-add-options ieee.
2611 * testsuite/29_atomics/atomic_float/1.cc: Likewise.
2612
2613 2020-07-30 Jonathan Wakely <jwakely@redhat.com>
2614
2615 * testsuite/23_containers/vector/bool/72847.cc: Use the
2616 exceptions_enabled effective-target keyword instead of
2617 checking for an explicit -fno-exceptions option.
2618 * testsuite/util/testsuite_abi.cc (examine_symbol): Remove
2619 redundant try-catch.
2620 * testsuite/util/testsuite_allocator.h [!__cpp_exceptions]:
2621 Do not define check_allocate_max_size and memory_resource.
2622 * testsuite/util/testsuite_containers.h: Replace comment with
2623 #error if wrong standard dialect used.
2624 * testsuite/util/testsuite_shared.cc: Likewise.
2625
2626 2020-07-29 François Dumont <fdumont@gcc.gnu.org>
2627
2628 * include/bits/hashtable_policy.h (_Node_iterator_base()): New.
2629 (operator==(const _Node_iterator_base&, const _Node_iterator_base&)):
2630 Make hidden friend.
2631 (operator!=(const _Node_iterator_base&, const _Node_iterator_base&)):
2632 Make hidden friend.
2633 (_Local_iterator_base<>): Inherits _Node_iterator_base.
2634 (_Local_iterator_base<>::_M_cur): Remove.
2635 (_Local_iterator_base<>::_M_curr()): Remove.
2636 (operator==(const _Local_iterator_base&, const _Local_iterator_base&)):
2637 Remove.
2638 (operator!=(const _Local_iterator_base&, const _Local_iterator_base&)):
2639 Remove.
2640 * include/debug/unordered_map (unordered_map<>::_M_invalidate): Adapt.
2641 (unordered_multimap<>::_M_invalidate): Adapt.
2642 * include/debug/unordered_set (unordered_set<>::_M_invalidate): Adapt.
2643 (unordered_multiset<>::_M_invalidate): Adapt.
2644
2645 2020-07-29 David Edelsohn <dje.gcc@gmail.com>
2646 Jonathan Wakely <jwakely@redhat.com>
2647 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2648
2649 * testsuite/lib/dg-options.exp (add_options_for_libatomic): Add
2650 target powerpc-ibm-aix* and powerpc*-*-darwin*.
2651 * testsuite/29_atomics/atomic_float/value_init.cc: Add options
2652 for libatomic.
2653
2654 2020-07-29 François Dumont <fdumont@gcc.gnu.org>
2655
2656 * include/bits/hashtable.h
2657 (_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
2658 Add noexcept qualification.
2659 (_Hashtable(_Hashtable&&)): Fix noexcept qualification.
2660 (_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
2661 qualification.
2662 * include/bits/unordered_map.h
2663 (unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
2664 qualification.
2665 (unordered_multimap(unordered_multimap&&, const allocator_type&)):
2666 Likewise.
2667 * include/bits/unordered_set.h
2668 (unordered_set(unordered_set&&, const allocator_type&)): Likewise.
2669 (unordered_multiset(unordered_multiset&&, const allocator_type&)):
2670 Likewise.
2671 * include/debug/unordered_map
2672 (unordered_map(unordered_map&&, const allocator_type&)): Likewise.
2673 (unordered_multimap(unordered_multimap&&, const allocator_type&)):
2674 Likewise.
2675 * include/debug/unordered_set
2676 (unordered_set(unordered_set&&, const allocator_type&)): Likewise.
2677 (unordered_multiset(unordered_multiset&&, const allocator_type&)):
2678 Likewise.
2679 * testsuite/23_containers/unordered_map/allocator/default_init.cc:
2680 New test.
2681 * testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
2682 New test.
2683 * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
2684 New test.
2685 * testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
2686 New test.
2687 * testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
2688 New test.
2689 * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
2690 New test.
2691 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
2692 New test.
2693 * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
2694 New test.
2695 * testsuite/23_containers/unordered_set/allocator/default_init.cc:
2696 New test.
2697 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
2698 New test.
2699 * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
2700 New test.
2701
2702 2020-07-28 François Dumont <fdumont@gcc.gnu.org>
2703
2704 * include/bits/hashtable.h
2705 (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
2706 const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
2707 const allocator_type&, true_type)): New.
2708 (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
2709 const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
2710 const allocator_type&, false_type)): New.
2711 (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
2712 const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
2713 const allocator_type&)): Delegate to latters.
2714 (operator=(initializer_list<value_type>)): Rehash if too small.
2715 (_M_insert(_Arg&&, const _NodeGenerator&, true_type)): Remove
2716 size_t len parameter.
2717 * include/bits/hashtable_policy.h (_Insert_base<>::_M_insert_range):
2718 Do not try to get input range distance.
2719 * testsuite/23_containers/unordered_set/cons/bucket_hint.cc: New test.
2720 * testsuite/23_containers/unordered_set/modifiers/insert.cc: New test.
2721
2722 2020-07-27 François Dumont <fdumont@gcc.gnu.org>
2723
2724 * include/bits/hashtable_policy.h (_Map_base<>::at): Use
2725 _Hashtable<>::find.
2726 (_Hashtable_base<>::_Equal_hash_code<>::_S_node_equals):New.
2727 (_Hashtable_base<>::_M_node_equals): New, use latter.
2728 (_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
2729 _RehashPolicy, false>::_M_equal): Adapt to use latter.
2730 * include/bits/hashtable.h (_Hashtable<>::_M_update_bbegin): New.
2731 (_Hashtable<>::_M_assign): Use latter.
2732 (_Hashtable<>::_M_move_assign): Likewise.
2733 (_Hashtable<>(_Hashtable<>&&)): Likewise.
2734 (_Hashtable<>(_Hashtable<>&&, const allocator_type&)): Likewise.
2735 (_Hashtable<>::swap): Likewise.
2736 (_Hashtable<>::find): Build iterator directly from _M_find_node result.
2737 (_Hashtable<>::count): Use _Hashtable<>::find.
2738 (_Hashtable<>::equal_range): Likewise.
2739 (_Hashtable<>::_M_erase(false_type, const key_type&)): Use
2740 _M_node_equals.
2741
2742 2020-07-27 Jonathan Wakely <jwakely@redhat.com>
2743
2744 * src/c++17/floating_from_chars.cc (from_chars_impl): Ensure
2745 that FE_NEAREST is used.
2746 * testsuite/20_util/from_chars/4.cc: Do not use if constexpr in
2747 a { target c++14 } test.
2748 [!_GLIBCXX_HAVE_USELOCALE]: Disable all tests.
2749 * testsuite/20_util/from_chars/5.cc [!_GLIBCXX_HAVE_USELOCALE]:
2750 Likewise.
2751 * testsuite/20_util/from_chars/6.cc: New test.
2752
2753 2020-07-22 Jonathan Wakely <jwakely@redhat.com>
2754
2755 * include/std/future (future, shared_future, promise): Add
2756 static assertions to the primary template to reject array and
2757 function types.
2758 * testsuite/30_threads/future/requirements/lwg3458.cc: New test.
2759 * testsuite/30_threads/promise/requirements/lwg3466.cc: New test.
2760 * testsuite/30_threads/shared_future/requirements/lwg3458.cc: New test.
2761
2762 2020-07-22 Jonathan Wakely <jwakely@redhat.com>
2763
2764 * include/bits/stl_iterator.h (reverse_iterator): Constrain
2765 converting constructor and converting assignment operator.
2766 Access source iterator's data member directly instead of
2767 calling base().
2768 (move_iterator): Likewise.
2769 * testsuite/24_iterators/move_iterator/dr3435.cc: New test.
2770 * testsuite/24_iterators/reverse_iterator/dr3435.cc: New test.
2771
2772 2020-07-20 Jonathan Wakely <jwakely@redhat.com>
2773
2774 * acinclude.m4 (libtool_VERSION): Bump version.
2775 * config.h.in: Regenerate.
2776 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.29 version and new
2777 exports.
2778 * config/os/gnu-linux/ldbl-extra.ver: Add _GLIBCXX_LDBL_3.4.29
2779 version and new export.
2780 * configure: Regenerate.
2781 * configure.ac: Check for <xlocale.h> and uselocale.
2782 * crossconfig.m4: Add macro or checks for uselocale.
2783 * include/std/charconv (from_chars): Declare overloads for
2784 float, double, and long double.
2785 * src/c++17/Makefile.am: Add new file.
2786 * src/c++17/Makefile.in: Regenerate.
2787 * src/c++17/floating_from_chars.cc: New file.
2788 (from_chars): Define for float, double, and long double.
2789 * testsuite/20_util/from_chars/1_c++20_neg.cc: Prune extra
2790 diagnostics caused by new overloads.
2791 * testsuite/20_util/from_chars/1_neg.cc: Likewise.
2792 * testsuite/20_util/from_chars/2.cc: Check leading '+'.
2793 * testsuite/20_util/from_chars/4.cc: New test.
2794 * testsuite/20_util/from_chars/5.cc: New test.
2795 * testsuite/util/testsuite_abi.cc: Add new symbol versions.
2796
2797 2020-07-20 Jonathan Wakely <jwakely@redhat.com>
2798
2799 * include/bits/istream.tcc
2800 (basic_istream::get(__streambuf_type&, char_type): Use unsigned
2801 long long for counter and check if it would overflow _M_gcount.
2802 * testsuite/27_io/basic_istream/get/char/lwg3464.cc: New test.
2803 * testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: New test.
2804
2805 2020-07-17 Iain Sandoe <iain@sandoe.co.uk>
2806
2807 * include/std/coroutine: Mark the methods of the
2808 trivial awaitables as constexpr.
2809
2810 2020-07-14 David Edelsohn <dje.gcc@gmail.com>
2811
2812 * config/os/aix/t-aix: Set BITS from compiler cpp macro.
2813
2814 2020-07-13 Jonathan Wakely <jwakely@redhat.com>
2815
2816 PR libstdc++/94749
2817 PR libstdc++/96161
2818 * include/bits/istream.tcc (basic_istream::ignore(streamsize))
2819 [n == max]: Check overflow conditions on _M_gcount. Rely on
2820 the fact that either EOF or the delimiter was reached.
2821 [n < max]: Check _M_gcount < n before checking for EOF or
2822 delimiter.
2823 (basic_istream::ignore(streamsize, char_type): Likewise.
2824 * src/c++98/compatibility.cc (istream::ignore(streamsize))
2825 (wistream::ignore(streamsize)): Likewise.
2826 * src/c++98/istream.cc (istream::ignore(streamsize, char_type))
2827 (wistream::ignore(streamsize, char_type)): Likewise.
2828 * testsuite/27_io/basic_istream/ignore/char/94749.cc: Check that
2829 delimiter is discarded if the number of characters ignored
2830 doesn't fit in streamsize.
2831 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc:
2832 Likewise.
2833 * testsuite/27_io/basic_istream/ignore/char/96161.cc: New test.
2834 * testsuite/27_io/basic_istream/ignore/wchar_t/96161.cc: New test.
2835
2836 2020-07-08 François Dumont <fdumont@gcc.gnu.org>
2837
2838 * include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept
2839 qualification based only on _Compare one.
2840 * testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add
2841 static asserts.
2842 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
2843 Likewise.
2844 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
2845 Likewise.
2846 * testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise.
2847
2848 2020-07-07 Jonathan Wakely <jwakely@redhat.com>
2849
2850 * include/std/limits: Whitespace changes.
2851
2852 2020-07-07 Jonathan Wakely <jwakely@redhat.com>
2853
2854 * include/Makefile.am: Remove bits/int_limits.h.
2855 * include/Makefile.in: Regenerate.
2856 * include/bits/int_limits.h: Removed.
2857 * include/bits/parse_numbers.h (_Select_int_base): Replace
2858 __int_limits with __int_traits.
2859 * include/bits/range_access.h (_SSize::operator()): Likewise.
2860 * include/ext/numeric_traits.h (__numeric_traits_integer): Add
2861 static assertion.
2862 (__int_traits): New alias template.
2863 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
2864 (__countr_zero, __countr_one, __popcount, __bit_ceil)
2865 (__bit_floor, __bit_width) Replace __int_limits with
2866 __int_traits.
2867 * include/std/charconv (__to_chars_8, __from_chars_binary)
2868 (__from_chars_alpha_to_num, from_chars): Likewise.
2869 * include/std/memory_resource (polymorphic_allocator::allocate)
2870 (polymorphic_allocator::allocate_object): Likewise.
2871 * include/std/string_view (basic_string_view::_S_compare):
2872 Likewise.
2873 * include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
2874
2875 2020-07-07 Jonathan Wakely <jwakely@redhat.com>
2876
2877 * include/std/limits: Whitespace changes.
2878
2879 2020-07-06 Jonathan Wakely <jwakely@redhat.com>
2880
2881 * include/std/optional (_Optional_payload_base, _Optional_base)
2882 (optional, __optional_hash_call_base): Adjust whitespace and
2883 other formatting. Remove redundant && tokens on template
2884 arguments to type traits.
2885
2886 2020-07-06 Jonathan Wakely <jwakely@redhat.com>
2887
2888 * include/std/optional (make_optional): Add enable_if
2889 constraints and noexcept-specifier to each overload.
2890 * testsuite/20_util/optional/make_optional-2.cc: New test.
2891
2892 2020-07-06 Jonathan Wakely <jwakely@redhat.com>
2893
2894 PR libstdc++/96036
2895 * include/std/optional (optional): Add noexcept-specifier to
2896 every constructor, assignment operator, emplace function and
2897 dereference operator.
2898 * testsuite/20_util/optional/assignment/noexcept.cc: New test.
2899 * testsuite/20_util/optional/cons/noexcept.cc: New test.
2900
2901 2020-07-06 Jonathan Wakely <jwakely@redhat.com>
2902
2903 PR libstdc++/96063
2904 * include/bits/fs_dir.h: Use consistent tag in class-head.
2905 * include/bits/localefwd.h: Likewise.
2906 * include/bits/regex.h: Likewise.
2907 * include/bits/stl_map.h: Likewise.
2908 * include/bits/stl_multimap.h: Likewise.
2909 * include/bits/stl_multiset.h: Likewise.
2910 * include/bits/stl_set.h: Likewise.
2911 * include/std/complex: Likewise.
2912 * include/std/functional: Likewise.
2913 * include/std/future: Likewise.
2914 * include/std/system_error: Likewise.
2915 * include/std/thread: Likewise.
2916 * include/std/tuple: Likewise.
2917 * include/std/type_traits: Likewise.
2918 * include/std/valarray: Likewise.
2919
2920 2020-07-02 Jonathan Wakely <jwakely@redhat.com>
2921
2922 * testsuite/27_io/basic_ios/conv/voidptr.cc: Add c++98_only
2923 target selector.
2924
2925 2020-07-02 Jonathan Wakely <jwakely@redhat.com>
2926
2927 * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: Add
2928 c++98_only target selector.
2929 * testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc:
2930 Likewise.
2931 * testsuite/18_support/headers/cstdint/std_c++0x_neg.cc:
2932 Likewise.
2933 * testsuite/18_support/headers/new/synopsis_cxx98.cc: Likewise.
2934 * testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc:
2935 Likewise.
2936 * testsuite/20_util/headers/type_traits/std_c++0x_neg.cc:
2937 Likewise.
2938 * testsuite/23_containers/headers/array/std_c++0x_neg.cc:
2939 Likewise.
2940 * testsuite/23_containers/headers/tuple/std_c++0x_neg.cc:
2941 Likewise.
2942 * testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc:
2943 Likewise.
2944 * testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc:
2945 Likewise.
2946 * testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc:
2947 Likewise.
2948 * testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc:
2949 Likewise.
2950 * testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc:
2951 Likewise.
2952 * testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc:
2953 Likewise.
2954 * testsuite/26_numerics/headers/random/std_c++0x_neg.cc:
2955 Likewise.
2956 * testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Likewise.
2957 * testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Likewise.
2958 * testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc:
2959 Likewise.
2960 * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
2961 Likewise.
2962 * testsuite/30_threads/headers/future/std_c++0x_neg.cc:
2963 Likewise.
2964 * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: Likewise.
2965 * testsuite/30_threads/headers/thread/std_c++0x_neg.cc:
2966 Likewise.
2967
2968 2020-07-02 Ville Voutilainen <ville.voutilainen@gmail.com>
2969
2970 PR libstdc++/91807
2971 * include/std/variant
2972 (_Copy_assign_base::operator=(const _Copy_assign_base&):
2973 Do the move-assignment from a temporary so that the temporary
2974 is constructed with an explicit index.
2975 * testsuite/20_util/variant/91807.cc: New.
2976
2977 2020-07-02 Jonathan Wakely <jwakely.gcc@gmail.com>
2978
2979 PR libstdc++/91153
2980 PR target/93224
2981 * testsuite/29_atomics/atomic_float/1.cc: Use different values
2982 for tests.
2983 * testsuite/29_atomics/atomic_ref/float.cc: Likewise.
2984
2985 2020-07-01 Jonathan Wakely <jwakely@redhat.com>
2986
2987 PR libstdc++/94627
2988 * include/bits/regex.h (operator==, operator!=): Remove noexcept
2989 equality comparisons for match_results.
2990 * testsuite/28_regex/match_results/94627.cc: New test.
2991
2992 2020-07-01 Martin Sebor <msebor@redhat.com>
2993
2994 * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: Adjust
2995 text of expected warning.
2996 * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc: Same.
2997 * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: Same.
2998 * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: Same.
2999 * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: Same.
3000
3001 2020-06-29 Ville Voutilainen <ville.voutilainen@gmail.com>
3002
3003 Revert:
3004 2020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com>
3005
3006 * include/bits/basic_string.h (string(_CharT*, const _Alloc&)):
3007 Add a __nonnull__ attribute.
3008 * testsuite/21_strings/basic_string/cons/char/nonnull.cc: New.
3009 * testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise.
3010
3011 2020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com>
3012
3013 * include/bits/basic_string.h (string(_CharT*, const _Alloc&)):
3014 Add a __nonnull__ attribute.
3015 * testsuite/21_strings/basic_string/cons/char/nonnull.cc: New.
3016 * testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise.
3017
3018 2020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com>
3019
3020 PR libstdc++/95915
3021 * include/std/type_traits (is_literal_type, is_literal_type_v):
3022 Deprecate in C++17.
3023 * include/std/variant (_Uninitialized):
3024 Adjust the condition and the comment.
3025 * testsuite/20_util/is_literal_type/deprecated-1z.cc: New.
3026 * testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc:
3027 Adjust.
3028 * testsuite/20_util/is_literal_type/requirements/typedefs.cc: Likewise.
3029 * testsuite/20_util/is_literal_type/value.cc: Likewise.
3030 * testsuite/20_util/optional/constexpr/nullopt.cc:
3031 Use __is_literal_type directly.
3032 * testsuite/20_util/optional/nullopt.cc: Likewise.
3033 * testsuite/20_util/variable_templates_for_traits.cc: Adjust.
3034 * testsuite/20_util/variant/95915.cc: New.
3035 * testsuite/20_util/variant/compile.cc: Add new test.
3036 * testsuite/experimental/optional/constexpr/nullopt.cc:
3037 Use __is_literal_type directly.
3038 * testsuite/experimental/optional/nullopt.cc: Likewise.
3039 * testsuite/experimental/type_traits/value.cc: Adjust.
3040 * testsuite/util/testsuite_common_types.h:
3041 Use __is_literal_type directly.
3042
3043 2020-06-24 Jonathan Wakely <jwakely@redhat.com>
3044
3045 * include/std/charconv (__from_chars_binary): Ignore leading zeros.
3046 * testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases,
3047 not just 10 and 16.
3048 * testsuite/20_util/from_chars/3.cc: New test.
3049
3050 2020-06-24 Jonathan Wakely <jwakely@redhat.com>
3051
3052 * include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers.
3053 * include/std/charconv (__detail::__to_chars): Avoid
3054 -Wsign-compare warning.
3055
3056 2020-06-24 Jonathan Wakely <jwakely@redhat.com>
3057
3058 PR libstdc++/95851
3059 * include/std/charconv (__to_chars_i): Check for zero-sized
3060 buffer unconditionally.
3061 * testsuite/20_util/to_chars/95851.cc: New test.
3062
3063 2020-06-23 Jonathan Wakely <jwakely@redhat.com>
3064
3065 * testsuite/20_util/from_chars/1_c++20_neg.cc: Check enumeration
3066 type.
3067 * testsuite/20_util/from_chars/1_neg.cc: Likewise. Move dg-error
3068 directives outside preprocessor condition.
3069
3070 2020-06-23 Jonathan Wakely <jwakely@redhat.com>
3071
3072 PR libstdc++/95832
3073 * include/std/variant (__detail::__variant::_Build_FUN): Remove
3074 partial specialization to prevent narrowing conversions to bool.
3075 * testsuite/20_util/variant/compile.cc: Test non-narrowing
3076 conversions to bool.
3077 * testsuite/20_util/variant/run.cc: Likewise.
3078
3079 2020-06-23 Jonathan Wakely <jwakely@redhat.com>
3080
3081 * doc/Makefile.in: Regenerate.
3082 * include/Makefile.in: Regenerate.
3083 * libsupc++/Makefile.in: Regenerate.
3084 * po/Makefile.in: Regenerate.
3085 * python/Makefile.in: Regenerate.
3086 * src/Makefile.in: Regenerate.
3087 * src/c++11/Makefile.in: Regenerate.
3088 * src/c++17/Makefile.in: Regenerate.
3089 * src/c++98/Makefile.in: Regenerate.
3090 * src/filesystem/Makefile.in: Regenerate.
3091 * testsuite/Makefile.in: Regenerate.
3092
3093 2020-06-22 David Edelsohn <dje.gcc@gmail.com>
3094
3095 * Makefile.am: Use -include.
3096 * Makefile.in: Regenerate.
3097
3098 2020-06-21 David Edelsohn <dje.gcc@gmail.com>
3099
3100 * Makefile.am (tmake_file): Build and install AIX-style FAT libraries.
3101 * Makefile.in: Regenerate.
3102 * configure.ac (tmake_file): Substitute.
3103 * configure: Regenerate.
3104 * configure.host (aix*): Define tmake_file.
3105 * config/os/aix/t-aix: New file.
3106
3107 2020-06-20 Jason Merrill <jason@redhat.com>
3108
3109 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
3110 Remove greedy_ops tests.
3111 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc:
3112 Remove greedy_ops tests.
3113
3114 2020-06-19 Jonathan Wakely <jwakely@redhat.com>
3115
3116 PR libstdc++/95765
3117 * include/bits/stl_algobase.h (__size_to_integer(float))
3118 (__size_to_integer(double), __size_to_integer(long double))
3119 (__size_to_integer(__float128)): Cast return type explicitly.
3120 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
3121 Remove unused typedef.
3122
3123 2020-06-19 Jonathan Wakely <jwakely@redhat.com>
3124
3125 * include/bits/stl_pair.h (_Index_tuple): Remove redundant
3126 namespace qualification.
3127 (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
3128 Likewise.
3129 * include/std/tuple (_Head_base, _Tuple_impl, tuple_size)
3130 (tuple_element, __get_helper, get, __make_tuple_impl)
3131 (__make_1st_indices, __tuple_concater)
3132 (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
3133 Likewise.
3134 * include/std/utility (tuple_element, __is_tuple_like_impl)
3135 (tuple_size, __pair_get, get): Likewise.
3136
3137 2020-06-19 Jonathan Wakely <jwakely@redhat.com>
3138
3139 * include/bits/std_function.h (function): Define all member
3140 functions inline.
3141
3142 2020-06-19 Marc Glisse <marc.glisse@inria.fr>
3143
3144 * include/bits/stl_algo.h (__includes): Simplify the code.
3145
3146 2020-06-19 Marc Glisse <marc.glisse@inria.fr>
3147
3148 * include/std/optional (optional()): Explicitly define it.
3149
3150 2020-06-17 Jonathan Wakely <jwakely@redhat.com>
3151
3152 PR libstdc++/94540
3153 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
3154 Construct the first value at *__first instead of on the stack.
3155 (__uninitialized_default_n_1<true>): Likewise.
3156 Improve comments on several of the non-standard algorithms.
3157 * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc:
3158 New test.
3159 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc:
3160 New test.
3161 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
3162 New test.
3163 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
3164 New test.
3165 * testsuite/23_containers/vector/cons/94540.cc: New test.
3166
3167 2020-06-17 Jonathan Wakely <jwakely@redhat.com>
3168
3169 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
3170 Replace Value type with int so trivial code path is used.
3171 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
3172 Likewise.
3173
3174 2020-06-17 Jonathan Wakely <jwakely@redhat.com>
3175
3176 * include/bits/stl_uninitialized.h (uninitialized_fill_n): Only
3177 use std::fill_n when the size is an integral type.
3178 (__uninitialized_default_n): Likewise.
3179 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
3180 New test.
3181 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
3182 New test.
3183 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
3184 New test.
3185
3186 2020-06-16 Jonathan Wakely <jwakely@redhat.com>
3187
3188 PR libstdc++/95282
3189 * include/bits/atomic_base.h (__atomic_impl::load): Use the _Val
3190 alias instead of deducing _Tp as an unqualified type.
3191 (__atomic_impl::exchange): Use the _Val alias to remove volatile
3192 from the reinterpret_cast result type.
3193
3194 2020-06-16 Jonathan Wakely <jwakely@redhat.com>
3195
3196 * include/std/atomic (atomic): Add static assertions.
3197 * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
3198
3199 2020-06-16 Patrick Palka <ppalka@redhat.com>
3200
3201 PR libstdc++/94003
3202 * testsuite/20_util/is_constructible/94003.cc: New test.
3203
3204 2020-06-15 Jonathan Wakely <jwakely@redhat.com>
3205
3206 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
3207 Update value for C++20.
3208 * include/std/version (__cpp_lib_constexpr_char_traits): Likewise.
3209 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
3210 Update expected value.
3211 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
3212 Likewise.
3213
3214 2020-06-15 Paul Keir <paul.keir@uws.ac.uk>
3215
3216 * include/bits/char_traits.h (char_traits::move): constexpr move with
3217 overlap was using copy_backward incorrectly.
3218 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
3219 New test.
3220
3221 2020-06-12 Jonathan Wakely <jwakely@redhat.com>
3222
3223 * testsuite/29_atomics/atomic_flag/clear/1.cc: Also test clear()
3224 when the value is currently set.
3225 * testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc:
3226 Actually check the return value.
3227 * testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc:
3228 Likewise.
3229
3230 2020-06-12 Jonathan Wakely <jwakely@redhat.com>
3231
3232 * include/bits/atomic_base.h (atomic_flag::test): Add missing
3233 const qualifiers.
3234 * testsuite/29_atomics/atomic_flag/test/explicit.cc: Add
3235 dg-options and verify results of test function.
3236 * testsuite/29_atomics/atomic_flag/test/implicit.cc: Likewise.
3237
3238 2020-06-11 Jonathan Wakely <jwakely@redhat.com>
3239
3240 PR libstdc++/94749
3241 * include/bits/istream.tcc (basic_istream::ignore(streamsize, CharT)):
3242 Only discard an extra character if we didn't already reach the
3243 maximum number.
3244 * src/c++98/istream.cc (istream::ignore(streamsiz, char))
3245 (wistream::ignore(streamsize, wchar_t)): Likewise.
3246 * testsuite/27_io/basic_istream/ignore/char/94749.cc: New test.
3247 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: New test.
3248
3249 2020-06-10 Patrick Palka <ppalka@redhat.com>
3250
3251 PR libstdc++/95578
3252 * include/bits/ranges_algo.h (__lexicographical_compare_fn):
3253 Also check that the iterator and sentinel have the same type before
3254 applying the unwrapping optimization for __normal_iterator.
3255 Split the check into two, one for the first iterator/sentinel
3256 pair and another for second iterator/sentinel pair. Remove uses
3257 of __niter_base, and remove uses of std::move on a
3258 __normal_iterator.
3259 * include/bits/ranges_algobase.h (__equal_fn): Likewise.
3260 (__copy_or_move): Likewise. Perform similar adjustments for
3261 the reverse_iterator and move_iterator optimizations. Inline
3262 the checks into the if-constexprs, and use using-declarations to
3263 make them less visually noisy. Remove uses of __niter_wrap.
3264 (__copy_or_move_backward): Likewise.
3265 * testsuite/25_algorithms/copy/95578.cc: New test.
3266 * testsuite/25_algorithms/copy_backward/95578.cc: New test.
3267 * testsuite/25_algorithms/equal/95578.cc: New test.
3268 * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
3269 * testsuite/25_algorithms/move/95578.cc: New test.
3270 * testsuite/25_algorithms/move_backward/95578.cc: New test.
3271
3272 2020-06-10 François Dumont <fdumont@gcc.gnu.org>
3273 Jonathan Wakely <jwakely@redhat.com>
3274
3275 * include/bits/deque.tcc (__lex_cmp_dit): New.
3276 (__lexicographical_compare_aux1): Define overloads for deque
3277 iterators.
3278 * include/bits/stl_algobase.h (__lexicographical_compare::__3way):
3279 New static member function.
3280 (__lexicographical_compare<true>::__3way): Likewise.
3281 (__lexicographical_compare<true>::__lc): Use __3way.
3282 (__lexicographical_compare_aux): Rename to
3283 __lexicographical_compare_aux1 and declare overloads for deque
3284 iterators.
3285 (__lexicographical_compare_aux): Define new forwarding function
3286 that calls __lexicographical_compare_aux1 and declare new overloads
3287 for safe iterators.
3288 (lexicographical_compare): Do not use __niter_base on
3289 parameters.
3290 * include/debug/safe_iterator.tcc
3291 (__lexicographical_compare_aux): Define overloads for safe
3292 iterators.
3293 * testsuite/25_algorithms/lexicographical_compare/1.cc: Add
3294 checks with random access iterators.
3295 * testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc:
3296 New test.
3297
3298 2020-06-09 Jonathan Wakely <jwakely@redhat.com>
3299
3300 * include/bits/stl_iterator.h (move_iterator::operator=): Define.
3301 * testsuite/24_iterators/move_iterator/dr3265.cc: New test.
3302
3303 2020-06-09 Jonathan Wakely <jwakely@redhat.com>
3304
3305 * include/std/optional (bad_optional_access): Define default
3306 constructor and destructor as defaulted.
3307 * testsuite/20_util/optional/bad_access.cc: New test.
3308
3309 2020-06-08 Jonathan Wakely <jwakely@redhat.com>
3310
3311 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
3312 line number.
3313 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
3314
3315 2020-06-08 Jonathan Wakely <jwakely@redhat.com>
3316
3317 * include/bits/unique_ptr.h (operator<<): Define for C++20.
3318 * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
3319
3320 2020-06-04 Jonathan Wakely <jwakely@redhat.com>
3321
3322 * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
3323 (__detail::__cat, __detail::__diff): Move to class scope in the
3324 relevant __iterator_traits specializations.
3325 (__iterator_traits<>): Use nested class templates instead of ones from
3326 namespace __detail.
3327 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
3328 class scope in iterator_traits<common_iterator<I, S>>.
3329 (iterator_traits<common_iterator<I, S>>): Use nested class template
3330 instead of __detail::__common_iter_ptr.
3331
3332 2020-06-04 François Dumont <fdumont@gcc.gnu.org>
3333
3334 * include/bits/stl_algo.h (__copy_n_a): Move to ...
3335 * include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict
3336 parameter.
3337 (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
3338 Declare.
3339 (__niter_base(const _Safe_iterator<_Ite, _Seq,
3340 random_access_iterator_tag>&)): Declare.
3341 (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
3342 _Deque_iterator<>)): Declare.
3343 * include/bits/deque.tcc
3344 (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
3345 _Deque_iterator<>)): New.
3346 (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
3347 New.
3348 * include/bits/streambuf_iterator.h
3349 (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt.
3350 * include/debug/safe_iterator.tcc (__niter_base): New.
3351 * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
3352 (test03): New.
3353 * testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc:
3354 New test.
3355 * testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc:
3356 New test.
3357 * testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test.
3358 * testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
3359 New test.
3360
3361 2020-06-04 Jonathan Wakely <jwakely@redhat.com>
3362
3363 * include/bits/ranges_algobase.h (__copy_n_fn): Only call
3364 ranges::copy for positive values.
3365 * include/bits/stl_algo.h (copy_n): Convert Size argument to an
3366 integral type and only call __copy_n for positive values.
3367 * testsuite/util/testsuite_iterators.h
3368 (random_access_iterator_wrapper::operator+=): Fix range check for
3369 negative values.
3370 (output_container, input_container, forward_container)
3371 (bidirectional_container, random_access_container): New alias
3372 templates.
3373 * testsuite/25_algorithms/copy_n/5.cc: New test.
3374
3375 2020-06-02 Jonathan Wakely <jwakely@redhat.com>
3376
3377 PR libstdc++/90102
3378 * include/debug/deque (deque(const _Base&)): Replace parameter
3379 with a struct that wraps a const _Base&.
3380 * include/debug/forward_list (forward_list(_Base_ref)): New
3381 constructor.
3382 * include/debug/list (list(const _Base&)): Replace parameter
3383 with a struct that wraps a const _Base&.
3384 * include/debug/map.h (map(const _Base&)): Likewise.
3385 * include/debug/multimap.h (multimap(const _Base&)): Likewise.
3386 * include/debug/multiset.h (multiset(const _Base&)): Likewise.
3387 * include/debug/set.h (set(const _Base&)): Likewise.
3388 * include/debug/unordered_map (unordered_map(const _Base&))
3389 (unordered_multimap(const _Base&)): Likewise.
3390 * include/debug/unordered_set (unordered_set(const _Base&))
3391 (unordered_multiset(const _Base&)): Likewise.
3392 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
3393 Adjust dg-error line number.
3394 * include/debug/vector (vector(const _Base&)): Likewise.
3395 * testsuite/23_containers/deque/debug/90102.cc: New test.
3396 * testsuite/23_containers/forward_list/debug/90102.cc: New test.
3397 * testsuite/23_containers/list/debug/90102.cc: New test.
3398 * testsuite/23_containers/map/debug/90102.cc: New test.
3399 * testsuite/23_containers/multimap/debug/90102.cc: New test.
3400 * testsuite/23_containers/multiset/debug/90102.cc: New test.
3401 * testsuite/23_containers/set/debug/90102.cc: New test.
3402 * testsuite/23_containers/unordered_map/debug/90102.cc: New test.
3403 * testsuite/23_containers/unordered_multimap/debug/90102.cc: New test.
3404 * testsuite/23_containers/unordered_multiset/debug/90102.cc: New test.
3405 * testsuite/23_containers/unordered_set/debug/90102.cc: New test.
3406 * testsuite/23_containers/vector/debug/90102.cc: New test.
3407
3408 2020-06-01 Jonathan Wakely <jwakely@redhat.com>
3409
3410 PR libstdc++/95392
3411 * include/bits/fs_path.h (path::_S_to_string): Move to
3412 namespace-scope and rename to ...
3413 (__detail::__string_from_range): ... this.
3414 [WINDOWS] (__detail::__wstr_from_utf8): New function template to
3415 convert a char sequence containing UTF-8 to wstring.
3416 (path::_S_convert(Iter, Iter)): Adjust call to _S_to_string.
3417 (path::_S_convert_loc(Iter, Iter, const locale&)): Likewise.
3418 (u8path(InputIterator, InputIterator)) [WINDOWS]: Use
3419 __string_from_range to obtain a contiguous range and
3420 __wstr_from_utf8 to obtain a wide string.
3421 (u8path(const Source&)) [WINDOWS]: Use __effective_range to
3422 obtain a contiguous range and __wstr_from_utf8 to obtain a wide
3423 string.
3424 (path::_S_convert(const _EcharT*, const _EcharT)) [WINDOWS]:
3425 Use __wstr_from_utf8.
3426
3427 2020-06-01 Jonathan Wakely <jwakely@redhat.com>
3428
3429 * testsuite/util/testsuite_iterators.h:
3430 (input_iterator_wrapper::operator++(int)): Return proxy object.
3431
3432 2020-06-01 Jonathan Wakely <jwakely@redhat.com>
3433
3434 * doc/xml/manual/evolution.xml: Document deprecation of
3435 __is_nullptr_t and removal of std::allocator members.
3436 * doc/html/manual/api.html: Regenerate.
3437
3438 2020-06-01 Jonathan Wakely <jwakely@redhat.com>
3439
3440 * doc/xml/manual/containers.xml: Replace <xref> with <link>.
3441 * doc/xml/manual/evolution.xml: Likewise.
3442 * doc/html/manual/api.html: Regenerate.
3443 * doc/html/manual/containers.html: Regenerate.
3444
3445 2020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
3446
3447 * doc/xml/faq.xml: Adjust Valgrind reference and remove another.
3448 * doc/html/faq.html: Regenerate.
3449
3450 2020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
3451
3452 * doc/xml/manual/policy_data_structures_biblio.xml: Remove
3453 stray change.
3454
3455 2020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
3456
3457 * doc/xml/manual/policy_data_structures_biblio.xml: Switch
3458 www.cs.princeton.edu to https.
3459 * doc/html/manual/policy_data_structures.html: Regenerate.
3460
3461 2020-05-31 Douglas B Rupp <douglas.b.rupp@gmail.com>
3462
3463 * crossconfig.m4 (<*-vxworks>): Check for more math decls.
3464 * configure: Rebuild.
3465
3466 2020-05-29 H.J. Lu <hjl.tools@gmail.com>
3467
3468 PR bootstrap/95413
3469 * configure: Regenerated.
3470
3471 2020-05-29 François Dumont <fdumont@gcc.gnu.org>
3472
3473 PR libstdc++/95079
3474 * include/bits/hashtable_policy.h (_Insert_base<>::try_emplace): New.
3475 * include/bits/unordered_map.h (unordered_map<>::try_emplace): Adapt.
3476 (unordered_map<>::insert_or_assign): Adapt.
3477
3478 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
3479
3480 PR libstdc++/95282
3481 * include/bits/atomic_base.h (__atomic_impl::load): Add
3482 cv-qualifiers to parameter so that _Tp is deduced as the
3483 unqualified type.
3484 * testsuite/29_atomics/atomic_float/95282.cc: New test.
3485
3486 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
3487
3488 PR libstdc++/95322
3489 * include/std/ranges (transform_view::_Sentinel): Allow hidden
3490 friends to work with _Iterator<true> and _Iterator<false>.
3491 (join_view::_Sentinel): Likewise.
3492 * testsuite/std/ranges/adaptors/95322.cc: New test.
3493
3494 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
3495
3496 PR libstdc++/94354
3497 * include/bits/stl_iterator.h (reverse_iterator): Fix comparison
3498 operators to use the correct operations on the underlying
3499 iterators.
3500 * testsuite/24_iterators/reverse_iterator/rel_ops.cc: New test.
3501
3502 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
3503
3504 * testsuite/18_support/comparisons/categories/zero_neg.cc: New test.
3505
3506 2020-05-26 Patrick Palka <ppalka@redhat.com>
3507
3508 PR libstdc++/95322
3509 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
3510 Remove and instead define it ...
3511 (common_iterator::_Proxy): ... here.
3512 (common_iterator::operator->): Use it.
3513 * testsuite/24_iterators/common_iterator/2.cc: New test.
3514 * testsuite/std/ranges/adaptors/95322.cc: New test.
3515
3516 2020-05-23 Patrick Palka <ppalka@redhat.com>
3517
3518 PR libstdc++/93978
3519 * testsuite/std/ranges/adaptors/93978.cc: Add -Wall to
3520 dg-additional-options. Avoid unused-but-set-variable warning.
3521
3522 2020-05-23 Jonathan Wakely <jwakely@redhat.com>
3523
3524 PR libstdc++/95289
3525 * include/debug/helper_functions.h (__get_distance): Only declare
3526 as a constexpr function for C++14 and up.
3527 * testsuite/25_algorithms/copy/debug/95289.cc: New test.
3528
3529 * include/bits/fs_path.h (__detail::_S_range_begin)
3530 (__detail::_S_range_end, path::_S_string_from_iter): Replace with
3531 overloaded function template __detail::__effective_range.
3532 (__detail::__effective_range): New overloaded function template to
3533 create a basic_string or basic_string_view for an effective range.
3534 (__detail::__value_type_is_char): Use __detail::__effective_range.
3535 Do not use remove_const on value type.
3536 (__detail::__value_type_is_char_or_char8_t): Likewise.
3537 (path::path(const Source&, format))
3538 (path::path(const Source&, const locale&))
3539 (path::operator/=(const Source&), path::append(const Source&))
3540 (path::concat(const Source&)): Use __detail::__effective_range.
3541 (path::_S_to_string(InputIterator, InputIterator)): New function
3542 template to create a string view if possible, or string otherwise.
3543 (path::_S_convert): Add overloads that convert a string returned
3544 by __detail::__effective_range. Use if-constexpr to inline conversion
3545 logic from all overloads of _Cvt::_S_convert.
3546 (path::_S_convert_loc): Add overload that converts a string. Use
3547 _S_to_string to avoid allocation when possible.
3548 (path::_Cvt): Remove.
3549 (path::operator+=(CharT)): Remove indirection through path::concat.
3550 * include/experimental/bits/fs_path.h (path::_S_convert_loc): Add
3551 overload for non-const pointers, to avoid constructing a std::string.
3552 * src/c++17/fs_path.cc (path::_S_convert_loc): Replace conditional
3553 compilation with call to _S_convert.
3554
3555 * include/bits/fs_path.h (__detail::_S_range_begin)
3556 (__detail::_S_range_end): Remove unintentional static specifiers.
3557 * include/experimental/bits/fs_path.h (__detail::_S_range_begin)
3558 (__detail::_S_range_end): Likewise.
3559
3560 * include/bits/fs_path.h (filesystem::__detail::__is_encoded_char):
3561 Replace alias template with variable template. Don't remove const.
3562 (filesystem::__detail::__is_path_src): Replace overloaded function
3563 template with variable template and specializations.
3564 (filesystem::__detail::__is_path_iter_src): Replace alias template
3565 with class template.
3566 (filesystem::__detail::_Path): Use __is_path_src. Remove support for
3567 iterator pairs.
3568 (filesystem::__detail::_Path2): New alias template for checking
3569 InputIterator requirements.
3570 (filesystem::__detail::__constructible_from): Remove.
3571 (filesystem::path): Replace _Path<Iter, Iter> with _Path2<Iter>.
3572 * testsuite/27_io/filesystem/path/construct/80762.cc: Check with two
3573 constructor arguments of void and void* types.
3574
3575 2020-05-21 Matthias Kretz <kretz@kde.org>
3576
3577 * testsuite/Makefile.am: Remove dup target_triplet and set tool,
3578 allowing runtest to work without arguments.
3579 * testsuite/Makefile.in: Regenerate.
3580
3581 2020-05-21 Jonathan Wakely <jwakely@redhat.com>
3582
3583 PR libstdc++/93983
3584 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
3585 Reorder constraints to avoid recursion when constructors use
3586 iterator_traits (LWG 3420).
3587 * testsuite/24_iterators/customization_points/lwg3420.cc: New test.
3588
3589 * include/experimental/socket (basic_socket::is_open()
3590 (basic_socket_acceptor::is_open()): Use _GLIBCXX_NODISCARD macro.
3591
3592 * include/experimental/bits/net.h (__endpoint, __protocol)
3593 (__acceptable_protocol, __inet_protocol): New concepts.
3594 (__detail::__is_endpoint): Move trait from <experimental/socket>.
3595 (__is_protocol, __is_acceptable_protocol, __is_inet_protocol): New
3596 traits.
3597 (__endpoint, __protocol, __acceptable_protocol): New variable
3598 templates.
3599 * include/experimental/socket (__is_endpoint): Move to net.h header.
3600 (basic_socket, basic_socket_acceptor): Check requirements.
3601
3602 * include/experimental/executor (use_future_t::use_future_t()): Fix
3603 incorrect noexcept-specifier.
3604 * include/experimental/internet (basic_resolver_results): Adjust
3605 whitespace.
3606 * include/experimental/socket (__basic_socket_impl::release): Add
3607 member function.
3608 (basic_socket(io_context&, const endpoint_type&)): Fix argument to
3609 target constructor.
3610 (basic_socket::release(), basic_socket::release(error_code&)): Add
3611 missing member functions.
3612 (basic_socket::is_open()): Add nodiscard attribute.
3613 (basic_socket::close(error_code&)): Pass argument to base function.
3614 (basic_socket_acceptor::release())
3615 (basic_socket_acceptor::release(error_code&)): Add missing member
3616 functions.
3617 (basic_socket_acceptor::is_open()): Add nodiscard attribute.
3618 (basic_socket_streambuf::error()): Add noexcept.
3619 (basic_socket_iostream::error()): Likewise.
3620 * testsuite/experimental/net/socket/basic_socket.cc: New test.
3621
3622 * include/experimental/buffer: Replace typedefs with
3623 alias-declarations.
3624 * include/experimental/executor: Likewise.
3625 * include/experimental/internet: Likewise.
3626 * include/experimental/socket: Likewise.
3627 * include/experimental/timer: Likewise.
3628
3629 2020-05-19 Jonathan Wakely <jwakely@redhat.com>
3630
3631 PR libstdc++/94087
3632 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
3633 passed in.
3634 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand
3635 fallback.
3636 (random_device::_M_init): Use __x86_rdseed_rdrand when both
3637 instructions are available.
3638 * testsuite/26_numerics/random/random_device/94087.cc: New test.
3639
3640 2020-05-19 Patrick Palka <ppalka@redhat.com>
3641
3642 PR c++/66439
3643 * testsuite/20_util/pair/astuple/get_neg.cc: Prune "type/value
3644 mismatch" messages.
3645 * testsuite/20_util/tuple/element_access/get_neg.cc: Likewise.
3646
3647 2020-05-15 H.J. Lu <hongjiu.lu@intel.com>
3648
3649 PR bootstrap/95147
3650 * configure: Regenerated.
3651
3652 2020-05-14 H.J. Lu <hongjiu.lu@intel.com>
3653
3654 * configure: Regenerated.
3655
3656 2020-05-13 Alexandre Oliva <oliva@adacore.com>
3657
3658 PR libstdc++/77691
3659 * include/experimental/memory_resource
3660 (__resource_adaptor_imp::do_allocate): Handle max_align_t on
3661 x86-vxworks as on x86-solaris.
3662 (__resource_adaptor_imp::do_deallocate): Likewise.
3663 * testsuite/experimental/memory_resource/new_delete_resource.cc:
3664 Drop xfail.
3665 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
3666 (test03): Drop max-align test for char-aligned alloc.
3667
3668 2020-05-08 Ulrich Drepper <drepper@redhat.com>
3669
3670 * include/bits/atomic_base.h (atomic_flag): Implement test member
3671 function.
3672 * include/std/version: Define __cpp_lib_atomic_flag_test.
3673 * testsuite/29_atomics/atomic_flag/test/explicit.cc: New file.
3674 * testsuite/29_atomics/atomic_flag/test/implicit.cc: New file.
3675
3676 2020-05-07 Jonathan Wakely <jwakely@redhat.com>
3677
3678 PR libstdc++/94971 (partial)
3679 * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify
3680 std::sample using macro to work in parallel mode.
3681 (__sort_fn): Likewise for std::sort.
3682 (ranges::__nth_element_fn): Likewise for std::nth_element.
3683 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
3684 Likewise for std::__min_cmp.
3685 * include/parallel/algobase.h (lexicographical_compare_three_way):
3686 Add to namespace std::__parallel.
3687
3688 PR c/92472
3689 * include/parallel/multiway_merge.h (_GuardedIterator::operator*)
3690 (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
3691 (_UnguardedIterator::operator _RAIter): Add const qualifier.
3692 (operator<(_GuardedIterator&, _GuardedIterator&)
3693 (operator<=(_GuardedIterator&, _GuardedIterator&)
3694 (operator<(_UnguardedIterator&, _UnguardedIterator&)
3695 (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
3696 parameters to const references.
3697
3698 2020-05-07 Eric Botcazou <ebotcazou@adacore.com>
3699
3700 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
3701 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
3702
3703 2020-05-06 François Dumont <fdumont@gcc.gnu.org>
3704
3705 * include/bits/stl_algobase.h (struct _Bit_iterator): New declaration.
3706 (std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise.
3707 * include/bits/stl_bvector.h (__fill_bvector): Move outside
3708 _GLIBCXX_STD_C namespace.
3709 (fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename
3710 into...
3711 (__fill_a1): ...this.
3712 * testsuite/25_algorithms/fill/bvector/1.cc: New.
3713
3714 2020-05-06 H.J. Lu <hongjiu.lu@intel.com>
3715
3716 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3717
3718 2020-05-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3719
3720 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
3721 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
3722 Likewise.
3723 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
3724 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
3725 Likewise.
3726
3727 2020-05-06 Martin Liska <mliska@suse.cz>
3728
3729 Revert:
3730 2020-05-05 Martin Liska <mliska@suse.cz>
3731 PR c/92472
3732 * include/parallel/multiway_merge.h:
3733 Use const for _Compare template argument.
3734
3735 2020-05-06 Jonathan Wakely <jwakely@redhat.com>
3736
3737 * doc/xml/manual/abi.xml (abi.versioning.history): Document library
3738 versions for GCC 9.[123] and 10.1 releases.
3739 * doc/html/*: Regenerate.
3740
3741 2020-05-06 Jakub Jelinek <jakub@redhat.com>
3742
3743 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3744 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3745 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
3746 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3747 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3748 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3749 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3750
3751 2020-05-05 Martin Liska <mliska@suse.cz>
3752
3753 PR c/92472
3754 * include/parallel/multiway_merge.h:
3755 Use const for _Compare template argument.
3756
3757 2020-05-04 Fangrui Song <maskray@google.com>
3758
3759 * libsupc++/cxxabi.h (__cxa_finalize): Fix return type.
3760
3761 2020-05-04 Jonathan Wakely <jwakely@redhat.com>
3762
3763 * doc/xml/faq.xml: Use working link for SGI STL FAQ.
3764 * doc/html/*: Regenerate.
3765
3766 PR libstdc++/94906
3767 * src/c++17/memory_resource.cc
3768 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift
3769 operands.
3770
3771 2020-05-04 Nathan Sidwell <nathan@acm.org>
3772
3773 PR libstdc++/94747
3774 * libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to
3775 ptrdiff_t before negation, to show intent more clearly.
3776
3777 2020-05-04 Jonathan Wakely <jwakely@redhat.com>
3778
3779 PR libstdc++/94936
3780 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
3781 Add comment about single-threaded behaviour.
3782 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
3783 class member access out of loop.
3784 (synchronized_pool_resource::synchronized_pool_resource())
3785 (synchronized_pool_resource::~synchronized_pool_resource())
3786 (synchronized_pool_resource::release()): Check __gthread_active_p
3787 before creating and/or deleting the thread-specific data key.
3788 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust
3789 assertions.
3790 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
3791 path for single-threaded case.
3792 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
3793 Likewise. Return if unable to find a pool that owns the allocation.
3794 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
3795 New test.
3796 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
3797 test.
3798 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New
3799 test.
3800
3801 2020-05-03 Jonathan Wakely <jwakely@redhat.com>
3802
3803 PR libstdc++/94933
3804 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
3805 usable in constant expressions.
3806 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
3807 non-scalars.
3808
3809 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
3810
3811 PR libstdc++/94901
3812 * testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too.
3813
3814 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
3815 Patrick Palka <ppalka@redhat.com>
3816
3817 PR libstdc++/92894
3818 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
3819 Add trait to determine return type and an alias for it.
3820 (ranges::__cust_imove::_IMove::operator()): Use __result instead of
3821 deduced return type.
3822 (iter_rvalue_reference_t): Use _IMove::__type instead of checking
3823 the result of ranges::iter_move.
3824 (__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t
3825 instead of checking the result of ranges::iter_move.
3826 * testsuite/24_iterators/customization_points/92894.cc: New test.
3827 * testsuite/24_iterators/indirect_callable/92894.cc: New test.
3828
3829 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
3830
3831 PR libstdc++/94901
3832 * include/std/type_traits (__is_complete_or_unbounded): Replace
3833 BADNAME _T with _Tp.
3834 * testsuite/17_intro/badnames.cc: New test.
3835
3836 2020-04-30 Jonathan Wakely <jwakely@redhat.com>
3837
3838 PR libstdc++/89510
3839 * include/bits/alloc_traits.h (allocator_traits::_S_construct)
3840 (allocator_traits::_S_destroy)
3841 (allocator_traits<allocator<T>>::construct): Use traits in
3842 noexcept-specifiers.
3843 * include/bits/allocator.h (allocator<void>::construct)
3844 (allocator<void>::destroy): Likewise.
3845 * include/ext/malloc_allocator.h (malloc_allocator::construct)
3846 (malloc_allocator::destroy): Likewise.
3847 * include/ext/new_allocator.h (new_allocator::construct)
3848 (new_allocator::destroy): Likewise.
3849 * testsuite/20_util/allocator/89510.cc: New test.
3850 * testsuite/ext/malloc_allocator/89510.cc: New test.
3851 * testsuite/ext/new_allocator/89510.cc: New test.
3852
3853 2020-04-29 Jonathan Wakely <jwakely@redhat.com>
3854
3855 PR libstdc++/94854
3856 * include/bits/basic_string.tcc: Update comment about explicit
3857 instantiations.
3858
3859 2020-04-28 Jonathan Wakely <jwakely@redhat.com>
3860
3861 PR libstdc++/91480
3862 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
3863 Remove non-standard macro.
3864 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
3865 to indicate P1032R1 support.
3866 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
3867 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
3868 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
3869 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
3870 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
3871 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
3872 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check
3873 feature test macro.
3874 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
3875 * testsuite/21_strings/basic_string_view/operations/copy/char/
3876 constexpr.cc: Likewise.
3877 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
3878
3879 PR libstdc++/94831
3880 * include/bits/alloc_traits.h (_S_construct): Restore placement
3881 new-expression for C++11/14/17 and call std::construct_at directly
3882 for C++20.
3883 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr
3884 function returning void.
3885 * testsuite/20_util/specialized_algorithms/
3886 uninitialized_value_construct/94831.cc: New test.
3887 * testsuite/23_containers/vector/cons/94831.cc: New test.
3888
3889 2020-04-28 Patrick Palka <ppalka@redhat.com>
3890
3891 LWG 3433 subrange::advance(n) has UB when n < 0
3892 * include/std/ranges (subrange::prev): Fix typo.
3893 (subrange::advance): Handle a negative argument as per the proposed
3894 resolution of LWG 3433.
3895 * testsuite/std/ranges/subrange/lwg3433.cc: New test.
3896
3897 2020-04-28 Jonathan Wakely <jwakely@redhat.com>
3898 Iain Sandoe <iain@sandoe.co.uk>
3899
3900 PR c++/94759
3901 * include/std/coroutine: Implement handing for non-
3902 class coroutine return types.
3903
3904 2020-04-24 Jonathan Wakely <jwakely@redhat.com>
3905
3906 * include/experimental/executor (service_already_exists): Make default
3907 constructor public (LWG 3414).
3908 * testsuite/experimental/net/execution_context/make_service.cc: Check
3909 the service_already_exists can be default constructed.
3910
3911 2020-04-24 Kamlesh Kumar <kamleshbhalui@gmail.com>
3912 Jonathan Wakely <jwakely@redhat.com>
3913
3914 PR libstdc++/90415
3915 PR libstdc++/92156
3916 * include/std/any (any): Rename template parameters for consistency
3917 with the standard.
3918 (any::_Decay): Rename to _Decay_if_not_any.
3919 (any::any(T&&):: Remove is_constructible from constraints. Remove
3920 non-standard overload.
3921 (any::any(in_place_type_t<T>, Args&&...))
3922 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
3923 (any::emplace(Args&&...))
3924 (any::emplace(initializer_list<U>, Args&&...)):
3925 Use decay_t instead of _Decay.
3926 * testsuite/20_util/any/cons/90415.cc: New test.
3927 * testsuite/20_util/any/cons/92156.cc: New Test.
3928 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
3929 more robust.
3930 * testsuite/20_util/any/modifiers/92156.cc: New test.
3931
3932 2020-04-23 Jonathan Wakely <jwakely@redhat.com>
3933
3934 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
3935 * doc/html/*: Regenerate.
3936
3937 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
3938 value for C++17 to 201803L because P0858R0 is supported for C++17.
3939 * include/std/version (__cpp_lib_array_constexpr): Likewise.
3940 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
3941 Check for value corresponding to P0031R0 features being tested.
3942 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
3943 Check for value corresponding to P0858R0 features being tested.
3944
3945 * include/std/version (__cpp_lib_three_way_comparison): Define for
3946 freestanding builds.
3947
3948 2020-04-23 Thomas Rodgers <rodgert@appliantology.com>
3949
3950 * include/experimental/net/executor (system_context): Mark
3951 system_context::system_context() = delete.
3952 * testsuite/experimental/net/executor/1.cc: Add new
3953 test to check system_context is not default constructible.
3954
3955 2020-04-23 Iain Sandoe <iain@sandoe.co.uk>
3956
3957 * include/std/coroutine: Update the inline namespace to __n4861.
3958 Add the __cpp_lib_coroutine define, set to 201902L.
3959 * include/std/version: Add __cpp_lib_coroutine, set to 201902L.
3960
3961 2020-04-22 Jonathan Wakely <jwakely@redhat.com>
3962
3963 * include/std/execution (__cpp_lib_execution): Define to indicate
3964 support for P0024R2 and P1001R2.
3965 * include/std/version (__cpp_lib_execution): Define.
3966 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
3967 defined by <algorithm>, move other tests to new tests ...
3968 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
3969 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
3970 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
3971 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
3972
3973 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
3974 different values for C++17 and C++20, to indicate different feature
3975 sets. Update value for C++20 to indicate P1032R1 support.
3976 * include/std/version (__cpp_lib_array_constexpr): Likewise.
3977 * testsuite/23_containers/array/comparison_operators/constexpr.cc:
3978 Check feature test macro.
3979 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
3980 New test.
3981 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
3982 feature test macro.
3983 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
3984 in C++17 mode and check feature test macro.
3985
3986 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
3987 here.
3988 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
3989 defined by <utility>.
3990
3991 * include/std/functional (__cpp_lib_concepts): Update macro value to
3992 indicate P1964R2 support.
3993 * include/std/version (__cpp_lib_concepts): Likewise.
3994 * testsuite/std/concepts/1.cc: Adjust expected value.
3995 * testsuite/std/concepts/2.cc: Likewise.
3996
3997 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to
3998 __cpp_lib_constexpr_functional.
3999 * include/std/version (__cpp_lib_constexpr_invoke): Likewise.
4000 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
4001
4002 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
4003 indicate P1006R1 support.
4004 (__cpp_lib_to_address): Define to indicate P0653R2 support.
4005 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
4006 P1227R2 support.
4007 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
4008 P0769R2 support.
4009 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate
4010 P0020R6 support.
4011 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate
4012 P1007R3 support.
4013 * include/std/memory_resource (__cpp_lib_polymorphic_allocator):
4014 Define to indicate P0339R6 support.
4015 * include/std/string_view (__cpp_lib_starts_ends_with): Define to
4016 indicate P0457R2 support.
4017 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
4018 to indicate P0758R1 support.
4019 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
4020 (__cpp_lib_type_identity): Define to indicate P0887R1 support.
4021 * include/std/version (__cpp_lib_atomic_float)
4022 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
4023 (__cpp_lib_type_identity, __cpp_lib_assume_aligned)
4024 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
4025 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
4026 (__cpp_lib_to_address): Define.
4027 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
4028
4029 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
4030 macro.
4031 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
4032 Likewise.
4033 * include/std/version (__cpp_lib_map_insertion)
4034 (__cpp_lib_unordered_map_insertion): Remove.
4035
4036 * include/std/condition_variable (__cpp_lib_jthread): Remove
4037 redundant definition.
4038 * include/std/stop_token (__cpp_lib_jthread): Update macro value to
4039 indicate P1869R1 support.
4040 * include/std/version (__cpp_lib_jthread): Update value.
4041 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
4042 for updated macro value.
4043 * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
4044 Likewise.
4045 * testsuite/30_threads/jthread/1.cc: Likewise.
4046 * testsuite/30_threads/jthread/2.cc: Likewise.
4047 * testsuite/30_threads/stop_token/1.cc: Likewise.
4048 * testsuite/30_threads/stop_token/2.cc: Likewise.
4049
4050 * testsuite/21_strings/basic_string/erasure.cc: Check for
4051 __cpp_lib_erase_if macro.
4052 * testsuite/23_containers/deque/erasure.cc: Add header name to #error
4053 messages.
4054 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
4055 * testsuite/23_containers/list/erasure.cc: Likewise.
4056 * testsuite/23_containers/map/erasure.cc: Likewise.
4057 * testsuite/23_containers/set/erasure.cc: Likewise.
4058 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
4059 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
4060 * testsuite/23_containers/vector/erasure.cc: Likewise.
4061
4062 2020-04-21 Jonathan Wakely <jwakely@redhat.com>
4063
4064 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
4065 to define operator<=>.
4066 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
4067
4068 * doc/Makefile.am (xml_sources_manual): Add missing XML files.
4069 * doc/Makefile.in: Regenerate.
4070 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
4071 of "this page".
4072 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
4073 to the C++11 status table.
4074 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
4075 proposals with table matching contents of the C++14 standard.
4076 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of
4077 the C++17 standard.
4078 * doc/html/*: Regenerate.
4079
4080 PR c++/94149
4081 * include/std/type_traits (__is_nt_constructible_impl): Add partial
4082 specializations for bounded arrays with non-empty initializers.
4083 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
4084
4085 2020-04-20 Thomas Rodgers <trodgers@redhat.com>
4086
4087 * testsuite/lib/libstdc++.exp: Add additional_flags=
4088 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
4089 compiling with a newer Thread Building Blocks.
4090
4091 2020-04-20 Jonathan Wakely <jwakely@redhat.com>
4092
4093 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
4094
4095 * testsuite/20_util/is_constructible/51185.cc: Make test class a
4096 non-aggregate so that the test verifies the same thing in all -std
4097 modes.
4098 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
4099 results for some types when paren-init for aggregates is supported.
4100
4101 * include/std/version (__cpp_lib_three_way_comparison): Update value.
4102 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
4103 (__detail::__synth3way): Add noexcept-specifier.
4104
4105 * include/bits/stl_map.h (map): Define operator<=> and remove
4106 operator< for C++20.
4107 * include/bits/stl_multimap.h (multimap): Likewise.
4108 * include/bits/stl_multiset.h (multiset): Likewise.
4109 * include/bits/stl_set.h (set): Likewise.
4110 * include/bits/stl_tree.h (_Rb_tree): Likewise.
4111 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
4112 operator!= for C++20.
4113 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
4114 * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
4115 * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
4116 * include/debug/set.h (__gnu_debug::set): Likewise.
4117 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
4118 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
4119 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
4120 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
4121
4122 2020-04-20 Matthias Kretz <kretz@kde.org>
4123
4124 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
4125
4126 2020-04-19 Jonathan Wakely <jwakely@redhat.com>
4127
4128 * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
4129 * include/bits/stl_stack.h (stack): Likewise.
4130 * testsuite/23_containers/queue/cmp_c++20.cc: New test.
4131 * testsuite/23_containers/stack/cmp_c++20.cc: New test.
4132
4133 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
4134 Remove redundant operator!= for C++20.
4135 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
4136 Likewise.
4137 * include/debug/unordered_map (unordered_map, unordered_multimap):
4138 Likewise.
4139 * include/debug/unordered_set (unordered_set, unordered_multiset):
4140 Likewise.
4141
4142 PR other/94629
4143 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
4144 redundant assignment in constructor.
4145
4146 2020-04-18 Jonathan Wakely <jwakely@redhat.com>
4147
4148 * include/std/chrono (duration, time_point): Define operator<=> and
4149 remove redundant operator!= for C++20.
4150 * testsuite/20_util/duration/comparison_operators/three_way.cc: New
4151 test.
4152 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
4153 test.
4154
4155 * testsuite/util/native_type/native_priority_queue.hpp: Use
4156 allocator_traits to rebind allocator.
4157
4158 2020-04-17 Jonathan Wakely <jwakely@redhat.com>
4159
4160 * include/bits/forward_list.h (forward_list): Define operator<=> and
4161 remove redundant comparison operators for C++20.
4162 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
4163 * include/bits/stl_deque.h (deque): Likewise.
4164 * include/bits/stl_iterator.h (__normal_iterator): Likewise.
4165 * include/bits/stl_list.h (list): Likewise.
4166 * include/bits/stl_vector.h (vector): Likewise.
4167 * include/debug/deque (__gnu_debug::deque): Likewise.
4168 * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
4169 * include/debug/list (__gnu_debug::list): Likewise.
4170 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
4171 Likewise.
4172 * include/debug/vector (__gnu_debug::vector): Likewise.
4173 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
4174 operator<=> for C++20.
4175 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
4176 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
4177 * testsuite/23_containers/list/cmp_c++20.cc: New test.
4178 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
4179 * testsuite/23_containers/vector/cmp_c++20.cc: New test.
4180
4181 * include/bits/basic_string.h (basic_string): Define operator<=> and
4182 remove redundant comparison operators for C++20.
4183 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
4184 Add comparison_category members.
4185 (__detail::__char_traits_cmp_cat): New helper to get comparison
4186 category from char traits class.
4187 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
4188 define for C++20.
4189 (sub_match): Define operator<=> and remove redundant comparison
4190 operators for C++20.
4191 (match_results): Remove redundant operator!= for C++20.
4192 * include/std/string_view (basic_string_view): Define operator<=> and
4193 remove redundant comparison operators for C++20.
4194 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
4195 test.
4196 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
4197 New test.
4198 * testsuite/21_strings/basic_string_view/operations/copy/char/
4199 constexpr.cc: Initialize variable.
4200 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
4201 constexpr.cc: Likewise.
4202 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
4203 dg-do directive and remove comments showing incorrect signatures.
4204 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
4205 Likewise.
4206 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
4207 New test.
4208 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
4209 New test.
4210 * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
4211
4212 2020-04-16 Jonathan Wakely <jwakely@redhat.com>
4213
4214 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
4215 name of unused parameter.
4216
4217 2020-04-15 Jonathan Wakely <jwakely@redhat.com>
4218
4219 * include/bits/fs_dir.h (file_status): Define operator== for C++20.
4220 (directory_entry): Define operator<=> and remove redundant comparison
4221 operators for C++20.
4222 * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
4223 * include/bits/fs_path.h (path): Define operator<=> and remove
4224 redundant comparison operators for C++20.
4225 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
4226 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
4227 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
4228 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
4229
4230 * include/bits/allocator.h (operator!=): Do not define for C++20.
4231 * include/bits/locale_classes.h (operator!=): Likewise.
4232 * include/bits/std_function.h (operator==(nullptr_t, const function&))
4233 (operator!=(const function&, nullptr_t))
4234 (operator!=(nullptr_t, const function&)): Likewise.
4235 * include/ext/bitmap_allocator.h (operator!=): Likewise.
4236 * include/ext/debug_allocator.h (operator!=): Likewise.
4237 * include/ext/extptr_allocator.h (operator!=): Likewise.
4238 * include/ext/malloc_allocator.h (operator!=): Likewise.
4239 * include/ext/mt_allocator.h (operator!=): Likewise.
4240 * include/ext/new_allocator.h (operator!=): Likewise.
4241 * include/ext/pool_allocator.h (operator!=): Likewise.
4242 * include/ext/throw_allocator.h (operator!=): Likewise.
4243 * include/std/bitset (bitset::operator!=): Likewise.
4244 * include/std/memory_resource (operator!=): Likewise.
4245 * include/std/scoped_allocator (operator!=): Likewise.
4246
4247 * include/std/typeindex (operator<=>): Define for C++20.
4248 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
4249
4250 2020-04-14 Jonathan Wakely <jwakely@redhat.com>
4251
4252 * libsupc++/compare (compare_three_way): Fix constraint so that
4253 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
4254 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
4255 New test.
4256
4257 PR libstdc++/94562
4258 * include/bits/shared_ptr.h (operator<=>): Define for C++20.
4259 * include/bits/shared_ptr_base.h (operator<=>): Likewise.
4260 * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
4261 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
4262 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
4263 std::less<A*> to be used when comparing std::shared_ptr<A> objects in
4264 C++20.
4265
4266 PR libstdc++/94565
4267 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
4268 * testsuite/18_support/comparisons/categories/94565.cc: New test.
4269
4270 2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
4271
4272 * include/std/coroutine: Update coroutines builtin define,
4273 per n4861.
4274
4275 2020-04-09 Jonathan Wakely <jwakely@redhat.com>
4276
4277 * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
4278 (strong_order, weak_order, partial_order): Replace uses of <=> with
4279 compare_three_way function object (LWG 3324).
4280 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
4281 equality operator so that X satisfies three_way_comparable.
4282 * testsuite/18_support/comparisons/algorithms/strong_order.cc:
4283 Likewise.
4284 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
4285
4286 * include/bits/unique_ptr.h (operator<=>): Define for C++20.
4287 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
4288 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
4289 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
4290 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
4291
4292 2020-04-08 Jonathan Wakely <jwakely@redhat.com>
4293
4294 * include/bits/slice_array.h (operator==(const slice&, const slice&)):
4295 Define for C++20.
4296 * include/std/complex (operator==(const T&, const complex<T>&))
4297 (operator!=(const complex<T>&, const complex<T>&))
4298 (operator!=(const complex<T>&, const T&))
4299 (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
4300 * testsuite/26_numerics/slice/compare.cc: New test.
4301
4302 * include/std/charconv (to_chars_result, from_chars_result): Add
4303 defaulted equality comparisons for C++20.
4304 * testsuite/20_util/from_chars/compare.cc: New test.
4305 * testsuite/20_util/to_chars/compare.cc: New test.
4306
4307 2020-04-07 Jonathan Wakely <jwakely@redhat.com>
4308
4309 PR libstdc++/94520
4310 * include/std/charconv (__integer_to_chars_result_type)
4311 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
4312 allow use in C++14.
4313 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
4314 use of std::string_view with std::string.
4315 * testsuite/20_util/from_chars/2.cc: Likewise.
4316 * testsuite/20_util/to_chars/1.cc: Likewise.
4317 * testsuite/20_util/to_chars/2.cc: Likewise.
4318
4319 2020-04-06 Jonathan Wakely <jwakely@redhat.com>
4320
4321 PR libstdc++/94498
4322 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
4323 usable in constant expressions for C++20.
4324 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
4325 _GLIBCXX20_CONSTEXPR.
4326 (std::char_traits<char>, std::char_traits<wchar_t>)
4327 (std::char_traits<char8_t>): Make move, copy and assign usable in
4328 constant expressions for C++20.
4329 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
4330 and copy usable in constant expressions for C++20.
4331 * include/std/string_view (basic_string_view::copy): Add
4332 _GLIBCXX20_CONSTEXPR.
4333 * testsuite/21_strings/basic_string_view/operations/copy/char/
4334 constexpr.cc: New test.
4335 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
4336 constexpr.cc: New test.
4337
4338 2020-04-05 Gerald Pfeifer <gerald@pfeifer.com>
4339
4340 * doc/xml/manual/appendix_contributing.xml: Refer to Git
4341 documentation instead of Subversion. Switch to https.
4342 * doc/html/manual/appendix_contributing.html: Regenerate.
4343
4344 2020-04-03 Jonathan Wakely <jwakely@redhat.com>
4345
4346 PR libstdc++/93960
4347 * include/bits/ptr_traits.h (__to_address): Add special case for debug
4348 iterators, to avoid dereferenceable check.
4349 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
4350 * testsuite/20_util/to_address/debug.cc: New test.
4351
4352 2020-04-01 Andrea Corallo <andrea.corallo@arm.com>
4353
4354 * testsuite/experimental/net/execution_context/use_service.cc:
4355 Require pthread and gthreads.
4356
4357 2020-04-01 Gerald Pfeifer <gerald@pfeifer.com>
4358
4359 * doc/xml/manual/appendix_free.xml: Move "free books" list from
4360 fsf.org to gnu.org.
4361 * doc/html/manual/appendix_free.html: Regenerate.
4362
4363 2020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com>
4364
4365 Library-side tests for parenthesized aggregate init
4366
4367 PR c++/92878
4368 PR c++/92947
4369
4370 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
4371 * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
4372 * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
4373 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
4374 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
4375 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
4376 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
4377 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
4378 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
4379 Likewise.
4380 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
4381 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
4382 * testsuite/20_util/variant/92878_92947.cc: Likewise.
4383 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
4384 Likewise.
4385 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
4386 Likewise.
4387 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
4388 Likewise.
4389 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
4390 Likewise.
4391 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
4392 Likewise.
4393 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
4394 Likewise.
4395 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
4396 * testsuite/23_containers/queue/92878_92947.cc: Likewise.
4397 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
4398 Likewise.
4399 * testsuite/23_containers/stack/92878_92947.cc: Likewise.
4400 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
4401 Likewise.
4402 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
4403 Likewise.
4404 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
4405 Likewise.
4406 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
4407 Likewise.
4408 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
4409 Likewise.
4410
4411 2020-03-28 Jonathan Wakely <jwakely@redhat.com>
4412
4413 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
4414 for changes due to parenthesized aggregate-initialization in C++20.
4415 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
4416 with std::chrono::sys_time in C++20.
4417
4418 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
4419 to constrain C++20 versions of comparison operators. Fix backwards
4420 logic of relational operators.
4421 (move_iterator): Use requires-clause to constrain comparison operators
4422 in C++20. Do not declare non-standard same-type overloads for C++20.
4423 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
4424 of comparisons and check using greedy_ops type.
4425 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
4426 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
4427 main function from compile-only test.
4428 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
4429
4430 2020-03-27 Jonathan Wakely <jwakely@redhat.com>
4431
4432 * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
4433 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
4434 C++20 concepts are required.
4435 * include/bits/stl_iterator_base_types.h: Likewise.
4436 * include/std/concepts: Likewise.
4437 * include/std/version: Likewise.
4438 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
4439 macro.
4440
4441 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
4442 (reverse_iterator::iterator_category): Define for C++20.
4443 (reverse_iterator): Define comparison operators correctly for C++20.
4444 (__normal_iterator): Add constraints to comparison operators for C++20.
4445 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
4446 overload for input iterators.
4447 (move_iterator): Add constraints to comparison operators for C++20.
4448 Define operator<=> for C++20.
4449 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
4450 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
4451 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
4452 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
4453
4454 * include/bits/iterator_concepts.h (__detail::__decay_copy)
4455 (__detail::__member_begin, __detail::__adl_begin): Move here from
4456 <bits/range_access.h>.
4457 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
4458 * bits/range_access.h (__cust_access::__decay_copy)
4459 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
4460 <bits/iterator_concepts.h>.
4461 (ranges::iterator_t): Use __detail::__range_iter_t.
4462 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
4463 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
4464 (front_insert_iterator): Likewise.
4465 (insert_iterator): Implement changes from P0896R4 for C++20.
4466 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
4467 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
4468 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
4469 for inclusion in synopsis_c++20.cc which expects different signatures
4470 for some function templates.
4471 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
4472
4473 * include/std/type_traits (__is_array_convertible): Move definition
4474 to immediately after is_convertible.
4475
4476 2020-03-26 Jonathan Wakely <jwakely@redhat.com>
4477
4478 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
4479 (chrono::months, chrono::sys_days, chrono::local_t)
4480 (chrono::local_time, chrono::local_seconds, chrono::local_days):
4481 Define for C++20.
4482 (chrono::time_point): Add missing static assert.
4483 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
4484 * testsuite/std/time/clock/file/overview.cc: New test.
4485 * testsuite/std/time/clock/file/members.cc: New test.
4486 * testsuite/std/time/syn_c++20.cc: New test.
4487
4488 2020-03-25 Mike Crowe <mac@mcrowe.com>
4489
4490 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
4491 test.
4492 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
4493 test.
4494
4495 2020-03-25 Jonathan Wakely <jwakely@redhat.com>
4496
4497 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
4498 * include/std/chrono (filesystem::__file_clock): Here.
4499 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
4500 Define public member functions for C++20.
4501 (is_clock, is_clock_v): Define traits for C++20.
4502 * include/std/condition_variable (condition_variable::wait_until): Add
4503 check for valid clock.
4504 * include/std/future (_State_baseV2::wait_until): Likewise.
4505 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
4506 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
4507 Likewise.
4508 * include/std/thread (this_thread::sleep_until): Likewise.
4509 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
4510 slow_clock with new namespace.
4511 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
4512 test.
4513 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
4514 New test.
4515 * testsuite/30_threads/future/members/clock_neg.cc: New test.
4516 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
4517 Qualify slow_clock with new namespace.
4518 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
4519 clock_neg.cc: New test.
4520 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
4521 test.
4522 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
4523 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
4524 New test.
4525 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
4526 slow_clock with new namespace.
4527 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
4528 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
4529 test.
4530 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
4531 * testsuite/std/time/traits/is_clock.cc: New test.
4532 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
4533 namespace.
4534
4535 2020-03-21 Jonathan Wakely <jwakely@redhat.com>
4536
4537 PR libstdc++/93245
4538 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
4539 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
4540 Improve test coverage.
4541
4542 PR libstdc++/94242
4543 * include/bits/fs_path.h (path::_S_str_convert): Replace first
4544 parameter with basic_string_view so that strings with different
4545 allocators can be accepted.
4546 (path::generic_string<C,T,A>()): Use basic_string object that uses the
4547 right allocator type.
4548 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
4549 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
4550 test coverage.
4551
4552 2020-03-18 Jonathan Wakely <jwakely@redhat.com>
4553
4554 PR libstdc++/94033
4555 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
4556 (__is_nt_default_constructible_impl): Remove.
4557 (__is_nothrow_default_constructible_impl): Remove.
4558 (__is_nt_constructible_impl): Add bool template parameter. Adjust
4559 partial specializations.
4560 (__is_nothrow_constructible_impl): Replace class template with alias
4561 template.
4562 (is_nothrow_default_constructible): Derive from alias template
4563 __is_nothrow_constructible_impl instead of
4564 __is_nothrow_default_constructible_impl.
4565 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
4566
4567 * include/std/stop_token (stop_token::_Stop_state_ref): Define
4568 comparison operators explicitly if the compiler won't synthesize them.
4569
4570 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
4571 __cpp_lib_concepts before using iter_reference_t.
4572 * include/bits/stream_iterator.h (istream_iterator): Check
4573 __cpp_lib_concepts before using default_sentinel_t.
4574 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
4575
4576 PR libstdc++/94203
4577 * include/experimental/executor (executor::executor(Executor)): Call
4578 make_shared directly instead of _M_create. Create _Tgt1 object.
4579 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
4580 Call allocate_shared directly instead of _M_create. Create _Tgt2
4581 object.
4582 (executor::target_type): Add cast needed for new _Tgt interface.
4583 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
4584 (executor::_Tgt): Define the same interface whether RTTI is enabled or
4585 not.
4586 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
4587 std::type_info in the interface.
4588 (executor::_Tgt::_M_func): Add data member.
4589 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
4590 (executor::_Tgt1::_S_func): Define function to access target without
4591 depending on RTTI.
4592 (executor::_M_create): Remove.
4593 (operator==, operator!=): Simplify comparisons for executor.
4594 * include/experimental/socket (is_error_code_enum<socket_errc>):
4595 Define specialization before use.
4596 * testsuite/experimental/net/executor/1.cc: New test.
4597
4598 2020-03-16 Jonathan Wakely <jwakely@redhat.com>
4599
4600 PR libstdc++/94199
4601 * include/experimental/executor (service_already_exists): Add default
4602 constructor. Declare make_service to be a friend.
4603 * testsuite/experimental/net/execution_context/make_service.cc: New
4604 test.
4605
4606 2020-03-12 Jonathan Wakely <jwakely@redhat.com>
4607
4608 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
4609 a null pointer to functions with nonnull(1) attribute.
4610
4611 2020-03-11 Patrick Palka <ppalka@redhat.com>
4612
4613 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
4614 'address' -> 'std::__addressof'.
4615 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
4616 a non-forward input_range.
4617 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
4618 default constructor protected instead of deleted, like with
4619 input_iterator_wrapper.
4620 (test_range::iterator): Add comment explaining that this type is used
4621 only when the underlying wrapper is input_iterator_wrapper or
4622 output_iterator_wrapper. Remove delegating defaulted constructor so
4623 that the inherited default constructor is used instead.
4624
4625 LWG 3286 ranges::size is not required to be valid after a call to
4626 ranges::begin on an input range
4627 * include/std/ranges (subrange::subrange): Split single-argument
4628 constructor into two, one constrained by _S_store_size and another by
4629 !_S_store_size.
4630 (take_view::begin): Call size() before calling ranges::begin(_M_base).
4631 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
4632 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
4633
4634 2020-03-10 Jonathan Wakely <jwakely@redhat.com>
4635
4636 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
4637 instead of _M_current.
4638 (split_view::_OuterIter::operator++): Likewise.
4639
4640 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
4641 (transform_view::_Iterator::operator*): Add noexcept-specifier.
4642 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
4643 (split_view::_OuterIter::__current): Add noexcept.
4644 (split_view::_InnerIter::__iter_swap): Remove.
4645 (split_view::_InnerIter::__iter_move): Remove.
4646 (split_view::_InnerIter::_M_i_current): New accessors.
4647 (split_view::_InnerIter::__at_end): Use _M_i_current().
4648 (split_view::_InnerIter::operator*): Likewise.
4649 (split_view::_InnerIter::operator++): Likewise.
4650 (iter_move(const _InnerIter&)): Likewise.
4651 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
4652 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
4653 for iter_move and iter_swap on split_view's inner iterator.
4654
4655 PR c++/94117
4656 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
4657 Change expression in noexcept-specifier to match function body.
4658
4659 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
4660 comment explaining multiple dg-do directives.
4661 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
4662 so test is run as well as compiled.
4663
4664 2020-03-09 Jonathan Wakely <jwakely@redhat.com>
4665
4666 PR libstdc++/94063
4667 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
4668 handle concatenations that change the type of the first component.
4669 (path::operator+=(basic_string_view<value_type>)): Likewise.
4670 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
4671
4672 2020-03-06 Patrick Palka <ppalka@redhat.com>
4673
4674 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
4675 join_view::_Sentinel<!_Const>.
4676 * testsuite/std/ranges/adaptors/join.cc: Augment test.
4677
4678 PR libstdc++/93978
4679 * include/bits/range_access.h (__cust_access::_Empty::operator()):
4680 Declare return type to be bool instead of auto.
4681 * testsuite/std/ranges/adaptors/93978.cc: New test.
4682
4683 2020-03-06 Jonathan Wakely <jwakely@redhat.com>
4684
4685 PR libstdc++/94069
4686 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
4687 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
4688 second argument to __glibcxx_rwlock_init.
4689 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
4690
4691 PR libstdc++/93244
4692 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
4693 test to not fail due to PR 94063.
4694 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
4695 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
4696
4697 2020-03-06 Andreas Krebbel <krebbel@linux.ibm.com>
4698
4699 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
4700 would match ENOSYS.
4701
4702 2020-03-05 Jonathan Wakely <jwakely@redhat.com>
4703
4704 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
4705 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
4706 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
4707 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
4708 for return value, and in comparison.
4709 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
4710
4711 PR libstdc++/94051
4712 * include/std/string_view: Include <bits/ostream_insert.h>.
4713 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
4714
4715 2020-03-04 Jonathan Wakely <jwakely@redhat.com>
4716
4717 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
4718
4719 2020-03-04 Patrick Palka <ppalka@redhat.com>
4720
4721 PR libstdc++/94017
4722 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
4723 condition for when to use memset, making sure to additionally check that
4724 the output pointer's value type is a non-volatile byte type. Instead of
4725 requiring that the fill type is a byte type, just require that it's an
4726 integral type.
4727 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
4728 New test.
4729 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
4730 New test.
4731 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
4732 blocked by PR 94017.
4733 * testsuite/25_algorithms/fill/94017.cc: New test.
4734 * testsuite/25_algorithms/fill_n/94017.cc: New test.
4735
4736 LWG 3355 The memory algorithms should support move-only input iterators
4737 introduced by P1207
4738 * include/bits/ranges_uninitialized.h
4739 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
4740 to copy __ifirst, which could be a move-only input iterator. Use
4741 operator- instead of ranges::distance to compute distance from a sized
4742 sentinel.
4743 (__uninitialized_copy_n_fn::operator()): Likewise.
4744 (__uninitialized_move_fn::operator()): Likewise.
4745 (__uninitialized_move_n_fn::operator()): Likewise.
4746 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
4747 attempting to copy __first.
4748 (__uninitialized_destroy_n_fn::operator()): Likewise.
4749 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
4750 Augment test.
4751 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
4752 Likewise.
4753 * .../specialized_algorithms/uninitialized_move/constrained.cc:
4754 Likewise.
4755
4756 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
4757 protected instead of private.
4758 (test_sized_range_sized_sent): New.
4759
4760 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
4761 New testsuite iterator.
4762 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
4763 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
4764
4765 * include/bits/ranges_uninitialized.h
4766 (uninitialized_copy_fn::operator()): Pass a reference type as the first
4767 argument to is_nothrow_assignable_v.
4768 (uninitialized_copy_fn::operator()): Likewise.
4769 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
4770 with the input iterator stripped of its move_iterator.
4771 (uninitialized_move_n_fn::operator()): Likewise.
4772 (uninitialized_fill_fn::operator()): Pass a reference type as the first
4773 argument to is_nothrow_assignable_v.
4774 (uninitialized_fill_n_fn::operator()): Likewise.
4775
4776 2020-03-03 Jonathan Wakely <jwakely@redhat.com>
4777
4778 PR libstdc++/94013
4779 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
4780 traits to control when to use memmove and memcmp optimizations.
4781 (__is_nonvolatile_trivially_copyable): New helper trait.
4782 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
4783 use memcmp optimization with volatile data.
4784 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
4785 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
4786 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
4787 (__copy_move_backward_a2): Likewise.
4788 (__equal_aux1): Use __memcmpable.
4789 (__lexicographical_compare_aux): Do not use memcmp optimization with
4790 volatile data.
4791 * testsuite/25_algorithms/copy/94013.cc: New test.
4792 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
4793 * testsuite/25_algorithms/equal/94013.cc: New test.
4794 * testsuite/25_algorithms/fill/94013.cc: New test.
4795 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
4796 * testsuite/25_algorithms/move/94013.cc: New test.
4797 * testsuite/25_algorithms/move_backward/94013.cc: New test.
4798
4799 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
4800 Avoid redundant iterator comparisons (LWG 3410).
4801
4802 2020-03-02 Jonathan Wakely <jwakely@redhat.com>
4803
4804 PR libstdc++/93972
4805 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
4806 differ.
4807 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
4808
4809 * include/std/ranges (__detail::__maybe_empty_t): Rename to
4810 __maybe_present_t.
4811 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
4812
4813 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
4814 dependent type.
4815
4816 2020-03-01 H.J. Lu <hongjiu.lu@intel.com>
4817
4818 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
4819
4820 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
4821
4822 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
4823 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
4824 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
4825 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
4826 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
4827
4828 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
4829 Add libatomic option.
4830 * testsuite/30_threads/jthread/jthread.cc: Likewise.
4831
4832 2020-02-29 François Dumont <fdumont@gcc.gnu.org>
4833
4834 * include/bits/stl_algo.h
4835 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
4836 * include/bits/stl_algobase.h: ...here.
4837 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
4838
4839 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
4840
4841 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
4842 option.
4843 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
4844 Likewise.
4845 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
4846 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
4847 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
4848 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
4849 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
4850 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
4851 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
4852 Likewise.
4853
4854 PR libstdc++/92906
4855 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
4856
4857 2020-02-28 Patrick Palka <ppalka@redhat.com>
4858
4859 PR libstdc++/93972
4860 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
4861 Fix condition for when to use memcmp, making it consistent with the
4862 corresponding condition used in std::lexicographical_compare.
4863 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
4864
4865 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
4866 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
4867 existing signatures for C++2a.
4868
4869 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
4870
4871 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
4872 test instead of just compiling it.
4873
4874 2020-02-28 Patrick Palka <ppalka@redhat.com>
4875
4876 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
4877 whenever the underlying range models common_range.
4878
4879 * include/std/ranges (__detail::_CachedPosition): New struct.
4880 (views::filter_view::_S_needs_cached_begin): New member variable.
4881 (views::filter_view::_M_cached_begin): New member variable.
4882 (views::filter_view::begin): Use _M_cached_begin to cache its
4883 result.
4884 (views::drop_view::_S_needs_cached_begin): New static member variable.
4885 (views::drop_view::_M_cached_begin): New member variable.
4886 (views::drop_view::begin): Use _M_cached_begin to cache its result
4887 when _S_needs_cached_begin.
4888 (views::drop_while_view::_M_cached_begin): New member variable.
4889 (views::drop_while_view::begin): Use _M_cached_begin to cache its
4890 result.
4891 (views::reverse_view::_S_needs_cached_begin): New static member
4892 variable.
4893 (views::reverse_view::_M_cached_begin): New member variable.
4894 (views::reverse_view::begin): Use _M_cached_begin to cache its result
4895 when _S_needs_cached_begin.
4896 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
4897 drop_view::begin caches its result.
4898 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
4899 that drop_while_view::begin caches its result.
4900 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
4901 filter_view::begin caches its result.
4902 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
4903 reverse_view::begin caches its result.
4904
4905 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
4906
4907 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
4908 filesystems that silently truncate timestamps.
4909 * testsuite/experimental/filesystem/operations/last_write_time.cc:
4910 Likewise.
4911
4912 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
4913 -Wstringop-overflow warnings.
4914
4915 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
4916
4917 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
4918 -fdiagnostics-urls=never to options.
4919
4920 2020-02-27 Patrick Palka <ppalka@redhat.com>
4921
4922 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
4923 _Iterator<!_Const>.
4924 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
4925 (take_view::_Sentinel<_Const>): Likewise.
4926 (take_while_view::_Sentinel<_Const>): Likewise.
4927 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
4928 * testsuite/std/ranges/adaptors/split.cc: Augment test.
4929 * testsuite/std/ranges/adaptors/take.cc: Augment test.
4930 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
4931 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
4932
4933 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
4934 base() of a vector<>::iterator is a pointer.
4935 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
4936 * testsuite/25_algorithms/move/constrained.cc: Likewise.
4937 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
4938 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
4939 instead of &foo[0].
4940 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
4941 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
4942 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
4943 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
4944 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
4945
4946 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
4947
4948 * include/debug/array (operator<=>): Define for C++20.
4949 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
4950 Adjust dg-error line numbers.
4951 * testsuite/23_containers/array/tuple_interface/
4952 tuple_element_debug_neg.cc: Likewise.
4953
4954 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
4955 defining _GLIBCXX_ASSERTIONS.
4956 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
4957 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
4958 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
4959 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
4960 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
4961 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
4962 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
4963 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
4964 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
4965 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
4966 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
4967 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
4968
4969 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
4970 C++98 where the member function of the base class returns void.
4971
4972 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
4973 equality comparisons that support value-initialized iterators.
4974
4975 * include/bits/boost_concept_check.h (__function_requires): Add
4976 _GLIBCXX14_CONSTEXPR.
4977 * testsuite/25_algorithms/min/concept_checks.cc: New test.
4978
4979 2020-02-26 Patrick Palka <ppalka@redhat.com>
4980
4981 PR libstdc++/93936
4982 * include/std/ranges (split_view::_InnerIter::operator==): Compare
4983 the operands' _M_i rather than their _M_i.current().
4984 * testsuite/std/ranges/adaptors/split.cc: Augment test.
4985
4986 P1645R1 constexpr for <numeric> algorithms
4987 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
4988 partial_sum, adjacent_difference): Make conditionally constexpr for
4989 C++20.
4990 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
4991 test macro.
4992 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
4993 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
4994 constexpr for C++20.
4995 * include/std/version (__cpp_lib_constexpr_numeric): Define.
4996 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
4997 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
4998 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
4999 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
5000 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
5001 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
5002 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
5003 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
5004 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
5005 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
5006 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
5007
5008 2020-02-26 Jonathan Wakely <jwakely@redhat.com>
5009
5010 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
5011 variables in smaller scope and avoid calling ranges::distance when we
5012 know they are pointers. Remove statically-unreachable use of
5013 __builtin_unreachable().
5014 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
5015 Define inline.
5016
5017 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
5018 alias.
5019 (__detail::__maybe_const_t): Likewise.
5020 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
5021 (transform_view, take_view, take_while_view, elements_view): Use
5022 __maybe_const_t.
5023 (join_view, split_view): Use both.
5024
5025 2020-02-25 Patrick Palka <ppalka@redhat.com>
5026
5027 LWG 3397 basic_istream_view::iterator should not provide
5028 iterator_category
5029 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
5030 Rename to ...
5031 (basic_istream_view:_Iterator::iterator_concept): ... this.
5032 * testsuite/std/ranges/istream_view.cc: Augment test.
5033
5034 LWG 3325 Constrain return type of transformation function for
5035 transform_view
5036 * include/std/ranges (transform_view): Constrain the return type of the
5037 transformation function as per LWG 3325.
5038 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
5039
5040 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
5041 * include/std/ranges (join_view::_Iterator::operator--): Require that
5042 range_reference_t<_Base> models common_range.
5043 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
5044
5045 LWG 3301 transform_view::_Iterator has incorrect iterator_category
5046 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
5047 determination of iterator_category as per LWG 3301.
5048 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
5049
5050 LWG 3292 iota_view is under-constrained
5051 * include/std/ranges (iota_view): Require that _Winc models semiregular
5052 as per LWG 3292.
5053 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
5054
5055 2020-02-25 Jonathan Wakely <jwakely@redhat.com>
5056
5057 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
5058 during constant evaluation. Call __builtin_memmove directly instead of
5059 __memmove.
5060 (__copy_or_move_backward): Likewise.
5061 * include/bits/stl_algobase.h (__memmove): Remove.
5062 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
5063 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
5064 Use __builtin_memmove directly instead of __memmove.
5065 (__copy_move_a2): Do not use memmove during constant evaluation.
5066 (__copy_move_backward_a2): Use _IsMove constant to select correct
5067 __copy_move_backward specialization.
5068 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
5069 begin turned into moves during constant evaluation.
5070
5071 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
5072 previous commit.
5073
5074 PR libstdc++/93872
5075 * include/bits/stl_algobase.h (__memmove): Cast away const before
5076 doing move assignment.
5077 * testsuite/25_algorithms/move/93872.cc: New test.
5078 * testsuite/25_algorithms/move_backward/93872.cc: New test.
5079
5080 2020-02-24 Patrick Palka <ppalka@redhat.com>
5081
5082 PR libstdc++/93884
5083 * include/bits/ranges_algobase.h (__copy_or_move,
5084 __copy_or_move_backward): Don't inspect the iter_value_t of the output
5085 iterator, instead inspect its iterator_traits directly.
5086 * include/bits/stl_iterator.h (back_insert_iterator::container):
5087 Conditionally initialize.
5088 (back_insert_iterator::difference_type): Conditionally define.
5089 (back_insert_iterator::back_insert_iterator): Conditionally define this
5090 default constructor.
5091 (front_insert_iterator::container): Conditionally initialize.
5092 (front_insert_iterator::difference_type): Conditionally define.
5093 (front_insert_iterator::front_insert_iterator): Conditionally define
5094 this default constructor.
5095 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
5096 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
5097
5098 P0769R2 Add shift to <algorithm>
5099 * include/bits/ranges_algo.h (shift_left, shift_right): New.
5100 * testsuite/25_algorithms/shift_left/1.cc: New test.
5101 * testsuite/25_algorithms/shift_right/1.cc: New test.
5102
5103 2020-02-24 Jonathan Wakely <jwakely@redhat.com>
5104
5105 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
5106 Make noexcept-specifier conditional.
5107 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
5108 noexcept-specifier.
5109
5110 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
5111 Add constructor.
5112 (operator==(istream_iterator, default_sentinel_t)): Add operator.
5113 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
5114 * include/bits/streambuf_iterator.h
5115 (istreambuf_iterator(default_sentinel_t)): Add constructor.
5116 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
5117 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
5118 New test.
5119 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
5120 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
5121 New test.
5122 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
5123
5124 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
5125 (ranges::enable_view): Simplify (LWG 3326).
5126 * include/bits/range_access.h (ranges::enable_view): Declare.
5127 * include/bits/regex.h (__enable_view_impl): Remove partial
5128 specialization.
5129 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
5130 * include/bits/stl_set.h (__enable_view_impl): Likewise.
5131 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
5132 * include/debug/multiset.h (__enable_view_impl): Likewise.
5133 * include/debug/set.h (__enable_view_impl): Likewise.
5134 * include/debug/unordered_set (__enable_view_impl): Likewise.
5135 * include/experimental/string_view (ranges::enable_view): Define
5136 partial specialization.
5137 * include/std/span (ranges::enable_view): Likewise.
5138 * include/std/string_view (ranges::enable_view): Likewise.
5139 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
5140
5141 2020-02-21 Jonathan Wakely <jwakely@redhat.com>
5142
5143 * include/std/optional (operator<=>(optional<T>, optional<U>))
5144 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
5145 Define for C++20.
5146 * include/std/tuple (__tuple_cmp): New helper function for <=>.
5147 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
5148 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
5149 (operator<=>(monostate, monostate)): Define for C++20.
5150 * testsuite/20_util/optional/relops/three_way.cc: New test.
5151 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
5152 * testsuite/20_util/variant/89851.cc: Move to ...
5153 * testsuite/20_util/variant/relops/89851.cc: ... here.
5154 * testsuite/20_util/variant/90008.cc: Move to ...
5155 * testsuite/20_util/variant/relops/90008.cc: ... here.
5156 * testsuite/20_util/variant/relops/three_way.cc: New test.
5157
5158 2020-02-20 Patrick Palka <ppalka@redhat.com>
5159
5160 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
5161 function.
5162 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
5163 __maybe_refwrap to capture lvalue references by reference, and then use
5164 unwrap_reference_t to forward the by-reference captures as references.
5165 * testsuite/std/ranges/adaptors/split.cc: Augment test.
5166 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
5167
5168 * include/std/ranges (iota_view): Forward declare _Sentinel.
5169 (iota_view::_Iterator): Befriend _Sentinel.
5170 (iota_view::_Sentinel::_M_equal): New member function.
5171 (iota_view::_Sentinel::operator==): Use it.
5172 (views::_Iota::operator()): Forward __f using the correct type.
5173 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
5174 with integers of different signedness, to appease iota_view's deduction
5175 guide.
5176 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
5177
5178 2020-02-20 Jonathan Wakely <jwakely@redhat.com>
5179
5180 * include/bits/range_access.h (ranges::begin): Reject array of
5181 incomplete type.
5182 (ranges::end, ranges::size): Require arrays to be bounded.
5183 (ranges::data): Require lvalue or borrowed_range.
5184 (ranges::iterator_t): Remove constraint.
5185 * testsuite/std/ranges/access/begin.cc: Do not check array of
5186 incomplete type.
5187 * testsuite/std/ranges/access/begin_neg.cc: New test.
5188 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
5189 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
5190 * testsuite/std/ranges/access/ssize.cc: Do not check array of
5191 incomplete type.
5192
5193 * include/std/system_error (error_category::operator<=>)
5194 (operator<=>(const error_code&, const error_code&))
5195 (operator<=>(const error_condition&, const error_condition&)): Define
5196 for C++20.
5197 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
5198 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
5199 test.
5200 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
5201 incorrect comment.
5202 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
5203 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
5204 incorrect comment.
5205 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
5206 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
5207 incorrect comment.
5208 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
5209 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
5210 Remove incorrect comment.
5211 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
5212 test.
5213
5214 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
5215
5216 * include/std/thread (thread::id::operator<=>): Define for C++20.
5217 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
5218 functions in namespace std.
5219 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
5220
5221 2020-02-19 Patrick Palka <ppalka@redhat.com>
5222
5223 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
5224 null terminator of the underlying string as part of the test_range.
5225 (main): Call test03.
5226
5227 2020-02-19 Jonathan Wakely <jwakely@redhat.com>
5228
5229 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
5230 requirement (LWG 3385).
5231 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
5232 expected declaration.
5233
5234 * include/std/ranges (take_while_view, drop_view, drop_while_view)
5235 (elements_view:_Iterator): Initialize data members (LWG 3364).
5236
5237 * libsupc++/compare (three_way_comparable): Remove always-false check
5238 that should have been removed with weak_equality (P1959R0).
5239 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
5240
5241 * include/std/concepts (__detail::__partially_ordered_with): Move here
5242 from <compare>.
5243 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
5244 to simplify definition (LWG 3331).
5245 * libsupc++/compare (__detail::__partially_ordered_with): Move to
5246 <concepts>.
5247
5248 * include/std/concepts (totally_ordered_with): Remove redundant
5249 requirement (LWG 3329).
5250
5251 * include/std/ranges (__detail::__convertible_to_non_slicing): New
5252 helper concept.
5253 (__detail::__pair_like_convertible_to): Remove.
5254 (__detail::__pair_like_convertible_from): Add requirements for
5255 non-slicing conversions.
5256 (subrange): Constrain constructors with __convertible_to_non_slicing.
5257 Remove constructors from pair-like types. Add new deduction guide.
5258 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
5259
5260 * include/bits/iterator_concepts.h (iter_move): Add declaration to
5261 prevent unqualified lookup finding a suitable declaration (LWG 3247).
5262
5263 * include/std/memory_resource (polymorphic_allocator::allocate)
5264 (polymorphic_allocator::allocate_object): Change type of exception to
5265 bad_array_new_length (LWG 3237).
5266 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
5267
5268 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
5269 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
5270 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
5271 * testsuite/20_util/unwrap_reference/3.cc: New test.
5272
5273 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
5274 type during overload resolution, use static assert instead (LWG 3200).
5275 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
5276 incomplete type.
5277 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
5278
5279 * include/std/span (span(T (&)[N])): Use non-deduced context to
5280 prevent first parameter from interfering with class template argument
5281 deduction (LWG 3369).
5282 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
5283 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
5284 rvalues.
5285
5286 * include/std/span (span::const_iterator, span::const_reverse_iterator)
5287 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
5288 Remove (LWG 3320).
5289 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
5290 and cend.
5291 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
5292 Likewise.
5293 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
5294 constrained.cc: Likewise.
5295 * testsuite/20_util/specialized_algorithms/
5296 uninitialized_default_construct/constrained.cc: Likewise.
5297 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
5298 constrained.cc: Likewise.
5299 * testsuite/20_util/specialized_algorithms/uninitialized_move/
5300 constrained.cc: Likewise.
5301 * testsuite/20_util/specialized_algorithms/
5302 uninitialized_value_construct/constrained.cc: Likewise.
5303
5304 * include/bits/range_access.h (range_size_t): Define alias template.
5305 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
5306 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
5307
5308 * include/std/ranges (filter_view, transform_view, take_view)
5309 (join_view, split_view, reverse_view): Remove commented-out converting
5310 constructors (LWG 3280).
5311
5312 * include/std/memory (uninitialized_construct_using_allocator): Use
5313 std::construct_at (LWG 3321).
5314
5315 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
5316 (polymorphic_allocator::allocate_object)
5317 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
5318
5319 LWG 3379. "safe" in several library names is misleading
5320 * include/bits/range_access.h (enable_safe_range): Rename to
5321 enable_borrowed_range.
5322 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
5323 (safe_range): Rename to borrowed_range.
5324 * include/bits/ranges_algo.h: Adjust to use new names.
5325 * include/bits/ranges_algobase.h: Likewise.
5326 * include/bits/ranges_uninitialized.h: Likewise.
5327 * include/std/ranges: Likewise.
5328 (safe_iterator_t): Rename to borrowed_iterator_t.
5329 (safe_subrange_t): Rename to borrowed_subrange_t.
5330 * include/std/span: Adjust to use new names.
5331 * include/std/string_view: Likewise.
5332 * include/experimental/string_view: Likewise.
5333 * testsuite/std/ranges/access/begin.cc: Likewise.
5334 * testsuite/std/ranges/access/cbegin.cc: Likewise.
5335 * testsuite/std/ranges/access/cdata.cc: Likewise.
5336 * testsuite/std/ranges/access/cend.cc: Likewise.
5337 * testsuite/std/ranges/access/crbegin.cc: Likewise.
5338 * testsuite/std/ranges/access/crend.cc: Likewise.
5339 * testsuite/std/ranges/access/data.cc: Likewise.
5340 * testsuite/std/ranges/access/end.cc: Likewise.
5341 * testsuite/std/ranges/access/rbegin.cc: Likewise.
5342 * testsuite/std/ranges/access/rend.cc: Likewise.
5343 * testsuite/std/ranges/safe_range.cc: Likewise.
5344 * testsuite/std/ranges/safe_range_types.cc: Likewise.
5345 * testsuite/util/testsuite_iterators.h: Likewise.
5346
5347 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
5348 (tuple_element<1, const subrange<I, S, K>>): Add partial
5349 specializations (LWG 3398).
5350 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
5351
5352 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
5353 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
5354 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
5355
5356 2020-02-18 Patrick Palka <ppalka@redhat.com>
5357
5358 P1983R0 Wording for GB301, US296, US292, US291, and US283
5359 * include/std/ranges (filter_view::pred): New member function.
5360 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
5361 P1983R0 fixes the highlighted issue in the same way.
5362 (join_view::_Iterator<_Const>): Add friend
5363 join_view::_Iterator<!_Const>.
5364 (join_view::_M_inner): Remove mutable specifier, effectively reverting
5365 the proposed wording changes of P3278.
5366 (join_view::begin): Refine the condition for when to return a const
5367 iterator.
5368 (split_view::_OuterIter::_OuterIter): Adjust constraints.
5369 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
5370 exists and works.
5371
5372 2020-02-18 Jonathan Wakely <jwakely@redhat.com>
5373
5374 PR libstdc++/93818
5375 * include/std/ranges (_RangeAdaptor): Add deduction guide.
5376 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
5377 iterator_t<_Vp>.
5378 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
5379 (transform_view::_Iterator): Add alias _Base_iter and use in place of
5380 iterator_t<_Base>.
5381 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
5382 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
5383 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
5384 (split_view::_InnerIter::_S_iter_cat()): Likewise.
5385
5386 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
5387 assumption that long is wider than int.
5388 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
5389 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
5390 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
5391 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
5392
5393 P1976R2 Fixed-size span construction from dynamic range
5394 * include/std/span (__cpp_lib_span): Update value.
5395 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
5396 assertion.
5397 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
5398 constraints.
5399 (span::first<Count>(), span::last<Count>()): Use explicit type in
5400 return statement.
5401 (as_bytes, as_writable_bytes): Likewise.
5402 * include/std/version (__cpp_lib_span): Update value.
5403 * testsuite/23_containers/span/1.cc: Check new value.
5404 * testsuite/23_containers/span/2.cc: Check new value.
5405 * testsuite/23_containers/span/explicit.cc: New test.
5406
5407 * include/std/span (span::__is_compatible_array): Simplify alias
5408 template by using requires-clause.
5409 (span::__is_compatible_ref): New alias template for constraining
5410 constructors.
5411 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
5412 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
5413 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
5414 redundant parentheses.
5415 (span(R&&)): Add missing constraints.
5416
5417 * include/std/span (span): Reorder members and rename template
5418 parameters to match declarations in the C++2a working paper.
5419
5420 P2116R0 Remove tuple-like protocol support from fixed-extent span
5421 * include/std/span (get, tuple_size, tuple_element): Remove.
5422 * testsuite/23_containers/span/everything.cc: Remove checks for
5423 tuple-like API.
5424 * testsuite/23_containers/span/get_neg.cc: Remove.
5425 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
5426 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
5427 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
5428
5429 2020-02-17 Patrick Palka <ppalka@redhat.com>
5430
5431 P2106R0 Alternative wording for GB315 and GB316
5432 * include/bits/ranges_algo.h (in_fun_result): New.
5433 (for_each_result, for_each_n_result): Change into an alias of
5434 in_fun_result.
5435 (in_in_result): New.
5436 (mismatch_result): Change into an alias of in_in_result.
5437 (copy_if_result): Change into an alias of in_out_result.
5438 (swap_ranges_result): Change into an alias of in_in_result.
5439 (unary_transform_result): Change into an alias of in_out_result.
5440 (in_in_out_result): New.
5441 (binary_transform_result): Change into an alias of in_in_out_result.
5442 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
5443 remove_copy_result, unique_copy_result, reverse_copy_result,
5444 rotate_copy_result, partial_sort_copy_result): Change into an alias of
5445 in_out_result.
5446 (in_out_out_result): New.
5447 (partition_copy_result, merge_result): Change into an alias of
5448 in_out_out_result.
5449 (set_union_result, set_intersection_result): Change into an alias of
5450 in_in_out_result.
5451 (set_difference_result): Change into an alias of in_out_result.
5452 (set_symmetric_difference): Change into an alias of in_in_out_result.
5453 (min_max_result): New.
5454 (minmax_result, minmax_element_result): Change into an alias of
5455 min_max_result.
5456 (in_found_result): New.
5457 (next_permutation_result, prev_permutation_result): Change into an alias
5458 of in_found_result.
5459 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
5460 Adjust following changes to next_permutation_result and
5461 prev_permutation_result.
5462 * include/bits/ranges_algobase.h (in_out_result): New.
5463 (copy_result, move_result, move_backward_result, copy_backward_result,
5464 copy_n_result): Change into an alias of in_out_result.
5465 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
5466 uninitialized_copy_n_result, uninitialized_move_result,
5467 uninitialized_move_n_result): Likewise.
5468 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
5469 structured bindings.
5470 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
5471
5472 P1243R4 Rangify new algorithms
5473 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
5474 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
5475 * testsuite/25_algorithms/clamp/constrained.cc: New test.
5476 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
5477 * testsuite/25_algorithms/sample/constrained.cc: New test.
5478
5479 2020-02-17 Jonathan Wakely <jwakely@redhat.com>
5480
5481 P1964R2 Wording for boolean-testable
5482 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
5483 (__adjacent_find_fn): Cast result of predicate to bool.
5484 * include/std/concepts (__boolean): Remove.
5485 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
5486 new helper concepts.
5487 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
5488 (predicate): Use __boolean_testable instead of boolean.
5489 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
5490 Likewise.
5491
5492 P1970R2 Consistency for size() functions: Add ranges::ssize
5493 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
5494 * testsuite/std/ranges/access/ssize.cc: New test.
5495
5496 P1956R1 On the names of low-level bit manipulation functions
5497 * include/bits/hashtable_policy.h: Update comment.
5498 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
5499 (ispow2, ceil2, floor2, log2p1): Likewise.
5500 (__cpp_lib_int_pow2): Add feature test macro.
5501 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
5502 * include/std/memory (assume_aligned): Adjust use of ispow2.
5503 * include/std/version (__cpp_lib_int_pow2): Add.
5504 * libsupc++/new_opa.cc: Adjust use of __ispow2.
5505 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
5506 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
5507 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
5508 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
5509 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
5510 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
5511 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
5512 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
5513 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
5514 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
5515 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
5516 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
5517
5518 * include/std/charconv: Add comment.
5519
5520 PR libstdc++/92546 (partial)
5521 * include/bits/random.h (uniform_random_bit_generator): Move definition
5522 to <bits/uniform_int_dist.h>.
5523 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
5524 of <bits/random.h>.
5525 * include/bits/ranges_algobase.h: Do not include <cmath>.
5526 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
5527 Move here.
5528 * include/std/ranges: Do not include <limits>.
5529 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
5530
5531 PR libstdc++/92546 (partial)
5532 * include/Makefile.am: Add new header.
5533 * include/Makefile.in: Regenerate.
5534 * include/bits/int_limits.h: New header.
5535 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
5536 numeric_limits with __detail::__int_limits.
5537 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
5538 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
5539 Likewise.
5540 * include/std/charconv (__to_chars_8, __from_chars_binary)
5541 (__from_chars_alpha_to_num, from_chars): Likewise.
5542 * include/std/memory_resource (polymorphic_allocator::allocate)
5543 (polymorphic_allocator::allocate_object): Likewise.
5544 * include/std/string_view (basic_string_view::_S_compare): Likewise.
5545 * include/std/utility (in_range): Likewise.
5546 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
5547 extra error about incomplete type __int_limits<bool>.
5548 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
5549 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
5550 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
5551 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
5552 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
5553 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
5554 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
5555 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
5556 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
5557 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
5558 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
5559 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
5560
5561 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
5562 value for partial_ordering::unordered.
5563
5564 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
5565 const-qualified expression variations.
5566 * include/std/concepts (copyable): Likewise.
5567
5568 * include/std/type_traits (__is_standard_integer): New helper trait.
5569 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
5570 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
5571 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
5572 * testsuite/20_util/integer_comparisons/1.cc: New test.
5573 * testsuite/20_util/integer_comparisons/2.cc: New test.
5574 * testsuite/20_util/integer_comparisons/equal.cc: New test.
5575 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
5576 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
5577 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
5578 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
5579 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
5580 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
5581 * testsuite/20_util/integer_comparisons/less.cc: New test.
5582 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
5583 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
5584 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
5585 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
5586 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
5587
5588 2020-02-16 Patrick Palka <ppalka@redhat.com>
5589
5590 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
5591 Move code after an early exit constexpr if to under an else branch.
5592 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
5593
5594 2020-02-15 Patrick Palka <ppalka@redhat.com>
5595
5596 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
5597 * include/bits/ranges_algobase.h: Likewise.
5598 * include/bits/ranges_uninitialized.h: Likewise.
5599
5600 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
5601 binary_search, copy_if, count, count_if, equal_range, find, find_end,
5602 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
5603 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
5604 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
5605 lower_bound, make_heap, max, max_element, merge, min, min_element,
5606 minmax, minmax_element, mismatch, next_permutation, none_of,
5607 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
5608 partition_point, pop_heap, prev_permutation, push_heap, remove,
5609 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
5610 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
5611 search, search_n, set_difference, set_intersection,
5612 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
5613 stable_partition, stable_sort, swap_ranges, transform, unique,
5614 unique_copy, upper_bound): Convert into function objects.
5615 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
5616 fill, move_backward, copy_backward): Likewise.
5617 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
5618 uninitialized_default_construct_n, uninitialized_value_construct,
5619 uninitialized_value_construct_n, uninitialized_copy,
5620 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
5621 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
5622 destroy, destroy_n): Likewise.
5623
5624 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
5625 (ranges::find_end): ... here.
5626 (ranges::__lexicographical_compare): Fold into ...
5627 (ranges::lexicographical_compare): ... here.
5628 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
5629 (ranges::equal): ... here.
5630
5631 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
5632
5633 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
5634 * include/std/deque: Likewise.
5635 * include/std/forward_list: Likewise.
5636 * include/std/list: Likewise.
5637 * include/std/string: Likewise.
5638 * include/std/vector: Likewise.
5639 * include/std/version: Likewise.
5640 * testsuite/23_containers/deque/erasure.cc: Test for new value.
5641 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
5642 * testsuite/23_containers/list/erasure.cc: Likewise.
5643 * testsuite/23_containers/map/erasure.cc: Likewise.
5644 * testsuite/23_containers/set/erasure.cc: Likewise.
5645 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
5646 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
5647 * testsuite/23_containers/vector/erasure.cc: Likewise.
5648
5649 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
5650
5651 * include/bits/random.h (uniform_random_bit_generator): Require min()
5652 and max() to be constant expressions and min() to be less than max().
5653 * testsuite/26_numerics/random/concept.cc: Check additional cases.
5654 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
5655
5656 2020-02-13 Patrick Palka <ppalka@redhat.com>
5657
5658 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
5659 * include/Makefile.in: Regenerate.
5660 * include/bits/ranges_uninitialized.h: New header.
5661 * include/std/memory: Include it.
5662 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
5663 test.
5664 * .../uninitialized_copy/constrained.cc: New test.
5665 * .../uninitialized_default_construct/constrained.cc: New test.
5666 * .../uninitialized_fill/constrained.cc: New test.
5667 * .../uninitialized_move/constrained.cc: New test.
5668 * .../uninitialized_value_construct/constrained.cc: New test.
5669
5670 * include/Makefile.am: Add bits/ranges_algobase.h
5671 * include/Makefile.in: Regenerate.
5672 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
5673 existing #includes.
5674 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
5675 __detail::__is_move_iterator, copy_result, move_result,
5676 __equal, equal, copy_result, move_result, move_backward_result,
5677 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
5678 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
5679 fill): Split out into ...
5680 * bits/range_algobase.h: ... this new header.
5681
5682 2020-02-12 Patrick Palka <ppalka@redhat.com>
5683
5684 LWG 3389 and LWG 3390
5685 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
5686 constructing the move_iterator with __i.
5687 (counted_iterator::counted_iterator): Use std::move when initializing
5688 M_current with __i.
5689 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
5690 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
5691
5692 2020-02-12 Sandra Loosemore <sandra@codesourcery.com>
5693
5694 PR libstdc++/79193
5695 PR libstdc++/88999
5696
5697 * configure: Regenerated.
5698
5699 2020-02-12 François Dumont <fdumont@gcc.gnu.org>
5700
5701 * include/bits/hashtable.h
5702 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
5703 missing std namespace qualification to forward call.
5704
5705 2020-02-09 Jonathan Wakely <jwakely@redhat.com>
5706
5707 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
5708 comment.
5709 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
5710
5711 * include/std/ranges: Fix non-ASCII characters in comment.
5712
5713 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
5714 equality comparison to be valid and return bool.
5715 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
5716 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
5717 type with ambiguous conversion to fundamental types.
5718 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
5719
5720 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
5721
5722 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
5723 Use remove_cvref_t.
5724 (readable_traits): Rename to indirectly_readable_traits.
5725 (readable): Rename to indirectly_readable.
5726 (writable): Rename to indirectly_writable.
5727 (__detail::__iter_exchange_move): Do not use remove_reference_t.
5728 (indirectly_swappable): Adjust requires expression parameter types.
5729 expression.
5730 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
5731 (ranges::replace_if, ranges::generate_n, ranges::generate)
5732 (ranges::remove): Use new name for writable.
5733 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
5734 Use new name for readable.
5735 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
5736 new name for readable_traits.
5737 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
5738 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
5739 new definition of indirectly_readable.
5740
5741 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
5742 to take parameters of common_iterator, instead of the common_iterator
5743 type itself. Fix argument for __common_iter_has_arrow constraint.
5744 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
5745
5746 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
5747
5748 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
5749 warning.
5750 (basic_istream_view::_Iterator::operator++()): Add missing return.
5751
5752 2020-02-07 Patrick Palka <ppalka@redhat.com>
5753
5754 * include/bits/ranges_algo.h: Remove extraneous &&.
5755
5756 * include/std/ranges (ranges::__detail::__stream_extractable,
5757 ranges::basic_istream_view, ranges::istream_view): Define.
5758 * testsuite/std/ranges/istream_view: New test.
5759
5760 Implement C++20 range adaptors
5761 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
5762 (subrange::_S_store_size): Mark as const instead of constexpr to
5763 avoid what seems to be a bug in GCC.
5764 (__detail::__box): Give it defaulted copy and move constructors.
5765 (ranges::views::_Single::operator()): Mark constexpr.
5766 (ranges::views::_Iota::operator()): Mark constexpr.
5767 (__detail::Empty): Define.
5768 (ranges::views::__closure::_RangeAdaptor,
5769 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
5770 ranges::views::all, ranges::__detail::find_if,
5771 ranges::__detail::find_if_not, ranges::__detail::mismatch,
5772 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
5773 ranges::views::transform, take_view, ranges::views::take,
5774 take_while_view, ranges::views::take_while, drop_view,
5775 ranges::views::drop, join_view, ranges::views::join,
5776 __detail::require_constant, __detail::tiny_range, split_view,
5777 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
5778 common_view, ranges::views::common, reverse_view,
5779 ranges::views::reverse,
5780 ranges::views::__detail::__is_reversible_subrange,
5781 ranges::views::__detail::__is_reverse_view, reverse_view,
5782 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
5783 ranges::views::elements, ranges::views::keys, ranges::views::values):
5784 Define.
5785 (views): Alias for ranges::views.
5786 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
5787 tuple_element<1, ranges::subrange>): New partial specializations.
5788 * testsuite/std/ranges/adaptors/all.cc: New test.
5789 * testsuite/std/ranges/adaptors/common.cc: Likewise.
5790 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
5791 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
5792 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
5793 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
5794 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
5795 * testsuite/std/ranges/adaptors/join.cc: Likewise.
5796 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
5797 * testsuite/std/ranges/adaptors/split.cc: Likewise.
5798 * testsuite/std/ranges/adaptors/take.cc: Likewise.
5799 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
5800 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
5801
5802 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
5803
5804 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
5805 type of enumerations and comparison category types.
5806 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
5807 (__cmp_cat::_Ncmp::unordered): Change value to 2.
5808 (partial_ordering::_M_value, weak_ordering::_M_value)
5809 (strong_ordering::_M_value): Change type to __cmp_cat::type.
5810 (partial_ordering::_M_is_ordered): Remove data member.
5811 (partial_ordering): Use second bit of _M_value for unordered. Adjust
5812 comparison operators.
5813 (weak_ordering::operator partial_ordering): Simplify to remove
5814 branches.
5815 (operator<=>(unspecified, weak_ordering)): Likewise.
5816 (strong_ordering::operator partial_ordering): Likewise.
5817 (strong_ordering::operator weak_ordering): Likewise.
5818 (operator<=>(unspecified, strong_ordering)): Likewise.
5819 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
5820 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
5821 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
5822
5823 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
5824 __cpp_lib_three_way_comparison macro and use deduced return type for
5825 operator<=>.
5826 * testsuite/std/ranges/iota/iterator.cc: New test.
5827
5828 2020-02-07 Patrick Palka <ppalka@redhat.com>
5829 Jonathan Wakely <jwakely@redhat.com>
5830
5831 Implement C++20 constrained algorithms
5832 * include/Makefile.am: Add new header.
5833 * include/Makefile.in: Regenerate.
5834 * include/std/algorithm: Include <bits/ranges_algo.h>.
5835 * include/bits/ranges_algo.h: New file.
5836 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
5837 * testsuite/25_algorithms/all_of/constrained.cc: New test.
5838 * testsuite/25_algorithms/any_of/constrained.cc: New test.
5839 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
5840 * testsuite/25_algorithms/copy/constrained.cc: New test.
5841 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
5842 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
5843 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
5844 * testsuite/25_algorithms/count/constrained.cc: New test.
5845 * testsuite/25_algorithms/count_if/constrained.cc: New test.
5846 * testsuite/25_algorithms/equal/constrained.cc: New test.
5847 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
5848 * testsuite/25_algorithms/fill/constrained.cc: New test.
5849 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
5850 * testsuite/25_algorithms/find/constrained.cc: New test.
5851 * testsuite/25_algorithms/find_end/constrained.cc: New test.
5852 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
5853 * testsuite/25_algorithms/find_if/constrained.cc: New test.
5854 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
5855 * testsuite/25_algorithms/for_each/constrained.cc: New test.
5856 * testsuite/25_algorithms/generate/constrained.cc: New test.
5857 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
5858 * testsuite/25_algorithms/heap/constrained.cc: New test.
5859 * testsuite/25_algorithms/includes/constrained.cc: New test.
5860 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
5861 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
5862 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
5863 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
5864 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
5865 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
5866 test.
5867 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
5868 * testsuite/25_algorithms/max/constrained.cc: New test.
5869 * testsuite/25_algorithms/max_element/constrained.cc: New test.
5870 * testsuite/25_algorithms/merge/constrained.cc: New test.
5871 * testsuite/25_algorithms/min/constrained.cc: New test.
5872 * testsuite/25_algorithms/min_element/constrained.cc: New test.
5873 * testsuite/25_algorithms/minmax/constrained.cc: New test.
5874 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
5875 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
5876 * testsuite/25_algorithms/move/constrained.cc: New test.
5877 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
5878 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
5879 * testsuite/25_algorithms/none_of/constrained.cc: New test.
5880 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
5881 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
5882 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
5883 * testsuite/25_algorithms/partition/constrained.cc: New test.
5884 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
5885 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
5886 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
5887 * testsuite/25_algorithms/remove/constrained.cc: New test.
5888 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
5889 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
5890 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
5891 * testsuite/25_algorithms/replace/constrained.cc: New test.
5892 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
5893 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
5894 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
5895 * testsuite/25_algorithms/reverse/constrained.cc: New test.
5896 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
5897 * testsuite/25_algorithms/rotate/constrained.cc: New test.
5898 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
5899 * testsuite/25_algorithms/search/constrained.cc: New test.
5900 * testsuite/25_algorithms/search_n/constrained.cc: New test.
5901 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
5902 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
5903 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
5904 test.
5905 * testsuite/25_algorithms/set_union/constrained.cc: New test.
5906 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
5907 * testsuite/25_algorithms/sort/constrained.cc: New test.
5908 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
5909 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
5910 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
5911 * testsuite/25_algorithms/transform/constrained.cc: New test.
5912 * testsuite/25_algorithms/unique/constrained.cc: New test.
5913 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
5914 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
5915
5916 2020-02-06 Jonathan Wakely <jwakely@redhat.com>
5917
5918 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
5919 number in comment. Fix indentation.
5920
5921 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
5922 redundant _GLIBCXX20_CONSTEXPR.
5923
5924 * include/std/ranges (viewable_range): Replace decay_t with
5925 remove_cvref_t (LWG 3375).
5926
5927 2020-02-05 Jonathan Wakely <jwakely@redhat.com>
5928
5929 * include/bits/iterator_concepts.h (iter_reference_t)
5930 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
5931 Remove workarounds for PR c++/67704.
5932 * testsuite/24_iterators/aliases.cc: New test.
5933
5934 2020-02-05 Patrick Palka <ppalka@redhat.com>
5935
5936 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
5937 when initializing _M_current.
5938 (move_iterator::base): Split into two overloads differing in
5939 ref-qualifiers as in P1207R4 for C++20.
5940
5941 2020-02-04 Jonathan Wakely <jwakely@redhat.com>
5942
5943 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
5944 use.
5945
5946 PR libstdc++/93562
5947 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
5948 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
5949 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
5950
5951 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
5952
5953 * configure: Regenerate.
5954
5955 2020-01-31 Patrick Palka <ppalka@redhat.com>
5956
5957 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
5958 test_range::end() returns the same type as test_range::begin().
5959 * testsuite/24_iterators/range_operations/next.cc: Likewise.
5960 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
5961 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
5962 Always return a sentinel<I>.
5963
5964 2020-01-29 Jonathan Wakely <jwakely@redhat.com>
5965
5966 PR libstdc++/92895
5967 * include/std/stop_token (stop_token::stop_possible()): Call new
5968 _M_stop_possible() function.
5969 (stop_token::stop_requested()): Do not use stop_possible().
5970 (stop_token::binary_semaphore): New class, as temporary stand-in for
5971 std::binary_semaphore.
5972 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
5973 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
5974 New data members for symchronization with stop_callback destruction.
5975 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
5976 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
5977 Remove.
5978 (stop_token::_Stop_cb::_M_run): New member function.
5979 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
5980 Remove.
5981 (stop_token::_Stop_state::_M_owners): New data member to track
5982 reference count for ownership.
5983 (stop_token::_Stop_state::_M_value): New data member combining a
5984 spinlock, the stop requested flag, and the reference count for
5985 associated stop_source objects.
5986 (stop_token::_Stop_state::_M_requester): New data member for
5987 synchronization with stop_callback destruction.
5988 (stop_token::_Stop_state::_M_stop_possible()): New member function.
5989 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
5990 of _M_value.
5991 (stop_token::_Stop_state::_M_add_owner)
5992 (stop_token::_Stop_state::_M_release_ownership)
5993 (stop_token::_Stop_state::_M_add_ssrc)
5994 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
5995 updating reference counts.
5996 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
5997 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
5998 (stop_token::_Stop_state::_M_try_lock)
5999 (stop_token::_Stop_state::_M_try_lock_and_stop)
6000 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
6001 managing spinlock.
6002 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
6003 read and update state. Release lock while running callbacks. Use new
6004 data members to synchronize with callback destruction.
6005 (stop_token::_Stop_state::_M_remove_callback): Likewise.
6006 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
6007 to read and update state.
6008 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
6009 replacing shared_ptr.
6010 (stop_source::stop_source(const stop_source&)): Update reference count.
6011 (stop_source::operator=(const stop_source&)): Likewise.
6012 (stop_source::~stop_source()): Likewise.
6013 (stop_source::stop_source(stop_source&&)): Define as defaulted.
6014 (stop_source::operator=(stop_source&&)): Establish postcondition on
6015 parameter.
6016 (stop_callback): Enforce preconditions on template parameter. Replace
6017 base class with data member of new _Cb_impl type.
6018 (stop_callback::stop_callback(const stop_token&, Cb&&))
6019 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
6020 (stop_callback::_Cb_impl): New type wrapping _Callback member and
6021 defining the _S_execute member function.
6022 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
6023 test.
6024 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
6025 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
6026 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
6027 New test.
6028 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
6029 test.
6030 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
6031 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
6032 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
6033 test.
6034
6035 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
6036 three_way_comparable_with.
6037 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
6038 (compare_three_way::operator()): Remove redundant constraint from
6039 requires-clause.
6040 (__detail::_Synth3way::operator()): Use three_way_comparable_with
6041 instead of workaround.
6042 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
6043 output due to simplified constraints on compare_three_way::operator().
6044
6045 PR libstdc++/93479
6046 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
6047 * testsuite/18_support/comparisons/object/93479.cc: New test.
6048
6049 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
6050 returns the same type as test_range::begin(). Add comments.
6051 * testsuite/std/ranges/access/rbegin.cc: Likewise.
6052 * testsuite/std/ranges/access/rend.cc: Likewise.
6053 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
6054 test_range is the same as its iterator type.
6055 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
6056 operator- overloads to satisfy sized_sentinel_for when the iterator
6057 satisfies random_access_iterator.
6058
6059 2020-01-28 Jonathan Wakely <jwakely@redhat.com>
6060
6061 PR libstdc++/93470
6062 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
6063 static assertion to object types.
6064
6065 PR libstdc++/93325
6066 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
6067 clock_gettime instead of explicit glibc version check.
6068 * configure: Regenerate.
6069
6070 2020-01-28 Martin Liska <mliska@suse.cz>
6071
6072 PR libstdc++/93478
6073 * include/std/atomic: Fix typo.
6074 * include/std/optional: Likewise.
6075
6076 2020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
6077
6078 * configure: Regenerate.
6079
6080 2020-01-27 Jonathan Wakely <jwakely@redhat.com>
6081
6082 PR libstdc++/93426
6083 * include/std/span (span): Fix deduction guide.
6084 * testsuite/23_containers/span/deduction.cc: New test.
6085
6086 2020-01-24 Jonathan Wakely <jwakely@redhat.com>
6087
6088 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
6089 (__cmp_cat::_Ord::equivalent): Add enumerator.
6090 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
6091 and greater.
6092 (partial_ordering, weak_ordering, strong_ordering): Remove
6093 constructors taking __cmp_cat::_Eq parameters. Use renamed
6094 enumerators.
6095
6096 2020-01-24 Maciej W. Rozycki <macro@wdc.com>
6097
6098 * acinclude.m4: Handle `--with-toolexeclibdir='.
6099 * Makefile.in: Regenerate.
6100 * aclocal.m4: Regenerate.
6101 * configure: Regenerate.
6102 * doc/Makefile.in: Regenerate.
6103 * include/Makefile.in: Regenerate.
6104 * libsupc++/Makefile.in: Regenerate.
6105 * po/Makefile.in: Regenerate.
6106 * python/Makefile.in: Regenerate.
6107 * src/Makefile.in: Regenerate.
6108 * src/c++11/Makefile.in: Regenerate.
6109 * src/c++17/Makefile.in: Regenerate.
6110 * src/c++98/Makefile.in: Regenerate.
6111 * src/filesystem/Makefile.in: Regenerate.
6112 * testsuite/Makefile.in: Regenerate.
6113
6114 2020-01-23 Alexandre Oliva <oliva@adacore.com>
6115
6116 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
6117 * configure: Rebuild.
6118
6119 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
6120
6121 2020-01-23 Jonathan Wakely <jwakely@redhat.com>
6122
6123 PR libstdc++/91947
6124 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
6125 rule.
6126 * include/Makefile.in: Regenerate.
6127
6128 2020-01-20 Jonathan Wakely <jwakely@redhat.com>
6129
6130 * doc/xml/faq.xml: Fix grammar.
6131 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
6132 * doc/xml/manual/spine.xml: Update copyright years.
6133 * doc/html/*: Regenerate.
6134
6135 2020-01-19 Eric S. Raymond <esr@thyrsus.com>
6136
6137 * doc/xml/faq.xml: Update for SVN -> Git transition.
6138 * doc/xml/manual/appendix_contributing.xml: Likewise.
6139 * doc/xml/manual/status_cxx1998.xml: Likewise.
6140 * doc/xml/manual/status_cxx2011.xml: Likewise.
6141 * doc/xml/manual/status_cxx2014.xml: Likewise.
6142 * doc/xml/manual/status_cxx2017.xml: Likewise.
6143 * doc/xml/manual/status_cxx2020.xml: Likewise.
6144 * doc/xml/manual/status_cxxtr1.xml: Likewise.
6145 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
6146
6147 2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
6148
6149 * include/Makefile.am: Add coroutine to the std set.
6150 * include/Makefile.in: Regenerated.
6151 * include/std/coroutine: New file.
6152
6153 2020-01-17 Jonathan Wakely <jwakely@redhat.com>
6154
6155 PR libstdc++/92376
6156 * include/bits/c++config: Only do PSTL config when the header is
6157 present, to fix freestanding.
6158 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
6159 functions if they were detected by configure.
6160
6161 2020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
6162 Matthew Bauer <mjbauer95@gmail.com>
6163 Jonathan Wakely <jwakely@redhat.com>
6164
6165 PR bootstrap/64271 (partial)
6166 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
6167 to unsigned short.
6168 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
6169 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
6170 definitions with NetBSD upstream.
6171 (ctype_base::blank): Use _CTYPE_BL.
6172 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
6173 Declaration.
6174 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
6175 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
6176 parameters to unsigned char.
6177 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
6178
6179 2020-01-16 François Dumont <fdumont@gcc.gnu.org>
6180
6181 PR libstdc++/91263
6182 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
6183 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
6184 (_Equality_base): Remove.
6185 (_Equality<>::_M_equal): Review implementation. Use
6186 std::is_permutation.
6187 * testsuite/23_containers/unordered_multiset/operators/1.cc
6188 (Hash, Equal, test02, test03): New.
6189 * testsuite/23_containers/unordered_set/operators/1.cc
6190 (Hash, Equal, test02, test03): New.
6191
6192 2020-01-15 Jonathan Wakely <jwakely@redhat.com>
6193
6194 PR libstdc++/93267
6195 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
6196 Move here from <bits/range_access.h> and define using __int128 when
6197 available.
6198 (__is_integer_like, __is_signed_integer_like): Move here from
6199 <bits/range_access.h>.
6200 (weakly_incrementable): Use __is_signed_integer_like.
6201 * include/bits/range_access.h (__max_diff_type, __max_size_type)
6202 (__is_integer_like, __is_signed_integer_like): Move to
6203 <bits/iterator_concepts.h>.
6204 (__make_unsigned_like_t): Move here from <ranges>.
6205 * include/std/ranges (__make_unsigned_like_t): Move to
6206 <bits/range_access.h>.
6207 (iota_view): Replace using-directive with using-declarations.
6208 * testsuite/std/ranges/iota/93267.cc: New test.
6209 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
6210
6211 2020-01-13 Jonathan Wakely <jwakely@redhat.com>
6212
6213 PR libstdc++/93244
6214 * include/bits/fs_path.h (path::generic_string<C,A>)
6215 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
6216 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
6217 root-dir is converted to forward slash in generic pathname.
6218 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
6219 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
6220
6221 PR libstdc++/58605
6222 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
6223 Define.
6224 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
6225 (__atomic_float): Add default member initializer for C++20.
6226 * include/std/atomic (atomic): Likewise.
6227 (atomic::atomic()): Remove noexcept-specifier on default constructor.
6228 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
6229 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
6230 number.
6231 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
6232 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
6233 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
6234 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
6235 expected result for is_trivially_default_constructible.
6236 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
6237 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
6238 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
6239 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
6240 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
6241 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
6242 expected results for is_trivially_default_constructible.
6243 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
6244 new test generator.
6245
6246 2020-01-10 Jonathan Wakely <jwakely@redhat.com>
6247
6248 * testsuite/util/testsuite_iterators.h: Improve comment.
6249
6250 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
6251 initialization syntax.
6252
6253 PR libstdc++/92285
6254 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
6255 of base class independent of __cplusplus value.
6256 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
6257 type defined in the base class
6258 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
6259 * testsuite/24_iterators/istreambuf_iterator/requirements/
6260 base_classes.cc: Adjust expected base class for C++98.
6261
6262 2020-01-09 Olivier Hainque <hainque@adacore.com>
6263
6264 * doc/xml/manual/appendix_contributing.xml: Document _C2
6265 as a reserved identifier, by VxWorks.
6266 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
6267 * include/bits/stl_multimap.h: Likewise.
6268
6269 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
6270
6271 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
6272 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
6273 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
6274 partial specialization to disambiguate the two constrained
6275 specializations.
6276
6277 * include/experimental/type_traits (experimental::is_pod_v): Disable
6278 -Wdeprecated-declarations warnings around reference to std::is_pod.
6279 * include/std/type_traits (is_pod_v): Likewise.
6280 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
6281 is_standard_layout and is_trivial. Do not check is_pod for C++20.
6282 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
6283 Add -Wno-deprecated for C++20.
6284 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
6285 * testsuite/20_util/is_pod/value.cc: Likewise.
6286 * testsuite/experimental/type_traits/value.cc: Likewise.
6287
6288 2020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
6289
6290 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
6291 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
6292 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
6293
6294 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
6295
6296 PR libstdc++/93205
6297 * include/bits/random.h (operator>>): Check stream operation succeeds.
6298 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
6299 typedefs.
6300 (operator>>): Remove redundant __istream_type typedefs. Check stream
6301 operations succeed.
6302 (__extract_params): New function to fill a vector from a stream.
6303 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
6304
6305 PR libstdc++/93208
6306 * config/abi/pre/gnu.ver: Add new exports.
6307 * include/std/memory_resource (memory_resource::~memory_resource()):
6308 Do not define inline.
6309 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
6310 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
6311 Define.
6312 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
6313 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
6314
6315 2020-01-09 François Dumont <fdumont@gcc.gnu.org>
6316
6317 PR libstdc++/92124
6318 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
6319 template alias.
6320 (_Hashtable<>::__fwd_value_for): New.
6321 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
6322 parameter.
6323 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
6324 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
6325 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
6326 with std::move.
6327 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
6328 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
6329 Adapt.
6330 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
6331 Adapt.
6332 * testsuite/23_containers/unordered_set/92124.cc: New.
6333
6334 2020-01-08 Jonathan Wakely <jwakely@redhat.com>
6335
6336 PR libstdc++/93201
6337 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
6338 detailed error reporting for remove_all. Check result of recursive
6339 call before incrementing iterator.
6340 (remove_all(const path&), remove_all(const path&, error_code&)): Use
6341 do_remove_all.
6342 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
6343 result of recursive call before incrementing iterator.
6344 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
6345 are reported correctly.
6346 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
6347
6348 2020-01-07 Thomas Rodgers <trodgers@redhat.com>
6349
6350 * include/std/condition_variable
6351 (condition_variable_any::wait_on): Rename to match current draft
6352 standard.
6353 (condition_variable_any::wait_on_until): Likewise.
6354 (condition_variable_any::wait_on_for): Likewise.
6355 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
6356 Adjust tests to account for renamed methods.
6357
6358 2020-01-07 François Dumont <fdumont@gcc.gnu.org>
6359
6360 PR libstdc++/92124
6361 * include/bits/stl_tree.h
6362 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
6363 std::move_if_noexcept by std::move.
6364 * testsuite/23_containers/map/92124.cc: New.
6365 * testsuite/23_containers/set/92124.cc: New.
6366
6367 2020-01-06 Jonathan Wakely <jwakely@redhat.com>
6368
6369 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
6370 (stop_source): Likewise (LWG 3362).
6371 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
6372 comparisons.
6373
6374 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
6375 (lexicographical_compare_three_way): Do not depend on
6376 __cpp_lib_concepts.
6377 * include/std/version (__cpp_lib_three_way_comparison): Only define
6378 when __cpp_lib_concepts is defined.
6379 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
6380
6381 2020-01-03 Jonathan Wakely <jwakely@redhat.com>
6382
6383 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
6384 Only define four-argument overload when __cpp_lib_concepts is defined.
6385
6386 2020-01-01 John David Anglin <danglin@gcc.gnu.org>
6387
6388 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
6389
6390 2020-01-01 Jakub Jelinek <jakub@redhat.com>
6391
6392 Update copyright years.
6393 \f
6394 Copyright (C) 2020 Free Software Foundation, Inc.
6395
6396 Copying and distribution of this file, with or without modification,
6397 are permitted in any medium without royalty provided the copyright
6398 notice and this notice are preserved.