Daily bump.
[gcc.git] / libstdc++-v3 / ChangeLog
1 2020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
2
3 * doc/xml/manual/policy_data_structures_biblio.xml: Remove
4 stray change.
5
6 2020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
7
8 * doc/xml/manual/policy_data_structures_biblio.xml: Switch
9 www.cs.princeton.edu to https.
10 * doc/html/manual/policy_data_structures.html: Regenerate.
11
12 2020-05-31 Douglas B Rupp <douglas.b.rupp@gmail.com>
13
14 * crossconfig.m4 (<*-vxworks>): Check for more math decls.
15 * configure: Rebuild.
16
17 2020-05-29 H.J. Lu <hjl.tools@gmail.com>
18
19 PR bootstrap/95413
20 * configure: Regenerated.
21
22 2020-05-29 François Dumont <fdumont@gcc.gnu.org>
23
24 PR libstdc++/95079
25 * include/bits/hashtable_policy.h (_Insert_base<>::try_emplace): New.
26 * include/bits/unordered_map.h (unordered_map<>::try_emplace): Adapt.
27 (unordered_map<>::insert_or_assign): Adapt.
28
29 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
30
31 PR libstdc++/95282
32 * include/bits/atomic_base.h (__atomic_impl::load): Add
33 cv-qualifiers to parameter so that _Tp is deduced as the
34 unqualified type.
35 * testsuite/29_atomics/atomic_float/95282.cc: New test.
36
37 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
38
39 PR libstdc++/95322
40 * include/std/ranges (transform_view::_Sentinel): Allow hidden
41 friends to work with _Iterator<true> and _Iterator<false>.
42 (join_view::_Sentinel): Likewise.
43 * testsuite/std/ranges/adaptors/95322.cc: New test.
44
45 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
46
47 PR libstdc++/94354
48 * include/bits/stl_iterator.h (reverse_iterator): Fix comparison
49 operators to use the correct operations on the underlying
50 iterators.
51 * testsuite/24_iterators/reverse_iterator/rel_ops.cc: New test.
52
53 2020-05-27 Jonathan Wakely <jwakely@redhat.com>
54
55 * testsuite/18_support/comparisons/categories/zero_neg.cc: New test.
56
57 2020-05-26 Patrick Palka <ppalka@redhat.com>
58
59 PR libstdc++/95322
60 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
61 Remove and instead define it ...
62 (common_iterator::_Proxy): ... here.
63 (common_iterator::operator->): Use it.
64 * testsuite/24_iterators/common_iterator/2.cc: New test.
65 * testsuite/std/ranges/adaptors/95322.cc: New test.
66
67 2020-05-23 Patrick Palka <ppalka@redhat.com>
68
69 PR libstdc++/93978
70 * testsuite/std/ranges/adaptors/93978.cc: Add -Wall to
71 dg-additional-options. Avoid unused-but-set-variable warning.
72
73 2020-05-23 Jonathan Wakely <jwakely@redhat.com>
74
75 PR libstdc++/95289
76 * include/debug/helper_functions.h (__get_distance): Only declare
77 as a constexpr function for C++14 and up.
78 * testsuite/25_algorithms/copy/debug/95289.cc: New test.
79
80 * include/bits/fs_path.h (__detail::_S_range_begin)
81 (__detail::_S_range_end, path::_S_string_from_iter): Replace with
82 overloaded function template __detail::__effective_range.
83 (__detail::__effective_range): New overloaded function template to
84 create a basic_string or basic_string_view for an effective range.
85 (__detail::__value_type_is_char): Use __detail::__effective_range.
86 Do not use remove_const on value type.
87 (__detail::__value_type_is_char_or_char8_t): Likewise.
88 (path::path(const Source&, format))
89 (path::path(const Source&, const locale&))
90 (path::operator/=(const Source&), path::append(const Source&))
91 (path::concat(const Source&)): Use __detail::__effective_range.
92 (path::_S_to_string(InputIterator, InputIterator)): New function
93 template to create a string view if possible, or string otherwise.
94 (path::_S_convert): Add overloads that convert a string returned
95 by __detail::__effective_range. Use if-constexpr to inline conversion
96 logic from all overloads of _Cvt::_S_convert.
97 (path::_S_convert_loc): Add overload that converts a string. Use
98 _S_to_string to avoid allocation when possible.
99 (path::_Cvt): Remove.
100 (path::operator+=(CharT)): Remove indirection through path::concat.
101 * include/experimental/bits/fs_path.h (path::_S_convert_loc): Add
102 overload for non-const pointers, to avoid constructing a std::string.
103 * src/c++17/fs_path.cc (path::_S_convert_loc): Replace conditional
104 compilation with call to _S_convert.
105
106 * include/bits/fs_path.h (__detail::_S_range_begin)
107 (__detail::_S_range_end): Remove unintentional static specifiers.
108 * include/experimental/bits/fs_path.h (__detail::_S_range_begin)
109 (__detail::_S_range_end): Likewise.
110
111 * include/bits/fs_path.h (filesystem::__detail::__is_encoded_char):
112 Replace alias template with variable template. Don't remove const.
113 (filesystem::__detail::__is_path_src): Replace overloaded function
114 template with variable template and specializations.
115 (filesystem::__detail::__is_path_iter_src): Replace alias template
116 with class template.
117 (filesystem::__detail::_Path): Use __is_path_src. Remove support for
118 iterator pairs.
119 (filesystem::__detail::_Path2): New alias template for checking
120 InputIterator requirements.
121 (filesystem::__detail::__constructible_from): Remove.
122 (filesystem::path): Replace _Path<Iter, Iter> with _Path2<Iter>.
123 * testsuite/27_io/filesystem/path/construct/80762.cc: Check with two
124 constructor arguments of void and void* types.
125
126 2020-05-21 Matthias Kretz <kretz@kde.org>
127
128 * testsuite/Makefile.am: Remove dup target_triplet and set tool,
129 allowing runtest to work without arguments.
130 * testsuite/Makefile.in: Regenerate.
131
132 2020-05-21 Jonathan Wakely <jwakely@redhat.com>
133
134 PR libstdc++/93983
135 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
136 Reorder constraints to avoid recursion when constructors use
137 iterator_traits (LWG 3420).
138 * testsuite/24_iterators/customization_points/lwg3420.cc: New test.
139
140 * include/experimental/socket (basic_socket::is_open()
141 (basic_socket_acceptor::is_open()): Use _GLIBCXX_NODISCARD macro.
142
143 * include/experimental/bits/net.h (__endpoint, __protocol)
144 (__acceptable_protocol, __inet_protocol): New concepts.
145 (__detail::__is_endpoint): Move trait from <experimental/socket>.
146 (__is_protocol, __is_acceptable_protocol, __is_inet_protocol): New
147 traits.
148 (__endpoint, __protocol, __acceptable_protocol): New variable
149 templates.
150 * include/experimental/socket (__is_endpoint): Move to net.h header.
151 (basic_socket, basic_socket_acceptor): Check requirements.
152
153 * include/experimental/executor (use_future_t::use_future_t()): Fix
154 incorrect noexcept-specifier.
155 * include/experimental/internet (basic_resolver_results): Adjust
156 whitespace.
157 * include/experimental/socket (__basic_socket_impl::release): Add
158 member function.
159 (basic_socket(io_context&, const endpoint_type&)): Fix argument to
160 target constructor.
161 (basic_socket::release(), basic_socket::release(error_code&)): Add
162 missing member functions.
163 (basic_socket::is_open()): Add nodiscard attribute.
164 (basic_socket::close(error_code&)): Pass argument to base function.
165 (basic_socket_acceptor::release())
166 (basic_socket_acceptor::release(error_code&)): Add missing member
167 functions.
168 (basic_socket_acceptor::is_open()): Add nodiscard attribute.
169 (basic_socket_streambuf::error()): Add noexcept.
170 (basic_socket_iostream::error()): Likewise.
171 * testsuite/experimental/net/socket/basic_socket.cc: New test.
172
173 * include/experimental/buffer: Replace typedefs with
174 alias-declarations.
175 * include/experimental/executor: Likewise.
176 * include/experimental/internet: Likewise.
177 * include/experimental/socket: Likewise.
178 * include/experimental/timer: Likewise.
179
180 2020-05-19 Jonathan Wakely <jwakely@redhat.com>
181
182 PR libstdc++/94087
183 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
184 passed in.
185 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand
186 fallback.
187 (random_device::_M_init): Use __x86_rdseed_rdrand when both
188 instructions are available.
189 * testsuite/26_numerics/random/random_device/94087.cc: New test.
190
191 2020-05-19 Patrick Palka <ppalka@redhat.com>
192
193 PR c++/66439
194 * testsuite/20_util/pair/astuple/get_neg.cc: Prune "type/value
195 mismatch" messages.
196 * testsuite/20_util/tuple/element_access/get_neg.cc: Likewise.
197
198 2020-05-15 H.J. Lu <hongjiu.lu@intel.com>
199
200 PR bootstrap/95147
201 * configure: Regenerated.
202
203 2020-05-14 H.J. Lu <hongjiu.lu@intel.com>
204
205 * configure: Regenerated.
206
207 2020-05-13 Alexandre Oliva <oliva@adacore.com>
208
209 PR libstdc++/77691
210 * include/experimental/memory_resource
211 (__resource_adaptor_imp::do_allocate): Handle max_align_t on
212 x86-vxworks as on x86-solaris.
213 (__resource_adaptor_imp::do_deallocate): Likewise.
214 * testsuite/experimental/memory_resource/new_delete_resource.cc:
215 Drop xfail.
216 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
217 (test03): Drop max-align test for char-aligned alloc.
218
219 2020-05-08 Ulrich Drepper <drepper@redhat.com>
220
221 * include/bits/atomic_base.h (atomic_flag): Implement test member
222 function.
223 * include/std/version: Define __cpp_lib_atomic_flag_test.
224 * testsuite/29_atomics/atomic_flag/test/explicit.cc: New file.
225 * testsuite/29_atomics/atomic_flag/test/implicit.cc: New file.
226
227 2020-05-07 Jonathan Wakely <jwakely@redhat.com>
228
229 PR libstdc++/94971 (partial)
230 * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify
231 std::sample using macro to work in parallel mode.
232 (__sort_fn): Likewise for std::sort.
233 (ranges::__nth_element_fn): Likewise for std::nth_element.
234 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
235 Likewise for std::__min_cmp.
236 * include/parallel/algobase.h (lexicographical_compare_three_way):
237 Add to namespace std::__parallel.
238
239 PR c/92472
240 * include/parallel/multiway_merge.h (_GuardedIterator::operator*)
241 (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
242 (_UnguardedIterator::operator _RAIter): Add const qualifier.
243 (operator<(_GuardedIterator&, _GuardedIterator&)
244 (operator<=(_GuardedIterator&, _GuardedIterator&)
245 (operator<(_UnguardedIterator&, _UnguardedIterator&)
246 (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
247 parameters to const references.
248
249 2020-05-07 Eric Botcazou <ebotcazou@adacore.com>
250
251 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
252 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
253
254 2020-05-06 François Dumont <fdumont@gcc.gnu.org>
255
256 * include/bits/stl_algobase.h (struct _Bit_iterator): New declaration.
257 (std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise.
258 * include/bits/stl_bvector.h (__fill_bvector): Move outside
259 _GLIBCXX_STD_C namespace.
260 (fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename
261 into...
262 (__fill_a1): ...this.
263 * testsuite/25_algorithms/fill/bvector/1.cc: New.
264
265 2020-05-06 H.J. Lu <hongjiu.lu@intel.com>
266
267 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
268
269 2020-05-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
270
271 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
272 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
273 Likewise.
274 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
275 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
276 Likewise.
277
278 2020-05-06 Martin Liska <mliska@suse.cz>
279
280 Revert:
281 2020-05-05 Martin Liska <mliska@suse.cz>
282 PR c/92472
283 * include/parallel/multiway_merge.h:
284 Use const for _Compare template argument.
285
286 2020-05-06 Jonathan Wakely <jwakely@redhat.com>
287
288 * doc/xml/manual/abi.xml (abi.versioning.history): Document library
289 versions for GCC 9.[123] and 10.1 releases.
290 * doc/html/*: Regenerate.
291
292 2020-05-06 Jakub Jelinek <jakub@redhat.com>
293
294 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
295 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
296 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
297 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
298 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
299 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
300 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
301
302 2020-05-05 Martin Liska <mliska@suse.cz>
303
304 PR c/92472
305 * include/parallel/multiway_merge.h:
306 Use const for _Compare template argument.
307
308 2020-05-04 Fangrui Song <maskray@google.com>
309
310 * libsupc++/cxxabi.h (__cxa_finalize): Fix return type.
311
312 2020-05-04 Jonathan Wakely <jwakely@redhat.com>
313
314 * doc/xml/faq.xml: Use working link for SGI STL FAQ.
315 * doc/html/*: Regenerate.
316
317 PR libstdc++/94906
318 * src/c++17/memory_resource.cc
319 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift
320 operands.
321
322 2020-05-04 Nathan Sidwell <nathan@acm.org>
323
324 PR libstdc++/94747
325 * libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to
326 ptrdiff_t before negation, to show intent more clearly.
327
328 2020-05-04 Jonathan Wakely <jwakely@redhat.com>
329
330 PR libstdc++/94936
331 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
332 Add comment about single-threaded behaviour.
333 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
334 class member access out of loop.
335 (synchronized_pool_resource::synchronized_pool_resource())
336 (synchronized_pool_resource::~synchronized_pool_resource())
337 (synchronized_pool_resource::release()): Check __gthread_active_p
338 before creating and/or deleting the thread-specific data key.
339 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust
340 assertions.
341 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
342 path for single-threaded case.
343 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
344 Likewise. Return if unable to find a pool that owns the allocation.
345 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
346 New test.
347 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
348 test.
349 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New
350 test.
351
352 2020-05-03 Jonathan Wakely <jwakely@redhat.com>
353
354 PR libstdc++/94933
355 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
356 usable in constant expressions.
357 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
358 non-scalars.
359
360 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
361
362 PR libstdc++/94901
363 * testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too.
364
365 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
366 Patrick Palka <ppalka@redhat.com>
367
368 PR libstdc++/92894
369 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
370 Add trait to determine return type and an alias for it.
371 (ranges::__cust_imove::_IMove::operator()): Use __result instead of
372 deduced return type.
373 (iter_rvalue_reference_t): Use _IMove::__type instead of checking
374 the result of ranges::iter_move.
375 (__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t
376 instead of checking the result of ranges::iter_move.
377 * testsuite/24_iterators/customization_points/92894.cc: New test.
378 * testsuite/24_iterators/indirect_callable/92894.cc: New test.
379
380 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
381
382 PR libstdc++/94901
383 * include/std/type_traits (__is_complete_or_unbounded): Replace
384 BADNAME _T with _Tp.
385 * testsuite/17_intro/badnames.cc: New test.
386
387 2020-04-30 Jonathan Wakely <jwakely@redhat.com>
388
389 PR libstdc++/89510
390 * include/bits/alloc_traits.h (allocator_traits::_S_construct)
391 (allocator_traits::_S_destroy)
392 (allocator_traits<allocator<T>>::construct): Use traits in
393 noexcept-specifiers.
394 * include/bits/allocator.h (allocator<void>::construct)
395 (allocator<void>::destroy): Likewise.
396 * include/ext/malloc_allocator.h (malloc_allocator::construct)
397 (malloc_allocator::destroy): Likewise.
398 * include/ext/new_allocator.h (new_allocator::construct)
399 (new_allocator::destroy): Likewise.
400 * testsuite/20_util/allocator/89510.cc: New test.
401 * testsuite/ext/malloc_allocator/89510.cc: New test.
402 * testsuite/ext/new_allocator/89510.cc: New test.
403
404 2020-04-29 Jonathan Wakely <jwakely@redhat.com>
405
406 PR libstdc++/94854
407 * include/bits/basic_string.tcc: Update comment about explicit
408 instantiations.
409
410 2020-04-28 Jonathan Wakely <jwakely@redhat.com>
411
412 PR libstdc++/91480
413 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
414 Remove non-standard macro.
415 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
416 to indicate P1032R1 support.
417 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
418 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
419 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
420 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
421 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
422 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
423 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check
424 feature test macro.
425 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
426 * testsuite/21_strings/basic_string_view/operations/copy/char/
427 constexpr.cc: Likewise.
428 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
429
430 PR libstdc++/94831
431 * include/bits/alloc_traits.h (_S_construct): Restore placement
432 new-expression for C++11/14/17 and call std::construct_at directly
433 for C++20.
434 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr
435 function returning void.
436 * testsuite/20_util/specialized_algorithms/
437 uninitialized_value_construct/94831.cc: New test.
438 * testsuite/23_containers/vector/cons/94831.cc: New test.
439
440 2020-04-28 Patrick Palka <ppalka@redhat.com>
441
442 LWG 3433 subrange::advance(n) has UB when n < 0
443 * include/std/ranges (subrange::prev): Fix typo.
444 (subrange::advance): Handle a negative argument as per the proposed
445 resolution of LWG 3433.
446 * testsuite/std/ranges/subrange/lwg3433.cc: New test.
447
448 2020-04-28 Jonathan Wakely <jwakely@redhat.com>
449 Iain Sandoe <iain@sandoe.co.uk>
450
451 PR c++/94759
452 * include/std/coroutine: Implement handing for non-
453 class coroutine return types.
454
455 2020-04-24 Jonathan Wakely <jwakely@redhat.com>
456
457 * include/experimental/executor (service_already_exists): Make default
458 constructor public (LWG 3414).
459 * testsuite/experimental/net/execution_context/make_service.cc: Check
460 the service_already_exists can be default constructed.
461
462 2020-04-24 Kamlesh Kumar <kamleshbhalui@gmail.com>
463 Jonathan Wakely <jwakely@redhat.com>
464
465 PR libstdc++/90415
466 PR libstdc++/92156
467 * include/std/any (any): Rename template parameters for consistency
468 with the standard.
469 (any::_Decay): Rename to _Decay_if_not_any.
470 (any::any(T&&):: Remove is_constructible from constraints. Remove
471 non-standard overload.
472 (any::any(in_place_type_t<T>, Args&&...))
473 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
474 (any::emplace(Args&&...))
475 (any::emplace(initializer_list<U>, Args&&...)):
476 Use decay_t instead of _Decay.
477 * testsuite/20_util/any/cons/90415.cc: New test.
478 * testsuite/20_util/any/cons/92156.cc: New Test.
479 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
480 more robust.
481 * testsuite/20_util/any/modifiers/92156.cc: New test.
482
483 2020-04-23 Jonathan Wakely <jwakely@redhat.com>
484
485 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
486 * doc/html/*: Regenerate.
487
488 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
489 value for C++17 to 201803L because P0858R0 is supported for C++17.
490 * include/std/version (__cpp_lib_array_constexpr): Likewise.
491 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
492 Check for value corresponding to P0031R0 features being tested.
493 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
494 Check for value corresponding to P0858R0 features being tested.
495
496 * include/std/version (__cpp_lib_three_way_comparison): Define for
497 freestanding builds.
498
499 2020-04-23 Thomas Rodgers <rodgert@appliantology.com>
500
501 * include/experimental/net/executor (system_context): Mark
502 system_context::system_context() = delete.
503 * testsuite/experimental/net/executor/1.cc: Add new
504 test to check system_context is not default constructible.
505
506 2020-04-23 Iain Sandoe <iain@sandoe.co.uk>
507
508 * include/std/coroutine: Update the inline namespace to __n4861.
509 Add the __cpp_lib_coroutine define, set to 201902L.
510 * include/std/version: Add __cpp_lib_coroutine, set to 201902L.
511
512 2020-04-22 Jonathan Wakely <jwakely@redhat.com>
513
514 * include/std/execution (__cpp_lib_execution): Define to indicate
515 support for P0024R2 and P1001R2.
516 * include/std/version (__cpp_lib_execution): Define.
517 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
518 defined by <algorithm>, move other tests to new tests ...
519 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
520 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
521 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
522 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
523
524 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
525 different values for C++17 and C++20, to indicate different feature
526 sets. Update value for C++20 to indicate P1032R1 support.
527 * include/std/version (__cpp_lib_array_constexpr): Likewise.
528 * testsuite/23_containers/array/comparison_operators/constexpr.cc:
529 Check feature test macro.
530 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
531 New test.
532 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
533 feature test macro.
534 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
535 in C++17 mode and check feature test macro.
536
537 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
538 here.
539 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
540 defined by <utility>.
541
542 * include/std/functional (__cpp_lib_concepts): Update macro value to
543 indicate P1964R2 support.
544 * include/std/version (__cpp_lib_concepts): Likewise.
545 * testsuite/std/concepts/1.cc: Adjust expected value.
546 * testsuite/std/concepts/2.cc: Likewise.
547
548 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to
549 __cpp_lib_constexpr_functional.
550 * include/std/version (__cpp_lib_constexpr_invoke): Likewise.
551 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
552
553 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
554 indicate P1006R1 support.
555 (__cpp_lib_to_address): Define to indicate P0653R2 support.
556 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
557 P1227R2 support.
558 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
559 P0769R2 support.
560 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate
561 P0020R6 support.
562 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate
563 P1007R3 support.
564 * include/std/memory_resource (__cpp_lib_polymorphic_allocator):
565 Define to indicate P0339R6 support.
566 * include/std/string_view (__cpp_lib_starts_ends_with): Define to
567 indicate P0457R2 support.
568 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
569 to indicate P0758R1 support.
570 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
571 (__cpp_lib_type_identity): Define to indicate P0887R1 support.
572 * include/std/version (__cpp_lib_atomic_float)
573 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
574 (__cpp_lib_type_identity, __cpp_lib_assume_aligned)
575 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
576 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
577 (__cpp_lib_to_address): Define.
578 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
579
580 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
581 macro.
582 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
583 Likewise.
584 * include/std/version (__cpp_lib_map_insertion)
585 (__cpp_lib_unordered_map_insertion): Remove.
586
587 * include/std/condition_variable (__cpp_lib_jthread): Remove
588 redundant definition.
589 * include/std/stop_token (__cpp_lib_jthread): Update macro value to
590 indicate P1869R1 support.
591 * include/std/version (__cpp_lib_jthread): Update value.
592 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
593 for updated macro value.
594 * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
595 Likewise.
596 * testsuite/30_threads/jthread/1.cc: Likewise.
597 * testsuite/30_threads/jthread/2.cc: Likewise.
598 * testsuite/30_threads/stop_token/1.cc: Likewise.
599 * testsuite/30_threads/stop_token/2.cc: Likewise.
600
601 * testsuite/21_strings/basic_string/erasure.cc: Check for
602 __cpp_lib_erase_if macro.
603 * testsuite/23_containers/deque/erasure.cc: Add header name to #error
604 messages.
605 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
606 * testsuite/23_containers/list/erasure.cc: Likewise.
607 * testsuite/23_containers/map/erasure.cc: Likewise.
608 * testsuite/23_containers/set/erasure.cc: Likewise.
609 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
610 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
611 * testsuite/23_containers/vector/erasure.cc: Likewise.
612
613 2020-04-21 Jonathan Wakely <jwakely@redhat.com>
614
615 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
616 to define operator<=>.
617 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
618
619 * doc/Makefile.am (xml_sources_manual): Add missing XML files.
620 * doc/Makefile.in: Regenerate.
621 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
622 of "this page".
623 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
624 to the C++11 status table.
625 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
626 proposals with table matching contents of the C++14 standard.
627 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of
628 the C++17 standard.
629 * doc/html/*: Regenerate.
630
631 PR c++/94149
632 * include/std/type_traits (__is_nt_constructible_impl): Add partial
633 specializations for bounded arrays with non-empty initializers.
634 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
635
636 2020-04-20 Thomas Rodgers <trodgers@redhat.com>
637
638 * testsuite/lib/libstdc++.exp: Add additional_flags=
639 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
640 compiling with a newer Thread Building Blocks.
641
642 2020-04-20 Jonathan Wakely <jwakely@redhat.com>
643
644 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
645
646 * testsuite/20_util/is_constructible/51185.cc: Make test class a
647 non-aggregate so that the test verifies the same thing in all -std
648 modes.
649 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
650 results for some types when paren-init for aggregates is supported.
651
652 * include/std/version (__cpp_lib_three_way_comparison): Update value.
653 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
654 (__detail::__synth3way): Add noexcept-specifier.
655
656 * include/bits/stl_map.h (map): Define operator<=> and remove
657 operator< for C++20.
658 * include/bits/stl_multimap.h (multimap): Likewise.
659 * include/bits/stl_multiset.h (multiset): Likewise.
660 * include/bits/stl_set.h (set): Likewise.
661 * include/bits/stl_tree.h (_Rb_tree): Likewise.
662 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
663 operator!= for C++20.
664 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
665 * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
666 * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
667 * include/debug/set.h (__gnu_debug::set): Likewise.
668 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
669 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
670 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
671 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
672
673 2020-04-20 Matthias Kretz <kretz@kde.org>
674
675 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
676
677 2020-04-19 Jonathan Wakely <jwakely@redhat.com>
678
679 * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
680 * include/bits/stl_stack.h (stack): Likewise.
681 * testsuite/23_containers/queue/cmp_c++20.cc: New test.
682 * testsuite/23_containers/stack/cmp_c++20.cc: New test.
683
684 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
685 Remove redundant operator!= for C++20.
686 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
687 Likewise.
688 * include/debug/unordered_map (unordered_map, unordered_multimap):
689 Likewise.
690 * include/debug/unordered_set (unordered_set, unordered_multiset):
691 Likewise.
692
693 PR other/94629
694 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
695 redundant assignment in constructor.
696
697 2020-04-18 Jonathan Wakely <jwakely@redhat.com>
698
699 * include/std/chrono (duration, time_point): Define operator<=> and
700 remove redundant operator!= for C++20.
701 * testsuite/20_util/duration/comparison_operators/three_way.cc: New
702 test.
703 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
704 test.
705
706 * testsuite/util/native_type/native_priority_queue.hpp: Use
707 allocator_traits to rebind allocator.
708
709 2020-04-17 Jonathan Wakely <jwakely@redhat.com>
710
711 * include/bits/forward_list.h (forward_list): Define operator<=> and
712 remove redundant comparison operators for C++20.
713 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
714 * include/bits/stl_deque.h (deque): Likewise.
715 * include/bits/stl_iterator.h (__normal_iterator): Likewise.
716 * include/bits/stl_list.h (list): Likewise.
717 * include/bits/stl_vector.h (vector): Likewise.
718 * include/debug/deque (__gnu_debug::deque): Likewise.
719 * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
720 * include/debug/list (__gnu_debug::list): Likewise.
721 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
722 Likewise.
723 * include/debug/vector (__gnu_debug::vector): Likewise.
724 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
725 operator<=> for C++20.
726 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
727 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
728 * testsuite/23_containers/list/cmp_c++20.cc: New test.
729 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
730 * testsuite/23_containers/vector/cmp_c++20.cc: New test.
731
732 * include/bits/basic_string.h (basic_string): Define operator<=> and
733 remove redundant comparison operators for C++20.
734 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
735 Add comparison_category members.
736 (__detail::__char_traits_cmp_cat): New helper to get comparison
737 category from char traits class.
738 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
739 define for C++20.
740 (sub_match): Define operator<=> and remove redundant comparison
741 operators for C++20.
742 (match_results): Remove redundant operator!= for C++20.
743 * include/std/string_view (basic_string_view): Define operator<=> and
744 remove redundant comparison operators for C++20.
745 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
746 test.
747 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
748 New test.
749 * testsuite/21_strings/basic_string_view/operations/copy/char/
750 constexpr.cc: Initialize variable.
751 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
752 constexpr.cc: Likewise.
753 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
754 dg-do directive and remove comments showing incorrect signatures.
755 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
756 Likewise.
757 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
758 New test.
759 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
760 New test.
761 * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
762
763 2020-04-16 Jonathan Wakely <jwakely@redhat.com>
764
765 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
766 name of unused parameter.
767
768 2020-04-15 Jonathan Wakely <jwakely@redhat.com>
769
770 * include/bits/fs_dir.h (file_status): Define operator== for C++20.
771 (directory_entry): Define operator<=> and remove redundant comparison
772 operators for C++20.
773 * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
774 * include/bits/fs_path.h (path): Define operator<=> and remove
775 redundant comparison operators for C++20.
776 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
777 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
778 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
779 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
780
781 * include/bits/allocator.h (operator!=): Do not define for C++20.
782 * include/bits/locale_classes.h (operator!=): Likewise.
783 * include/bits/std_function.h (operator==(nullptr_t, const function&))
784 (operator!=(const function&, nullptr_t))
785 (operator!=(nullptr_t, const function&)): Likewise.
786 * include/ext/bitmap_allocator.h (operator!=): Likewise.
787 * include/ext/debug_allocator.h (operator!=): Likewise.
788 * include/ext/extptr_allocator.h (operator!=): Likewise.
789 * include/ext/malloc_allocator.h (operator!=): Likewise.
790 * include/ext/mt_allocator.h (operator!=): Likewise.
791 * include/ext/new_allocator.h (operator!=): Likewise.
792 * include/ext/pool_allocator.h (operator!=): Likewise.
793 * include/ext/throw_allocator.h (operator!=): Likewise.
794 * include/std/bitset (bitset::operator!=): Likewise.
795 * include/std/memory_resource (operator!=): Likewise.
796 * include/std/scoped_allocator (operator!=): Likewise.
797
798 * include/std/typeindex (operator<=>): Define for C++20.
799 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
800
801 2020-04-14 Jonathan Wakely <jwakely@redhat.com>
802
803 * libsupc++/compare (compare_three_way): Fix constraint so that
804 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
805 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
806 New test.
807
808 PR libstdc++/94562
809 * include/bits/shared_ptr.h (operator<=>): Define for C++20.
810 * include/bits/shared_ptr_base.h (operator<=>): Likewise.
811 * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
812 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
813 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
814 std::less<A*> to be used when comparing std::shared_ptr<A> objects in
815 C++20.
816
817 PR libstdc++/94565
818 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
819 * testsuite/18_support/comparisons/categories/94565.cc: New test.
820
821 2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
822
823 * include/std/coroutine: Update coroutines builtin define,
824 per n4861.
825
826 2020-04-09 Jonathan Wakely <jwakely@redhat.com>
827
828 * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
829 (strong_order, weak_order, partial_order): Replace uses of <=> with
830 compare_three_way function object (LWG 3324).
831 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
832 equality operator so that X satisfies three_way_comparable.
833 * testsuite/18_support/comparisons/algorithms/strong_order.cc:
834 Likewise.
835 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
836
837 * include/bits/unique_ptr.h (operator<=>): Define for C++20.
838 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
839 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
840 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
841 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
842
843 2020-04-08 Jonathan Wakely <jwakely@redhat.com>
844
845 * include/bits/slice_array.h (operator==(const slice&, const slice&)):
846 Define for C++20.
847 * include/std/complex (operator==(const T&, const complex<T>&))
848 (operator!=(const complex<T>&, const complex<T>&))
849 (operator!=(const complex<T>&, const T&))
850 (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
851 * testsuite/26_numerics/slice/compare.cc: New test.
852
853 * include/std/charconv (to_chars_result, from_chars_result): Add
854 defaulted equality comparisons for C++20.
855 * testsuite/20_util/from_chars/compare.cc: New test.
856 * testsuite/20_util/to_chars/compare.cc: New test.
857
858 2020-04-07 Jonathan Wakely <jwakely@redhat.com>
859
860 PR libstdc++/94520
861 * include/std/charconv (__integer_to_chars_result_type)
862 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
863 allow use in C++14.
864 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
865 use of std::string_view with std::string.
866 * testsuite/20_util/from_chars/2.cc: Likewise.
867 * testsuite/20_util/to_chars/1.cc: Likewise.
868 * testsuite/20_util/to_chars/2.cc: Likewise.
869
870 2020-04-06 Jonathan Wakely <jwakely@redhat.com>
871
872 PR libstdc++/94498
873 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
874 usable in constant expressions for C++20.
875 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
876 _GLIBCXX20_CONSTEXPR.
877 (std::char_traits<char>, std::char_traits<wchar_t>)
878 (std::char_traits<char8_t>): Make move, copy and assign usable in
879 constant expressions for C++20.
880 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
881 and copy usable in constant expressions for C++20.
882 * include/std/string_view (basic_string_view::copy): Add
883 _GLIBCXX20_CONSTEXPR.
884 * testsuite/21_strings/basic_string_view/operations/copy/char/
885 constexpr.cc: New test.
886 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
887 constexpr.cc: New test.
888
889 2020-04-05 Gerald Pfeifer <gerald@pfeifer.com>
890
891 * doc/xml/manual/appendix_contributing.xml: Refer to Git
892 documentation instead of Subversion. Switch to https.
893 * doc/html/manual/appendix_contributing.html: Regenerate.
894
895 2020-04-03 Jonathan Wakely <jwakely@redhat.com>
896
897 PR libstdc++/93960
898 * include/bits/ptr_traits.h (__to_address): Add special case for debug
899 iterators, to avoid dereferenceable check.
900 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
901 * testsuite/20_util/to_address/debug.cc: New test.
902
903 2020-04-01 Andrea Corallo <andrea.corallo@arm.com>
904
905 * testsuite/experimental/net/execution_context/use_service.cc:
906 Require pthread and gthreads.
907
908 2020-04-01 Gerald Pfeifer <gerald@pfeifer.com>
909
910 * doc/xml/manual/appendix_free.xml: Move "free books" list from
911 fsf.org to gnu.org.
912 * doc/html/manual/appendix_free.html: Regenerate.
913
914 2020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com>
915
916 Library-side tests for parenthesized aggregate init
917
918 PR c++/92878
919 PR c++/92947
920
921 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
922 * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
923 * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
924 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
925 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
926 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
927 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
928 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
929 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
930 Likewise.
931 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
932 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
933 * testsuite/20_util/variant/92878_92947.cc: Likewise.
934 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
935 Likewise.
936 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
937 Likewise.
938 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
939 Likewise.
940 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
941 Likewise.
942 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
943 Likewise.
944 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
945 Likewise.
946 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
947 * testsuite/23_containers/queue/92878_92947.cc: Likewise.
948 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
949 Likewise.
950 * testsuite/23_containers/stack/92878_92947.cc: Likewise.
951 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
952 Likewise.
953 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
954 Likewise.
955 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
956 Likewise.
957 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
958 Likewise.
959 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
960 Likewise.
961
962 2020-03-28 Jonathan Wakely <jwakely@redhat.com>
963
964 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
965 for changes due to parenthesized aggregate-initialization in C++20.
966 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
967 with std::chrono::sys_time in C++20.
968
969 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
970 to constrain C++20 versions of comparison operators. Fix backwards
971 logic of relational operators.
972 (move_iterator): Use requires-clause to constrain comparison operators
973 in C++20. Do not declare non-standard same-type overloads for C++20.
974 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
975 of comparisons and check using greedy_ops type.
976 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
977 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
978 main function from compile-only test.
979 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
980
981 2020-03-27 Jonathan Wakely <jwakely@redhat.com>
982
983 * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
984 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
985 C++20 concepts are required.
986 * include/bits/stl_iterator_base_types.h: Likewise.
987 * include/std/concepts: Likewise.
988 * include/std/version: Likewise.
989 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
990 macro.
991
992 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
993 (reverse_iterator::iterator_category): Define for C++20.
994 (reverse_iterator): Define comparison operators correctly for C++20.
995 (__normal_iterator): Add constraints to comparison operators for C++20.
996 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
997 overload for input iterators.
998 (move_iterator): Add constraints to comparison operators for C++20.
999 Define operator<=> for C++20.
1000 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
1001 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
1002 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
1003 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
1004
1005 * include/bits/iterator_concepts.h (__detail::__decay_copy)
1006 (__detail::__member_begin, __detail::__adl_begin): Move here from
1007 <bits/range_access.h>.
1008 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
1009 * bits/range_access.h (__cust_access::__decay_copy)
1010 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
1011 <bits/iterator_concepts.h>.
1012 (ranges::iterator_t): Use __detail::__range_iter_t.
1013 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
1014 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
1015 (front_insert_iterator): Likewise.
1016 (insert_iterator): Implement changes from P0896R4 for C++20.
1017 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
1018 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
1019 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
1020 for inclusion in synopsis_c++20.cc which expects different signatures
1021 for some function templates.
1022 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
1023
1024 * include/std/type_traits (__is_array_convertible): Move definition
1025 to immediately after is_convertible.
1026
1027 2020-03-26 Jonathan Wakely <jwakely@redhat.com>
1028
1029 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
1030 (chrono::months, chrono::sys_days, chrono::local_t)
1031 (chrono::local_time, chrono::local_seconds, chrono::local_days):
1032 Define for C++20.
1033 (chrono::time_point): Add missing static assert.
1034 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
1035 * testsuite/std/time/clock/file/overview.cc: New test.
1036 * testsuite/std/time/clock/file/members.cc: New test.
1037 * testsuite/std/time/syn_c++20.cc: New test.
1038
1039 2020-03-25 Mike Crowe <mac@mcrowe.com>
1040
1041 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
1042 test.
1043 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
1044 test.
1045
1046 2020-03-25 Jonathan Wakely <jwakely@redhat.com>
1047
1048 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
1049 * include/std/chrono (filesystem::__file_clock): Here.
1050 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
1051 Define public member functions for C++20.
1052 (is_clock, is_clock_v): Define traits for C++20.
1053 * include/std/condition_variable (condition_variable::wait_until): Add
1054 check for valid clock.
1055 * include/std/future (_State_baseV2::wait_until): Likewise.
1056 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
1057 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
1058 Likewise.
1059 * include/std/thread (this_thread::sleep_until): Likewise.
1060 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
1061 slow_clock with new namespace.
1062 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
1063 test.
1064 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
1065 New test.
1066 * testsuite/30_threads/future/members/clock_neg.cc: New test.
1067 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
1068 Qualify slow_clock with new namespace.
1069 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
1070 clock_neg.cc: New test.
1071 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
1072 test.
1073 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
1074 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
1075 New test.
1076 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
1077 slow_clock with new namespace.
1078 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
1079 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
1080 test.
1081 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
1082 * testsuite/std/time/traits/is_clock.cc: New test.
1083 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
1084 namespace.
1085
1086 2020-03-21 Jonathan Wakely <jwakely@redhat.com>
1087
1088 PR libstdc++/93245
1089 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
1090 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
1091 Improve test coverage.
1092
1093 PR libstdc++/94242
1094 * include/bits/fs_path.h (path::_S_str_convert): Replace first
1095 parameter with basic_string_view so that strings with different
1096 allocators can be accepted.
1097 (path::generic_string<C,T,A>()): Use basic_string object that uses the
1098 right allocator type.
1099 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
1100 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
1101 test coverage.
1102
1103 2020-03-18 Jonathan Wakely <jwakely@redhat.com>
1104
1105 PR libstdc++/94033
1106 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
1107 (__is_nt_default_constructible_impl): Remove.
1108 (__is_nothrow_default_constructible_impl): Remove.
1109 (__is_nt_constructible_impl): Add bool template parameter. Adjust
1110 partial specializations.
1111 (__is_nothrow_constructible_impl): Replace class template with alias
1112 template.
1113 (is_nothrow_default_constructible): Derive from alias template
1114 __is_nothrow_constructible_impl instead of
1115 __is_nothrow_default_constructible_impl.
1116 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
1117
1118 * include/std/stop_token (stop_token::_Stop_state_ref): Define
1119 comparison operators explicitly if the compiler won't synthesize them.
1120
1121 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
1122 __cpp_lib_concepts before using iter_reference_t.
1123 * include/bits/stream_iterator.h (istream_iterator): Check
1124 __cpp_lib_concepts before using default_sentinel_t.
1125 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
1126
1127 PR libstdc++/94203
1128 * include/experimental/executor (executor::executor(Executor)): Call
1129 make_shared directly instead of _M_create. Create _Tgt1 object.
1130 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
1131 Call allocate_shared directly instead of _M_create. Create _Tgt2
1132 object.
1133 (executor::target_type): Add cast needed for new _Tgt interface.
1134 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
1135 (executor::_Tgt): Define the same interface whether RTTI is enabled or
1136 not.
1137 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
1138 std::type_info in the interface.
1139 (executor::_Tgt::_M_func): Add data member.
1140 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
1141 (executor::_Tgt1::_S_func): Define function to access target without
1142 depending on RTTI.
1143 (executor::_M_create): Remove.
1144 (operator==, operator!=): Simplify comparisons for executor.
1145 * include/experimental/socket (is_error_code_enum<socket_errc>):
1146 Define specialization before use.
1147 * testsuite/experimental/net/executor/1.cc: New test.
1148
1149 2020-03-16 Jonathan Wakely <jwakely@redhat.com>
1150
1151 PR libstdc++/94199
1152 * include/experimental/executor (service_already_exists): Add default
1153 constructor. Declare make_service to be a friend.
1154 * testsuite/experimental/net/execution_context/make_service.cc: New
1155 test.
1156
1157 2020-03-12 Jonathan Wakely <jwakely@redhat.com>
1158
1159 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
1160 a null pointer to functions with nonnull(1) attribute.
1161
1162 2020-03-11 Patrick Palka <ppalka@redhat.com>
1163
1164 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
1165 'address' -> 'std::__addressof'.
1166 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
1167 a non-forward input_range.
1168 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
1169 default constructor protected instead of deleted, like with
1170 input_iterator_wrapper.
1171 (test_range::iterator): Add comment explaining that this type is used
1172 only when the underlying wrapper is input_iterator_wrapper or
1173 output_iterator_wrapper. Remove delegating defaulted constructor so
1174 that the inherited default constructor is used instead.
1175
1176 LWG 3286 ranges::size is not required to be valid after a call to
1177 ranges::begin on an input range
1178 * include/std/ranges (subrange::subrange): Split single-argument
1179 constructor into two, one constrained by _S_store_size and another by
1180 !_S_store_size.
1181 (take_view::begin): Call size() before calling ranges::begin(_M_base).
1182 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
1183 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
1184
1185 2020-03-10 Jonathan Wakely <jwakely@redhat.com>
1186
1187 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
1188 instead of _M_current.
1189 (split_view::_OuterIter::operator++): Likewise.
1190
1191 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
1192 (transform_view::_Iterator::operator*): Add noexcept-specifier.
1193 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
1194 (split_view::_OuterIter::__current): Add noexcept.
1195 (split_view::_InnerIter::__iter_swap): Remove.
1196 (split_view::_InnerIter::__iter_move): Remove.
1197 (split_view::_InnerIter::_M_i_current): New accessors.
1198 (split_view::_InnerIter::__at_end): Use _M_i_current().
1199 (split_view::_InnerIter::operator*): Likewise.
1200 (split_view::_InnerIter::operator++): Likewise.
1201 (iter_move(const _InnerIter&)): Likewise.
1202 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
1203 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
1204 for iter_move and iter_swap on split_view's inner iterator.
1205
1206 PR c++/94117
1207 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
1208 Change expression in noexcept-specifier to match function body.
1209
1210 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
1211 comment explaining multiple dg-do directives.
1212 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
1213 so test is run as well as compiled.
1214
1215 2020-03-09 Jonathan Wakely <jwakely@redhat.com>
1216
1217 PR libstdc++/94063
1218 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
1219 handle concatenations that change the type of the first component.
1220 (path::operator+=(basic_string_view<value_type>)): Likewise.
1221 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
1222
1223 2020-03-06 Patrick Palka <ppalka@redhat.com>
1224
1225 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
1226 join_view::_Sentinel<!_Const>.
1227 * testsuite/std/ranges/adaptors/join.cc: Augment test.
1228
1229 PR libstdc++/93978
1230 * include/bits/range_access.h (__cust_access::_Empty::operator()):
1231 Declare return type to be bool instead of auto.
1232 * testsuite/std/ranges/adaptors/93978.cc: New test.
1233
1234 2020-03-06 Jonathan Wakely <jwakely@redhat.com>
1235
1236 PR libstdc++/94069
1237 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
1238 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
1239 second argument to __glibcxx_rwlock_init.
1240 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
1241
1242 PR libstdc++/93244
1243 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
1244 test to not fail due to PR 94063.
1245 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
1246 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
1247
1248 2020-03-06 Andreas Krebbel <krebbel@linux.ibm.com>
1249
1250 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
1251 would match ENOSYS.
1252
1253 2020-03-05 Jonathan Wakely <jwakely@redhat.com>
1254
1255 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
1256 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
1257 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
1258 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
1259 for return value, and in comparison.
1260 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
1261
1262 PR libstdc++/94051
1263 * include/std/string_view: Include <bits/ostream_insert.h>.
1264 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
1265
1266 2020-03-04 Jonathan Wakely <jwakely@redhat.com>
1267
1268 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
1269
1270 2020-03-04 Patrick Palka <ppalka@redhat.com>
1271
1272 PR libstdc++/94017
1273 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
1274 condition for when to use memset, making sure to additionally check that
1275 the output pointer's value type is a non-volatile byte type. Instead of
1276 requiring that the fill type is a byte type, just require that it's an
1277 integral type.
1278 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
1279 New test.
1280 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
1281 New test.
1282 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
1283 blocked by PR 94017.
1284 * testsuite/25_algorithms/fill/94017.cc: New test.
1285 * testsuite/25_algorithms/fill_n/94017.cc: New test.
1286
1287 LWG 3355 The memory algorithms should support move-only input iterators
1288 introduced by P1207
1289 * include/bits/ranges_uninitialized.h
1290 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
1291 to copy __ifirst, which could be a move-only input iterator. Use
1292 operator- instead of ranges::distance to compute distance from a sized
1293 sentinel.
1294 (__uninitialized_copy_n_fn::operator()): Likewise.
1295 (__uninitialized_move_fn::operator()): Likewise.
1296 (__uninitialized_move_n_fn::operator()): Likewise.
1297 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
1298 attempting to copy __first.
1299 (__uninitialized_destroy_n_fn::operator()): Likewise.
1300 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1301 Augment test.
1302 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
1303 Likewise.
1304 * .../specialized_algorithms/uninitialized_move/constrained.cc:
1305 Likewise.
1306
1307 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
1308 protected instead of private.
1309 (test_sized_range_sized_sent): New.
1310
1311 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
1312 New testsuite iterator.
1313 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
1314 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
1315
1316 * include/bits/ranges_uninitialized.h
1317 (uninitialized_copy_fn::operator()): Pass a reference type as the first
1318 argument to is_nothrow_assignable_v.
1319 (uninitialized_copy_fn::operator()): Likewise.
1320 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
1321 with the input iterator stripped of its move_iterator.
1322 (uninitialized_move_n_fn::operator()): Likewise.
1323 (uninitialized_fill_fn::operator()): Pass a reference type as the first
1324 argument to is_nothrow_assignable_v.
1325 (uninitialized_fill_n_fn::operator()): Likewise.
1326
1327 2020-03-03 Jonathan Wakely <jwakely@redhat.com>
1328
1329 PR libstdc++/94013
1330 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
1331 traits to control when to use memmove and memcmp optimizations.
1332 (__is_nonvolatile_trivially_copyable): New helper trait.
1333 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
1334 use memcmp optimization with volatile data.
1335 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
1336 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
1337 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
1338 (__copy_move_backward_a2): Likewise.
1339 (__equal_aux1): Use __memcmpable.
1340 (__lexicographical_compare_aux): Do not use memcmp optimization with
1341 volatile data.
1342 * testsuite/25_algorithms/copy/94013.cc: New test.
1343 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
1344 * testsuite/25_algorithms/equal/94013.cc: New test.
1345 * testsuite/25_algorithms/fill/94013.cc: New test.
1346 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
1347 * testsuite/25_algorithms/move/94013.cc: New test.
1348 * testsuite/25_algorithms/move_backward/94013.cc: New test.
1349
1350 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
1351 Avoid redundant iterator comparisons (LWG 3410).
1352
1353 2020-03-02 Jonathan Wakely <jwakely@redhat.com>
1354
1355 PR libstdc++/93972
1356 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
1357 differ.
1358 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
1359
1360 * include/std/ranges (__detail::__maybe_empty_t): Rename to
1361 __maybe_present_t.
1362 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
1363
1364 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
1365 dependent type.
1366
1367 2020-03-01 H.J. Lu <hongjiu.lu@intel.com>
1368
1369 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1370
1371 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
1372
1373 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
1374 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
1375 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
1376 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
1377 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
1378
1379 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
1380 Add libatomic option.
1381 * testsuite/30_threads/jthread/jthread.cc: Likewise.
1382
1383 2020-02-29 François Dumont <fdumont@gcc.gnu.org>
1384
1385 * include/bits/stl_algo.h
1386 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
1387 * include/bits/stl_algobase.h: ...here.
1388 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
1389
1390 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
1391
1392 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
1393 option.
1394 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
1395 Likewise.
1396 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
1397 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
1398 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
1399 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
1400 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
1401 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
1402 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
1403 Likewise.
1404
1405 PR libstdc++/92906
1406 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
1407
1408 2020-02-28 Patrick Palka <ppalka@redhat.com>
1409
1410 PR libstdc++/93972
1411 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
1412 Fix condition for when to use memcmp, making it consistent with the
1413 corresponding condition used in std::lexicographical_compare.
1414 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
1415
1416 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
1417 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
1418 existing signatures for C++2a.
1419
1420 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
1421
1422 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
1423 test instead of just compiling it.
1424
1425 2020-02-28 Patrick Palka <ppalka@redhat.com>
1426
1427 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
1428 whenever the underlying range models common_range.
1429
1430 * include/std/ranges (__detail::_CachedPosition): New struct.
1431 (views::filter_view::_S_needs_cached_begin): New member variable.
1432 (views::filter_view::_M_cached_begin): New member variable.
1433 (views::filter_view::begin): Use _M_cached_begin to cache its
1434 result.
1435 (views::drop_view::_S_needs_cached_begin): New static member variable.
1436 (views::drop_view::_M_cached_begin): New member variable.
1437 (views::drop_view::begin): Use _M_cached_begin to cache its result
1438 when _S_needs_cached_begin.
1439 (views::drop_while_view::_M_cached_begin): New member variable.
1440 (views::drop_while_view::begin): Use _M_cached_begin to cache its
1441 result.
1442 (views::reverse_view::_S_needs_cached_begin): New static member
1443 variable.
1444 (views::reverse_view::_M_cached_begin): New member variable.
1445 (views::reverse_view::begin): Use _M_cached_begin to cache its result
1446 when _S_needs_cached_begin.
1447 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
1448 drop_view::begin caches its result.
1449 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
1450 that drop_while_view::begin caches its result.
1451 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
1452 filter_view::begin caches its result.
1453 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
1454 reverse_view::begin caches its result.
1455
1456 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
1457
1458 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
1459 filesystems that silently truncate timestamps.
1460 * testsuite/experimental/filesystem/operations/last_write_time.cc:
1461 Likewise.
1462
1463 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
1464 -Wstringop-overflow warnings.
1465
1466 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
1467
1468 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
1469 -fdiagnostics-urls=never to options.
1470
1471 2020-02-27 Patrick Palka <ppalka@redhat.com>
1472
1473 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
1474 _Iterator<!_Const>.
1475 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
1476 (take_view::_Sentinel<_Const>): Likewise.
1477 (take_while_view::_Sentinel<_Const>): Likewise.
1478 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
1479 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1480 * testsuite/std/ranges/adaptors/take.cc: Augment test.
1481 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
1482 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1483
1484 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
1485 base() of a vector<>::iterator is a pointer.
1486 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
1487 * testsuite/25_algorithms/move/constrained.cc: Likewise.
1488 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
1489 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
1490 instead of &foo[0].
1491 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
1492 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
1493 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
1494 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
1495 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
1496
1497 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
1498
1499 * include/debug/array (operator<=>): Define for C++20.
1500 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
1501 Adjust dg-error line numbers.
1502 * testsuite/23_containers/array/tuple_interface/
1503 tuple_element_debug_neg.cc: Likewise.
1504
1505 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
1506 defining _GLIBCXX_ASSERTIONS.
1507 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
1508 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
1509 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
1510 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
1511 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
1512 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
1513 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
1514 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
1515 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
1516 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
1517 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
1518 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
1519
1520 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
1521 C++98 where the member function of the base class returns void.
1522
1523 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
1524 equality comparisons that support value-initialized iterators.
1525
1526 * include/bits/boost_concept_check.h (__function_requires): Add
1527 _GLIBCXX14_CONSTEXPR.
1528 * testsuite/25_algorithms/min/concept_checks.cc: New test.
1529
1530 2020-02-26 Patrick Palka <ppalka@redhat.com>
1531
1532 PR libstdc++/93936
1533 * include/std/ranges (split_view::_InnerIter::operator==): Compare
1534 the operands' _M_i rather than their _M_i.current().
1535 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1536
1537 P1645R1 constexpr for <numeric> algorithms
1538 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
1539 partial_sum, adjacent_difference): Make conditionally constexpr for
1540 C++20.
1541 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
1542 test macro.
1543 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
1544 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
1545 constexpr for C++20.
1546 * include/std/version (__cpp_lib_constexpr_numeric): Define.
1547 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
1548 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
1549 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
1550 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
1551 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
1552 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
1553 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
1554 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
1555 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
1556 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
1557 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
1558
1559 2020-02-26 Jonathan Wakely <jwakely@redhat.com>
1560
1561 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
1562 variables in smaller scope and avoid calling ranges::distance when we
1563 know they are pointers. Remove statically-unreachable use of
1564 __builtin_unreachable().
1565 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
1566 Define inline.
1567
1568 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
1569 alias.
1570 (__detail::__maybe_const_t): Likewise.
1571 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
1572 (transform_view, take_view, take_while_view, elements_view): Use
1573 __maybe_const_t.
1574 (join_view, split_view): Use both.
1575
1576 2020-02-25 Patrick Palka <ppalka@redhat.com>
1577
1578 LWG 3397 basic_istream_view::iterator should not provide
1579 iterator_category
1580 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
1581 Rename to ...
1582 (basic_istream_view:_Iterator::iterator_concept): ... this.
1583 * testsuite/std/ranges/istream_view.cc: Augment test.
1584
1585 LWG 3325 Constrain return type of transformation function for
1586 transform_view
1587 * include/std/ranges (transform_view): Constrain the return type of the
1588 transformation function as per LWG 3325.
1589 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
1590
1591 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
1592 * include/std/ranges (join_view::_Iterator::operator--): Require that
1593 range_reference_t<_Base> models common_range.
1594 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
1595
1596 LWG 3301 transform_view::_Iterator has incorrect iterator_category
1597 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
1598 determination of iterator_category as per LWG 3301.
1599 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1600
1601 LWG 3292 iota_view is under-constrained
1602 * include/std/ranges (iota_view): Require that _Winc models semiregular
1603 as per LWG 3292.
1604 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
1605
1606 2020-02-25 Jonathan Wakely <jwakely@redhat.com>
1607
1608 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
1609 during constant evaluation. Call __builtin_memmove directly instead of
1610 __memmove.
1611 (__copy_or_move_backward): Likewise.
1612 * include/bits/stl_algobase.h (__memmove): Remove.
1613 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
1614 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
1615 Use __builtin_memmove directly instead of __memmove.
1616 (__copy_move_a2): Do not use memmove during constant evaluation.
1617 (__copy_move_backward_a2): Use _IsMove constant to select correct
1618 __copy_move_backward specialization.
1619 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
1620 begin turned into moves during constant evaluation.
1621
1622 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
1623 previous commit.
1624
1625 PR libstdc++/93872
1626 * include/bits/stl_algobase.h (__memmove): Cast away const before
1627 doing move assignment.
1628 * testsuite/25_algorithms/move/93872.cc: New test.
1629 * testsuite/25_algorithms/move_backward/93872.cc: New test.
1630
1631 2020-02-24 Patrick Palka <ppalka@redhat.com>
1632
1633 PR libstdc++/93884
1634 * include/bits/ranges_algobase.h (__copy_or_move,
1635 __copy_or_move_backward): Don't inspect the iter_value_t of the output
1636 iterator, instead inspect its iterator_traits directly.
1637 * include/bits/stl_iterator.h (back_insert_iterator::container):
1638 Conditionally initialize.
1639 (back_insert_iterator::difference_type): Conditionally define.
1640 (back_insert_iterator::back_insert_iterator): Conditionally define this
1641 default constructor.
1642 (front_insert_iterator::container): Conditionally initialize.
1643 (front_insert_iterator::difference_type): Conditionally define.
1644 (front_insert_iterator::front_insert_iterator): Conditionally define
1645 this default constructor.
1646 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
1647 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
1648
1649 P0769R2 Add shift to <algorithm>
1650 * include/bits/ranges_algo.h (shift_left, shift_right): New.
1651 * testsuite/25_algorithms/shift_left/1.cc: New test.
1652 * testsuite/25_algorithms/shift_right/1.cc: New test.
1653
1654 2020-02-24 Jonathan Wakely <jwakely@redhat.com>
1655
1656 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1657 Make noexcept-specifier conditional.
1658 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
1659 noexcept-specifier.
1660
1661 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1662 Add constructor.
1663 (operator==(istream_iterator, default_sentinel_t)): Add operator.
1664 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
1665 * include/bits/streambuf_iterator.h
1666 (istreambuf_iterator(default_sentinel_t)): Add constructor.
1667 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
1668 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
1669 New test.
1670 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
1671 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
1672 New test.
1673 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
1674
1675 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
1676 (ranges::enable_view): Simplify (LWG 3326).
1677 * include/bits/range_access.h (ranges::enable_view): Declare.
1678 * include/bits/regex.h (__enable_view_impl): Remove partial
1679 specialization.
1680 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
1681 * include/bits/stl_set.h (__enable_view_impl): Likewise.
1682 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
1683 * include/debug/multiset.h (__enable_view_impl): Likewise.
1684 * include/debug/set.h (__enable_view_impl): Likewise.
1685 * include/debug/unordered_set (__enable_view_impl): Likewise.
1686 * include/experimental/string_view (ranges::enable_view): Define
1687 partial specialization.
1688 * include/std/span (ranges::enable_view): Likewise.
1689 * include/std/string_view (ranges::enable_view): Likewise.
1690 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
1691
1692 2020-02-21 Jonathan Wakely <jwakely@redhat.com>
1693
1694 * include/std/optional (operator<=>(optional<T>, optional<U>))
1695 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
1696 Define for C++20.
1697 * include/std/tuple (__tuple_cmp): New helper function for <=>.
1698 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
1699 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
1700 (operator<=>(monostate, monostate)): Define for C++20.
1701 * testsuite/20_util/optional/relops/three_way.cc: New test.
1702 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
1703 * testsuite/20_util/variant/89851.cc: Move to ...
1704 * testsuite/20_util/variant/relops/89851.cc: ... here.
1705 * testsuite/20_util/variant/90008.cc: Move to ...
1706 * testsuite/20_util/variant/relops/90008.cc: ... here.
1707 * testsuite/20_util/variant/relops/three_way.cc: New test.
1708
1709 2020-02-20 Patrick Palka <ppalka@redhat.com>
1710
1711 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
1712 function.
1713 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
1714 __maybe_refwrap to capture lvalue references by reference, and then use
1715 unwrap_reference_t to forward the by-reference captures as references.
1716 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1717 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
1718
1719 * include/std/ranges (iota_view): Forward declare _Sentinel.
1720 (iota_view::_Iterator): Befriend _Sentinel.
1721 (iota_view::_Sentinel::_M_equal): New member function.
1722 (iota_view::_Sentinel::operator==): Use it.
1723 (views::_Iota::operator()): Forward __f using the correct type.
1724 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
1725 with integers of different signedness, to appease iota_view's deduction
1726 guide.
1727 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
1728
1729 2020-02-20 Jonathan Wakely <jwakely@redhat.com>
1730
1731 * include/bits/range_access.h (ranges::begin): Reject array of
1732 incomplete type.
1733 (ranges::end, ranges::size): Require arrays to be bounded.
1734 (ranges::data): Require lvalue or borrowed_range.
1735 (ranges::iterator_t): Remove constraint.
1736 * testsuite/std/ranges/access/begin.cc: Do not check array of
1737 incomplete type.
1738 * testsuite/std/ranges/access/begin_neg.cc: New test.
1739 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
1740 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
1741 * testsuite/std/ranges/access/ssize.cc: Do not check array of
1742 incomplete type.
1743
1744 * include/std/system_error (error_category::operator<=>)
1745 (operator<=>(const error_code&, const error_code&))
1746 (operator<=>(const error_condition&, const error_condition&)): Define
1747 for C++20.
1748 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
1749 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
1750 test.
1751 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
1752 incorrect comment.
1753 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
1754 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
1755 incorrect comment.
1756 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
1757 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
1758 incorrect comment.
1759 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
1760 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
1761 Remove incorrect comment.
1762 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
1763 test.
1764
1765 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
1766
1767 * include/std/thread (thread::id::operator<=>): Define for C++20.
1768 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
1769 functions in namespace std.
1770 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
1771
1772 2020-02-19 Patrick Palka <ppalka@redhat.com>
1773
1774 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
1775 null terminator of the underlying string as part of the test_range.
1776 (main): Call test03.
1777
1778 2020-02-19 Jonathan Wakely <jwakely@redhat.com>
1779
1780 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
1781 requirement (LWG 3385).
1782 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
1783 expected declaration.
1784
1785 * include/std/ranges (take_while_view, drop_view, drop_while_view)
1786 (elements_view:_Iterator): Initialize data members (LWG 3364).
1787
1788 * libsupc++/compare (three_way_comparable): Remove always-false check
1789 that should have been removed with weak_equality (P1959R0).
1790 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
1791
1792 * include/std/concepts (__detail::__partially_ordered_with): Move here
1793 from <compare>.
1794 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
1795 to simplify definition (LWG 3331).
1796 * libsupc++/compare (__detail::__partially_ordered_with): Move to
1797 <concepts>.
1798
1799 * include/std/concepts (totally_ordered_with): Remove redundant
1800 requirement (LWG 3329).
1801
1802 * include/std/ranges (__detail::__convertible_to_non_slicing): New
1803 helper concept.
1804 (__detail::__pair_like_convertible_to): Remove.
1805 (__detail::__pair_like_convertible_from): Add requirements for
1806 non-slicing conversions.
1807 (subrange): Constrain constructors with __convertible_to_non_slicing.
1808 Remove constructors from pair-like types. Add new deduction guide.
1809 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
1810
1811 * include/bits/iterator_concepts.h (iter_move): Add declaration to
1812 prevent unqualified lookup finding a suitable declaration (LWG 3247).
1813
1814 * include/std/memory_resource (polymorphic_allocator::allocate)
1815 (polymorphic_allocator::allocate_object): Change type of exception to
1816 bad_array_new_length (LWG 3237).
1817 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
1818
1819 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
1820 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
1821 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
1822 * testsuite/20_util/unwrap_reference/3.cc: New test.
1823
1824 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
1825 type during overload resolution, use static assert instead (LWG 3200).
1826 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
1827 incomplete type.
1828 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
1829
1830 * include/std/span (span(T (&)[N])): Use non-deduced context to
1831 prevent first parameter from interfering with class template argument
1832 deduction (LWG 3369).
1833 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
1834 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
1835 rvalues.
1836
1837 * include/std/span (span::const_iterator, span::const_reverse_iterator)
1838 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
1839 Remove (LWG 3320).
1840 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
1841 and cend.
1842 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1843 Likewise.
1844 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
1845 constrained.cc: Likewise.
1846 * testsuite/20_util/specialized_algorithms/
1847 uninitialized_default_construct/constrained.cc: Likewise.
1848 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
1849 constrained.cc: Likewise.
1850 * testsuite/20_util/specialized_algorithms/uninitialized_move/
1851 constrained.cc: Likewise.
1852 * testsuite/20_util/specialized_algorithms/
1853 uninitialized_value_construct/constrained.cc: Likewise.
1854
1855 * include/bits/range_access.h (range_size_t): Define alias template.
1856 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
1857 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
1858
1859 * include/std/ranges (filter_view, transform_view, take_view)
1860 (join_view, split_view, reverse_view): Remove commented-out converting
1861 constructors (LWG 3280).
1862
1863 * include/std/memory (uninitialized_construct_using_allocator): Use
1864 std::construct_at (LWG 3321).
1865
1866 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
1867 (polymorphic_allocator::allocate_object)
1868 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
1869
1870 LWG 3379. "safe" in several library names is misleading
1871 * include/bits/range_access.h (enable_safe_range): Rename to
1872 enable_borrowed_range.
1873 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
1874 (safe_range): Rename to borrowed_range.
1875 * include/bits/ranges_algo.h: Adjust to use new names.
1876 * include/bits/ranges_algobase.h: Likewise.
1877 * include/bits/ranges_uninitialized.h: Likewise.
1878 * include/std/ranges: Likewise.
1879 (safe_iterator_t): Rename to borrowed_iterator_t.
1880 (safe_subrange_t): Rename to borrowed_subrange_t.
1881 * include/std/span: Adjust to use new names.
1882 * include/std/string_view: Likewise.
1883 * include/experimental/string_view: Likewise.
1884 * testsuite/std/ranges/access/begin.cc: Likewise.
1885 * testsuite/std/ranges/access/cbegin.cc: Likewise.
1886 * testsuite/std/ranges/access/cdata.cc: Likewise.
1887 * testsuite/std/ranges/access/cend.cc: Likewise.
1888 * testsuite/std/ranges/access/crbegin.cc: Likewise.
1889 * testsuite/std/ranges/access/crend.cc: Likewise.
1890 * testsuite/std/ranges/access/data.cc: Likewise.
1891 * testsuite/std/ranges/access/end.cc: Likewise.
1892 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1893 * testsuite/std/ranges/access/rend.cc: Likewise.
1894 * testsuite/std/ranges/safe_range.cc: Likewise.
1895 * testsuite/std/ranges/safe_range_types.cc: Likewise.
1896 * testsuite/util/testsuite_iterators.h: Likewise.
1897
1898 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
1899 (tuple_element<1, const subrange<I, S, K>>): Add partial
1900 specializations (LWG 3398).
1901 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
1902
1903 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1904 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
1905 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
1906
1907 2020-02-18 Patrick Palka <ppalka@redhat.com>
1908
1909 P1983R0 Wording for GB301, US296, US292, US291, and US283
1910 * include/std/ranges (filter_view::pred): New member function.
1911 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
1912 P1983R0 fixes the highlighted issue in the same way.
1913 (join_view::_Iterator<_Const>): Add friend
1914 join_view::_Iterator<!_Const>.
1915 (join_view::_M_inner): Remove mutable specifier, effectively reverting
1916 the proposed wording changes of P3278.
1917 (join_view::begin): Refine the condition for when to return a const
1918 iterator.
1919 (split_view::_OuterIter::_OuterIter): Adjust constraints.
1920 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
1921 exists and works.
1922
1923 2020-02-18 Jonathan Wakely <jwakely@redhat.com>
1924
1925 PR libstdc++/93818
1926 * include/std/ranges (_RangeAdaptor): Add deduction guide.
1927 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
1928 iterator_t<_Vp>.
1929 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
1930 (transform_view::_Iterator): Add alias _Base_iter and use in place of
1931 iterator_t<_Base>.
1932 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
1933 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
1934 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
1935 (split_view::_InnerIter::_S_iter_cat()): Likewise.
1936
1937 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
1938 assumption that long is wider than int.
1939 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
1940 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
1941 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
1942 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
1943
1944 P1976R2 Fixed-size span construction from dynamic range
1945 * include/std/span (__cpp_lib_span): Update value.
1946 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
1947 assertion.
1948 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
1949 constraints.
1950 (span::first<Count>(), span::last<Count>()): Use explicit type in
1951 return statement.
1952 (as_bytes, as_writable_bytes): Likewise.
1953 * include/std/version (__cpp_lib_span): Update value.
1954 * testsuite/23_containers/span/1.cc: Check new value.
1955 * testsuite/23_containers/span/2.cc: Check new value.
1956 * testsuite/23_containers/span/explicit.cc: New test.
1957
1958 * include/std/span (span::__is_compatible_array): Simplify alias
1959 template by using requires-clause.
1960 (span::__is_compatible_ref): New alias template for constraining
1961 constructors.
1962 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
1963 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
1964 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
1965 redundant parentheses.
1966 (span(R&&)): Add missing constraints.
1967
1968 * include/std/span (span): Reorder members and rename template
1969 parameters to match declarations in the C++2a working paper.
1970
1971 P2116R0 Remove tuple-like protocol support from fixed-extent span
1972 * include/std/span (get, tuple_size, tuple_element): Remove.
1973 * testsuite/23_containers/span/everything.cc: Remove checks for
1974 tuple-like API.
1975 * testsuite/23_containers/span/get_neg.cc: Remove.
1976 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
1977 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
1978 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
1979
1980 2020-02-17 Patrick Palka <ppalka@redhat.com>
1981
1982 P2106R0 Alternative wording for GB315 and GB316
1983 * include/bits/ranges_algo.h (in_fun_result): New.
1984 (for_each_result, for_each_n_result): Change into an alias of
1985 in_fun_result.
1986 (in_in_result): New.
1987 (mismatch_result): Change into an alias of in_in_result.
1988 (copy_if_result): Change into an alias of in_out_result.
1989 (swap_ranges_result): Change into an alias of in_in_result.
1990 (unary_transform_result): Change into an alias of in_out_result.
1991 (in_in_out_result): New.
1992 (binary_transform_result): Change into an alias of in_in_out_result.
1993 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
1994 remove_copy_result, unique_copy_result, reverse_copy_result,
1995 rotate_copy_result, partial_sort_copy_result): Change into an alias of
1996 in_out_result.
1997 (in_out_out_result): New.
1998 (partition_copy_result, merge_result): Change into an alias of
1999 in_out_out_result.
2000 (set_union_result, set_intersection_result): Change into an alias of
2001 in_in_out_result.
2002 (set_difference_result): Change into an alias of in_out_result.
2003 (set_symmetric_difference): Change into an alias of in_in_out_result.
2004 (min_max_result): New.
2005 (minmax_result, minmax_element_result): Change into an alias of
2006 min_max_result.
2007 (in_found_result): New.
2008 (next_permutation_result, prev_permutation_result): Change into an alias
2009 of in_found_result.
2010 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
2011 Adjust following changes to next_permutation_result and
2012 prev_permutation_result.
2013 * include/bits/ranges_algobase.h (in_out_result): New.
2014 (copy_result, move_result, move_backward_result, copy_backward_result,
2015 copy_n_result): Change into an alias of in_out_result.
2016 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
2017 uninitialized_copy_n_result, uninitialized_move_result,
2018 uninitialized_move_n_result): Likewise.
2019 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
2020 structured bindings.
2021 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
2022
2023 P1243R4 Rangify new algorithms
2024 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
2025 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
2026 * testsuite/25_algorithms/clamp/constrained.cc: New test.
2027 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
2028 * testsuite/25_algorithms/sample/constrained.cc: New test.
2029
2030 2020-02-17 Jonathan Wakely <jwakely@redhat.com>
2031
2032 P1964R2 Wording for boolean-testable
2033 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
2034 (__adjacent_find_fn): Cast result of predicate to bool.
2035 * include/std/concepts (__boolean): Remove.
2036 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
2037 new helper concepts.
2038 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
2039 (predicate): Use __boolean_testable instead of boolean.
2040 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
2041 Likewise.
2042
2043 P1970R2 Consistency for size() functions: Add ranges::ssize
2044 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
2045 * testsuite/std/ranges/access/ssize.cc: New test.
2046
2047 P1956R1 On the names of low-level bit manipulation functions
2048 * include/bits/hashtable_policy.h: Update comment.
2049 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
2050 (ispow2, ceil2, floor2, log2p1): Likewise.
2051 (__cpp_lib_int_pow2): Add feature test macro.
2052 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
2053 * include/std/memory (assume_aligned): Adjust use of ispow2.
2054 * include/std/version (__cpp_lib_int_pow2): Add.
2055 * libsupc++/new_opa.cc: Adjust use of __ispow2.
2056 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
2057 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
2058 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
2059 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
2060 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
2061 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
2062 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
2063 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
2064 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
2065 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
2066 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
2067 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
2068
2069 * include/std/charconv: Add comment.
2070
2071 PR libstdc++/92546 (partial)
2072 * include/bits/random.h (uniform_random_bit_generator): Move definition
2073 to <bits/uniform_int_dist.h>.
2074 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
2075 of <bits/random.h>.
2076 * include/bits/ranges_algobase.h: Do not include <cmath>.
2077 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
2078 Move here.
2079 * include/std/ranges: Do not include <limits>.
2080 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2081
2082 PR libstdc++/92546 (partial)
2083 * include/Makefile.am: Add new header.
2084 * include/Makefile.in: Regenerate.
2085 * include/bits/int_limits.h: New header.
2086 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
2087 numeric_limits with __detail::__int_limits.
2088 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
2089 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
2090 Likewise.
2091 * include/std/charconv (__to_chars_8, __from_chars_binary)
2092 (__from_chars_alpha_to_num, from_chars): Likewise.
2093 * include/std/memory_resource (polymorphic_allocator::allocate)
2094 (polymorphic_allocator::allocate_object): Likewise.
2095 * include/std/string_view (basic_string_view::_S_compare): Likewise.
2096 * include/std/utility (in_range): Likewise.
2097 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
2098 extra error about incomplete type __int_limits<bool>.
2099 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
2100 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
2101 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
2102 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
2103 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
2104 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
2105 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
2106 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
2107 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
2108 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
2109 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
2110 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
2111
2112 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
2113 value for partial_ordering::unordered.
2114
2115 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
2116 const-qualified expression variations.
2117 * include/std/concepts (copyable): Likewise.
2118
2119 * include/std/type_traits (__is_standard_integer): New helper trait.
2120 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
2121 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
2122 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
2123 * testsuite/20_util/integer_comparisons/1.cc: New test.
2124 * testsuite/20_util/integer_comparisons/2.cc: New test.
2125 * testsuite/20_util/integer_comparisons/equal.cc: New test.
2126 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
2127 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
2128 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
2129 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
2130 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
2131 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
2132 * testsuite/20_util/integer_comparisons/less.cc: New test.
2133 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
2134 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
2135 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
2136 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
2137 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
2138
2139 2020-02-16 Patrick Palka <ppalka@redhat.com>
2140
2141 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
2142 Move code after an early exit constexpr if to under an else branch.
2143 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
2144
2145 2020-02-15 Patrick Palka <ppalka@redhat.com>
2146
2147 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
2148 * include/bits/ranges_algobase.h: Likewise.
2149 * include/bits/ranges_uninitialized.h: Likewise.
2150
2151 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
2152 binary_search, copy_if, count, count_if, equal_range, find, find_end,
2153 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
2154 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
2155 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
2156 lower_bound, make_heap, max, max_element, merge, min, min_element,
2157 minmax, minmax_element, mismatch, next_permutation, none_of,
2158 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
2159 partition_point, pop_heap, prev_permutation, push_heap, remove,
2160 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
2161 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
2162 search, search_n, set_difference, set_intersection,
2163 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
2164 stable_partition, stable_sort, swap_ranges, transform, unique,
2165 unique_copy, upper_bound): Convert into function objects.
2166 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
2167 fill, move_backward, copy_backward): Likewise.
2168 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
2169 uninitialized_default_construct_n, uninitialized_value_construct,
2170 uninitialized_value_construct_n, uninitialized_copy,
2171 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
2172 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
2173 destroy, destroy_n): Likewise.
2174
2175 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
2176 (ranges::find_end): ... here.
2177 (ranges::__lexicographical_compare): Fold into ...
2178 (ranges::lexicographical_compare): ... here.
2179 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
2180 (ranges::equal): ... here.
2181
2182 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
2183
2184 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
2185 * include/std/deque: Likewise.
2186 * include/std/forward_list: Likewise.
2187 * include/std/list: Likewise.
2188 * include/std/string: Likewise.
2189 * include/std/vector: Likewise.
2190 * include/std/version: Likewise.
2191 * testsuite/23_containers/deque/erasure.cc: Test for new value.
2192 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
2193 * testsuite/23_containers/list/erasure.cc: Likewise.
2194 * testsuite/23_containers/map/erasure.cc: Likewise.
2195 * testsuite/23_containers/set/erasure.cc: Likewise.
2196 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2197 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
2198 * testsuite/23_containers/vector/erasure.cc: Likewise.
2199
2200 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
2201
2202 * include/bits/random.h (uniform_random_bit_generator): Require min()
2203 and max() to be constant expressions and min() to be less than max().
2204 * testsuite/26_numerics/random/concept.cc: Check additional cases.
2205 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2206
2207 2020-02-13 Patrick Palka <ppalka@redhat.com>
2208
2209 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
2210 * include/Makefile.in: Regenerate.
2211 * include/bits/ranges_uninitialized.h: New header.
2212 * include/std/memory: Include it.
2213 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
2214 test.
2215 * .../uninitialized_copy/constrained.cc: New test.
2216 * .../uninitialized_default_construct/constrained.cc: New test.
2217 * .../uninitialized_fill/constrained.cc: New test.
2218 * .../uninitialized_move/constrained.cc: New test.
2219 * .../uninitialized_value_construct/constrained.cc: New test.
2220
2221 * include/Makefile.am: Add bits/ranges_algobase.h
2222 * include/Makefile.in: Regenerate.
2223 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
2224 existing #includes.
2225 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
2226 __detail::__is_move_iterator, copy_result, move_result,
2227 __equal, equal, copy_result, move_result, move_backward_result,
2228 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
2229 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
2230 fill): Split out into ...
2231 * bits/range_algobase.h: ... this new header.
2232
2233 2020-02-12 Patrick Palka <ppalka@redhat.com>
2234
2235 LWG 3389 and LWG 3390
2236 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
2237 constructing the move_iterator with __i.
2238 (counted_iterator::counted_iterator): Use std::move when initializing
2239 M_current with __i.
2240 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
2241 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
2242
2243 2020-02-12 Sandra Loosemore <sandra@codesourcery.com>
2244
2245 PR libstdc++/79193
2246 PR libstdc++/88999
2247
2248 * configure: Regenerated.
2249
2250 2020-02-12 François Dumont <fdumont@gcc.gnu.org>
2251
2252 * include/bits/hashtable.h
2253 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
2254 missing std namespace qualification to forward call.
2255
2256 2020-02-09 Jonathan Wakely <jwakely@redhat.com>
2257
2258 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
2259 comment.
2260 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
2261
2262 * include/std/ranges: Fix non-ASCII characters in comment.
2263
2264 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
2265 equality comparison to be valid and return bool.
2266 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
2267 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
2268 type with ambiguous conversion to fundamental types.
2269 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
2270
2271 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
2272
2273 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
2274 Use remove_cvref_t.
2275 (readable_traits): Rename to indirectly_readable_traits.
2276 (readable): Rename to indirectly_readable.
2277 (writable): Rename to indirectly_writable.
2278 (__detail::__iter_exchange_move): Do not use remove_reference_t.
2279 (indirectly_swappable): Adjust requires expression parameter types.
2280 expression.
2281 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
2282 (ranges::replace_if, ranges::generate_n, ranges::generate)
2283 (ranges::remove): Use new name for writable.
2284 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
2285 Use new name for readable.
2286 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
2287 new name for readable_traits.
2288 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
2289 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
2290 new definition of indirectly_readable.
2291
2292 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
2293 to take parameters of common_iterator, instead of the common_iterator
2294 type itself. Fix argument for __common_iter_has_arrow constraint.
2295 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
2296
2297 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
2298
2299 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
2300 warning.
2301 (basic_istream_view::_Iterator::operator++()): Add missing return.
2302
2303 2020-02-07 Patrick Palka <ppalka@redhat.com>
2304
2305 * include/bits/ranges_algo.h: Remove extraneous &&.
2306
2307 * include/std/ranges (ranges::__detail::__stream_extractable,
2308 ranges::basic_istream_view, ranges::istream_view): Define.
2309 * testsuite/std/ranges/istream_view: New test.
2310
2311 Implement C++20 range adaptors
2312 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
2313 (subrange::_S_store_size): Mark as const instead of constexpr to
2314 avoid what seems to be a bug in GCC.
2315 (__detail::__box): Give it defaulted copy and move constructors.
2316 (ranges::views::_Single::operator()): Mark constexpr.
2317 (ranges::views::_Iota::operator()): Mark constexpr.
2318 (__detail::Empty): Define.
2319 (ranges::views::__closure::_RangeAdaptor,
2320 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
2321 ranges::views::all, ranges::__detail::find_if,
2322 ranges::__detail::find_if_not, ranges::__detail::mismatch,
2323 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
2324 ranges::views::transform, take_view, ranges::views::take,
2325 take_while_view, ranges::views::take_while, drop_view,
2326 ranges::views::drop, join_view, ranges::views::join,
2327 __detail::require_constant, __detail::tiny_range, split_view,
2328 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
2329 common_view, ranges::views::common, reverse_view,
2330 ranges::views::reverse,
2331 ranges::views::__detail::__is_reversible_subrange,
2332 ranges::views::__detail::__is_reverse_view, reverse_view,
2333 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
2334 ranges::views::elements, ranges::views::keys, ranges::views::values):
2335 Define.
2336 (views): Alias for ranges::views.
2337 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
2338 tuple_element<1, ranges::subrange>): New partial specializations.
2339 * testsuite/std/ranges/adaptors/all.cc: New test.
2340 * testsuite/std/ranges/adaptors/common.cc: Likewise.
2341 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
2342 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
2343 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
2344 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
2345 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
2346 * testsuite/std/ranges/adaptors/join.cc: Likewise.
2347 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
2348 * testsuite/std/ranges/adaptors/split.cc: Likewise.
2349 * testsuite/std/ranges/adaptors/take.cc: Likewise.
2350 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
2351 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
2352
2353 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
2354
2355 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
2356 type of enumerations and comparison category types.
2357 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
2358 (__cmp_cat::_Ncmp::unordered): Change value to 2.
2359 (partial_ordering::_M_value, weak_ordering::_M_value)
2360 (strong_ordering::_M_value): Change type to __cmp_cat::type.
2361 (partial_ordering::_M_is_ordered): Remove data member.
2362 (partial_ordering): Use second bit of _M_value for unordered. Adjust
2363 comparison operators.
2364 (weak_ordering::operator partial_ordering): Simplify to remove
2365 branches.
2366 (operator<=>(unspecified, weak_ordering)): Likewise.
2367 (strong_ordering::operator partial_ordering): Likewise.
2368 (strong_ordering::operator weak_ordering): Likewise.
2369 (operator<=>(unspecified, strong_ordering)): Likewise.
2370 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
2371 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
2372 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
2373
2374 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
2375 __cpp_lib_three_way_comparison macro and use deduced return type for
2376 operator<=>.
2377 * testsuite/std/ranges/iota/iterator.cc: New test.
2378
2379 2020-02-07 Patrick Palka <ppalka@redhat.com>
2380 Jonathan Wakely <jwakely@redhat.com>
2381
2382 Implement C++20 constrained algorithms
2383 * include/Makefile.am: Add new header.
2384 * include/Makefile.in: Regenerate.
2385 * include/std/algorithm: Include <bits/ranges_algo.h>.
2386 * include/bits/ranges_algo.h: New file.
2387 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
2388 * testsuite/25_algorithms/all_of/constrained.cc: New test.
2389 * testsuite/25_algorithms/any_of/constrained.cc: New test.
2390 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
2391 * testsuite/25_algorithms/copy/constrained.cc: New test.
2392 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
2393 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
2394 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
2395 * testsuite/25_algorithms/count/constrained.cc: New test.
2396 * testsuite/25_algorithms/count_if/constrained.cc: New test.
2397 * testsuite/25_algorithms/equal/constrained.cc: New test.
2398 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
2399 * testsuite/25_algorithms/fill/constrained.cc: New test.
2400 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
2401 * testsuite/25_algorithms/find/constrained.cc: New test.
2402 * testsuite/25_algorithms/find_end/constrained.cc: New test.
2403 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
2404 * testsuite/25_algorithms/find_if/constrained.cc: New test.
2405 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
2406 * testsuite/25_algorithms/for_each/constrained.cc: New test.
2407 * testsuite/25_algorithms/generate/constrained.cc: New test.
2408 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
2409 * testsuite/25_algorithms/heap/constrained.cc: New test.
2410 * testsuite/25_algorithms/includes/constrained.cc: New test.
2411 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
2412 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
2413 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
2414 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
2415 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
2416 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
2417 test.
2418 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
2419 * testsuite/25_algorithms/max/constrained.cc: New test.
2420 * testsuite/25_algorithms/max_element/constrained.cc: New test.
2421 * testsuite/25_algorithms/merge/constrained.cc: New test.
2422 * testsuite/25_algorithms/min/constrained.cc: New test.
2423 * testsuite/25_algorithms/min_element/constrained.cc: New test.
2424 * testsuite/25_algorithms/minmax/constrained.cc: New test.
2425 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
2426 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
2427 * testsuite/25_algorithms/move/constrained.cc: New test.
2428 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
2429 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
2430 * testsuite/25_algorithms/none_of/constrained.cc: New test.
2431 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
2432 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
2433 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
2434 * testsuite/25_algorithms/partition/constrained.cc: New test.
2435 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
2436 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
2437 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
2438 * testsuite/25_algorithms/remove/constrained.cc: New test.
2439 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
2440 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
2441 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
2442 * testsuite/25_algorithms/replace/constrained.cc: New test.
2443 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
2444 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
2445 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
2446 * testsuite/25_algorithms/reverse/constrained.cc: New test.
2447 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
2448 * testsuite/25_algorithms/rotate/constrained.cc: New test.
2449 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
2450 * testsuite/25_algorithms/search/constrained.cc: New test.
2451 * testsuite/25_algorithms/search_n/constrained.cc: New test.
2452 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
2453 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
2454 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
2455 test.
2456 * testsuite/25_algorithms/set_union/constrained.cc: New test.
2457 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
2458 * testsuite/25_algorithms/sort/constrained.cc: New test.
2459 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
2460 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
2461 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
2462 * testsuite/25_algorithms/transform/constrained.cc: New test.
2463 * testsuite/25_algorithms/unique/constrained.cc: New test.
2464 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
2465 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
2466
2467 2020-02-06 Jonathan Wakely <jwakely@redhat.com>
2468
2469 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
2470 number in comment. Fix indentation.
2471
2472 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
2473 redundant _GLIBCXX20_CONSTEXPR.
2474
2475 * include/std/ranges (viewable_range): Replace decay_t with
2476 remove_cvref_t (LWG 3375).
2477
2478 2020-02-05 Jonathan Wakely <jwakely@redhat.com>
2479
2480 * include/bits/iterator_concepts.h (iter_reference_t)
2481 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
2482 Remove workarounds for PR c++/67704.
2483 * testsuite/24_iterators/aliases.cc: New test.
2484
2485 2020-02-05 Patrick Palka <ppalka@redhat.com>
2486
2487 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
2488 when initializing _M_current.
2489 (move_iterator::base): Split into two overloads differing in
2490 ref-qualifiers as in P1207R4 for C++20.
2491
2492 2020-02-04 Jonathan Wakely <jwakely@redhat.com>
2493
2494 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
2495 use.
2496
2497 PR libstdc++/93562
2498 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
2499 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
2500 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
2501
2502 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
2503
2504 * configure: Regenerate.
2505
2506 2020-01-31 Patrick Palka <ppalka@redhat.com>
2507
2508 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
2509 test_range::end() returns the same type as test_range::begin().
2510 * testsuite/24_iterators/range_operations/next.cc: Likewise.
2511 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
2512 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
2513 Always return a sentinel<I>.
2514
2515 2020-01-29 Jonathan Wakely <jwakely@redhat.com>
2516
2517 PR libstdc++/92895
2518 * include/std/stop_token (stop_token::stop_possible()): Call new
2519 _M_stop_possible() function.
2520 (stop_token::stop_requested()): Do not use stop_possible().
2521 (stop_token::binary_semaphore): New class, as temporary stand-in for
2522 std::binary_semaphore.
2523 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
2524 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
2525 New data members for symchronization with stop_callback destruction.
2526 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
2527 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
2528 Remove.
2529 (stop_token::_Stop_cb::_M_run): New member function.
2530 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
2531 Remove.
2532 (stop_token::_Stop_state::_M_owners): New data member to track
2533 reference count for ownership.
2534 (stop_token::_Stop_state::_M_value): New data member combining a
2535 spinlock, the stop requested flag, and the reference count for
2536 associated stop_source objects.
2537 (stop_token::_Stop_state::_M_requester): New data member for
2538 synchronization with stop_callback destruction.
2539 (stop_token::_Stop_state::_M_stop_possible()): New member function.
2540 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
2541 of _M_value.
2542 (stop_token::_Stop_state::_M_add_owner)
2543 (stop_token::_Stop_state::_M_release_ownership)
2544 (stop_token::_Stop_state::_M_add_ssrc)
2545 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
2546 updating reference counts.
2547 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2548 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2549 (stop_token::_Stop_state::_M_try_lock)
2550 (stop_token::_Stop_state::_M_try_lock_and_stop)
2551 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
2552 managing spinlock.
2553 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
2554 read and update state. Release lock while running callbacks. Use new
2555 data members to synchronize with callback destruction.
2556 (stop_token::_Stop_state::_M_remove_callback): Likewise.
2557 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
2558 to read and update state.
2559 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
2560 replacing shared_ptr.
2561 (stop_source::stop_source(const stop_source&)): Update reference count.
2562 (stop_source::operator=(const stop_source&)): Likewise.
2563 (stop_source::~stop_source()): Likewise.
2564 (stop_source::stop_source(stop_source&&)): Define as defaulted.
2565 (stop_source::operator=(stop_source&&)): Establish postcondition on
2566 parameter.
2567 (stop_callback): Enforce preconditions on template parameter. Replace
2568 base class with data member of new _Cb_impl type.
2569 (stop_callback::stop_callback(const stop_token&, Cb&&))
2570 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
2571 (stop_callback::_Cb_impl): New type wrapping _Callback member and
2572 defining the _S_execute member function.
2573 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
2574 test.
2575 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
2576 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
2577 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
2578 New test.
2579 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
2580 test.
2581 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
2582 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
2583 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
2584 test.
2585
2586 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
2587 three_way_comparable_with.
2588 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
2589 (compare_three_way::operator()): Remove redundant constraint from
2590 requires-clause.
2591 (__detail::_Synth3way::operator()): Use three_way_comparable_with
2592 instead of workaround.
2593 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
2594 output due to simplified constraints on compare_three_way::operator().
2595
2596 PR libstdc++/93479
2597 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
2598 * testsuite/18_support/comparisons/object/93479.cc: New test.
2599
2600 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
2601 returns the same type as test_range::begin(). Add comments.
2602 * testsuite/std/ranges/access/rbegin.cc: Likewise.
2603 * testsuite/std/ranges/access/rend.cc: Likewise.
2604 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
2605 test_range is the same as its iterator type.
2606 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
2607 operator- overloads to satisfy sized_sentinel_for when the iterator
2608 satisfies random_access_iterator.
2609
2610 2020-01-28 Jonathan Wakely <jwakely@redhat.com>
2611
2612 PR libstdc++/93470
2613 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
2614 static assertion to object types.
2615
2616 PR libstdc++/93325
2617 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
2618 clock_gettime instead of explicit glibc version check.
2619 * configure: Regenerate.
2620
2621 2020-01-28 Martin Liska <mliska@suse.cz>
2622
2623 PR libstdc++/93478
2624 * include/std/atomic: Fix typo.
2625 * include/std/optional: Likewise.
2626
2627 2020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
2628
2629 * configure: Regenerate.
2630
2631 2020-01-27 Jonathan Wakely <jwakely@redhat.com>
2632
2633 PR libstdc++/93426
2634 * include/std/span (span): Fix deduction guide.
2635 * testsuite/23_containers/span/deduction.cc: New test.
2636
2637 2020-01-24 Jonathan Wakely <jwakely@redhat.com>
2638
2639 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
2640 (__cmp_cat::_Ord::equivalent): Add enumerator.
2641 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
2642 and greater.
2643 (partial_ordering, weak_ordering, strong_ordering): Remove
2644 constructors taking __cmp_cat::_Eq parameters. Use renamed
2645 enumerators.
2646
2647 2020-01-24 Maciej W. Rozycki <macro@wdc.com>
2648
2649 * acinclude.m4: Handle `--with-toolexeclibdir='.
2650 * Makefile.in: Regenerate.
2651 * aclocal.m4: Regenerate.
2652 * configure: Regenerate.
2653 * doc/Makefile.in: Regenerate.
2654 * include/Makefile.in: Regenerate.
2655 * libsupc++/Makefile.in: Regenerate.
2656 * po/Makefile.in: Regenerate.
2657 * python/Makefile.in: Regenerate.
2658 * src/Makefile.in: Regenerate.
2659 * src/c++11/Makefile.in: Regenerate.
2660 * src/c++17/Makefile.in: Regenerate.
2661 * src/c++98/Makefile.in: Regenerate.
2662 * src/filesystem/Makefile.in: Regenerate.
2663 * testsuite/Makefile.in: Regenerate.
2664
2665 2020-01-23 Alexandre Oliva <oliva@adacore.com>
2666
2667 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
2668 * configure: Rebuild.
2669
2670 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
2671
2672 2020-01-23 Jonathan Wakely <jwakely@redhat.com>
2673
2674 PR libstdc++/91947
2675 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
2676 rule.
2677 * include/Makefile.in: Regenerate.
2678
2679 2020-01-20 Jonathan Wakely <jwakely@redhat.com>
2680
2681 * doc/xml/faq.xml: Fix grammar.
2682 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
2683 * doc/xml/manual/spine.xml: Update copyright years.
2684 * doc/html/*: Regenerate.
2685
2686 2020-01-19 Eric S. Raymond <esr@thyrsus.com>
2687
2688 * doc/xml/faq.xml: Update for SVN -> Git transition.
2689 * doc/xml/manual/appendix_contributing.xml: Likewise.
2690 * doc/xml/manual/status_cxx1998.xml: Likewise.
2691 * doc/xml/manual/status_cxx2011.xml: Likewise.
2692 * doc/xml/manual/status_cxx2014.xml: Likewise.
2693 * doc/xml/manual/status_cxx2017.xml: Likewise.
2694 * doc/xml/manual/status_cxx2020.xml: Likewise.
2695 * doc/xml/manual/status_cxxtr1.xml: Likewise.
2696 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
2697
2698 2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
2699
2700 * include/Makefile.am: Add coroutine to the std set.
2701 * include/Makefile.in: Regenerated.
2702 * include/std/coroutine: New file.
2703
2704 2020-01-17 Jonathan Wakely <jwakely@redhat.com>
2705
2706 PR libstdc++/92376
2707 * include/bits/c++config: Only do PSTL config when the header is
2708 present, to fix freestanding.
2709 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
2710 functions if they were detected by configure.
2711
2712 2020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
2713 Matthew Bauer <mjbauer95@gmail.com>
2714 Jonathan Wakely <jwakely@redhat.com>
2715
2716 PR bootstrap/64271 (partial)
2717 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
2718 to unsigned short.
2719 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
2720 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
2721 definitions with NetBSD upstream.
2722 (ctype_base::blank): Use _CTYPE_BL.
2723 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
2724 Declaration.
2725 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
2726 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
2727 parameters to unsigned char.
2728 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
2729
2730 2020-01-16 François Dumont <fdumont@gcc.gnu.org>
2731
2732 PR libstdc++/91263
2733 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
2734 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
2735 (_Equality_base): Remove.
2736 (_Equality<>::_M_equal): Review implementation. Use
2737 std::is_permutation.
2738 * testsuite/23_containers/unordered_multiset/operators/1.cc
2739 (Hash, Equal, test02, test03): New.
2740 * testsuite/23_containers/unordered_set/operators/1.cc
2741 (Hash, Equal, test02, test03): New.
2742
2743 2020-01-15 Jonathan Wakely <jwakely@redhat.com>
2744
2745 PR libstdc++/93267
2746 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
2747 Move here from <bits/range_access.h> and define using __int128 when
2748 available.
2749 (__is_integer_like, __is_signed_integer_like): Move here from
2750 <bits/range_access.h>.
2751 (weakly_incrementable): Use __is_signed_integer_like.
2752 * include/bits/range_access.h (__max_diff_type, __max_size_type)
2753 (__is_integer_like, __is_signed_integer_like): Move to
2754 <bits/iterator_concepts.h>.
2755 (__make_unsigned_like_t): Move here from <ranges>.
2756 * include/std/ranges (__make_unsigned_like_t): Move to
2757 <bits/range_access.h>.
2758 (iota_view): Replace using-directive with using-declarations.
2759 * testsuite/std/ranges/iota/93267.cc: New test.
2760 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
2761
2762 2020-01-13 Jonathan Wakely <jwakely@redhat.com>
2763
2764 PR libstdc++/93244
2765 * include/bits/fs_path.h (path::generic_string<C,A>)
2766 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
2767 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
2768 root-dir is converted to forward slash in generic pathname.
2769 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
2770 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
2771
2772 PR libstdc++/58605
2773 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
2774 Define.
2775 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
2776 (__atomic_float): Add default member initializer for C++20.
2777 * include/std/atomic (atomic): Likewise.
2778 (atomic::atomic()): Remove noexcept-specifier on default constructor.
2779 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
2780 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
2781 number.
2782 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
2783 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
2784 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
2785 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
2786 expected result for is_trivially_default_constructible.
2787 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
2788 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
2789 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
2790 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
2791 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
2792 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
2793 expected results for is_trivially_default_constructible.
2794 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
2795 new test generator.
2796
2797 2020-01-10 Jonathan Wakely <jwakely@redhat.com>
2798
2799 * testsuite/util/testsuite_iterators.h: Improve comment.
2800
2801 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
2802 initialization syntax.
2803
2804 PR libstdc++/92285
2805 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
2806 of base class independent of __cplusplus value.
2807 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
2808 type defined in the base class
2809 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
2810 * testsuite/24_iterators/istreambuf_iterator/requirements/
2811 base_classes.cc: Adjust expected base class for C++98.
2812
2813 2020-01-09 Olivier Hainque <hainque@adacore.com>
2814
2815 * doc/xml/manual/appendix_contributing.xml: Document _C2
2816 as a reserved identifier, by VxWorks.
2817 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
2818 * include/bits/stl_multimap.h: Likewise.
2819
2820 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
2821
2822 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
2823 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
2824 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
2825 partial specialization to disambiguate the two constrained
2826 specializations.
2827
2828 * include/experimental/type_traits (experimental::is_pod_v): Disable
2829 -Wdeprecated-declarations warnings around reference to std::is_pod.
2830 * include/std/type_traits (is_pod_v): Likewise.
2831 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
2832 is_standard_layout and is_trivial. Do not check is_pod for C++20.
2833 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
2834 Add -Wno-deprecated for C++20.
2835 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
2836 * testsuite/20_util/is_pod/value.cc: Likewise.
2837 * testsuite/experimental/type_traits/value.cc: Likewise.
2838
2839 2020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
2840
2841 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
2842 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
2843 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
2844
2845 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
2846
2847 PR libstdc++/93205
2848 * include/bits/random.h (operator>>): Check stream operation succeeds.
2849 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
2850 typedefs.
2851 (operator>>): Remove redundant __istream_type typedefs. Check stream
2852 operations succeed.
2853 (__extract_params): New function to fill a vector from a stream.
2854 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
2855
2856 PR libstdc++/93208
2857 * config/abi/pre/gnu.ver: Add new exports.
2858 * include/std/memory_resource (memory_resource::~memory_resource()):
2859 Do not define inline.
2860 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
2861 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
2862 Define.
2863 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
2864 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
2865
2866 2020-01-09 François Dumont <fdumont@gcc.gnu.org>
2867
2868 PR libstdc++/92124
2869 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
2870 template alias.
2871 (_Hashtable<>::__fwd_value_for): New.
2872 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
2873 parameter.
2874 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
2875 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
2876 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
2877 with std::move.
2878 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
2879 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
2880 Adapt.
2881 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
2882 Adapt.
2883 * testsuite/23_containers/unordered_set/92124.cc: New.
2884
2885 2020-01-08 Jonathan Wakely <jwakely@redhat.com>
2886
2887 PR libstdc++/93201
2888 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
2889 detailed error reporting for remove_all. Check result of recursive
2890 call before incrementing iterator.
2891 (remove_all(const path&), remove_all(const path&, error_code&)): Use
2892 do_remove_all.
2893 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
2894 result of recursive call before incrementing iterator.
2895 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
2896 are reported correctly.
2897 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
2898
2899 2020-01-07 Thomas Rodgers <trodgers@redhat.com>
2900
2901 * include/std/condition_variable
2902 (condition_variable_any::wait_on): Rename to match current draft
2903 standard.
2904 (condition_variable_any::wait_on_until): Likewise.
2905 (condition_variable_any::wait_on_for): Likewise.
2906 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
2907 Adjust tests to account for renamed methods.
2908
2909 2020-01-07 François Dumont <fdumont@gcc.gnu.org>
2910
2911 PR libstdc++/92124
2912 * include/bits/stl_tree.h
2913 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
2914 std::move_if_noexcept by std::move.
2915 * testsuite/23_containers/map/92124.cc: New.
2916 * testsuite/23_containers/set/92124.cc: New.
2917
2918 2020-01-06 Jonathan Wakely <jwakely@redhat.com>
2919
2920 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
2921 (stop_source): Likewise (LWG 3362).
2922 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
2923 comparisons.
2924
2925 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
2926 (lexicographical_compare_three_way): Do not depend on
2927 __cpp_lib_concepts.
2928 * include/std/version (__cpp_lib_three_way_comparison): Only define
2929 when __cpp_lib_concepts is defined.
2930 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
2931
2932 2020-01-03 Jonathan Wakely <jwakely@redhat.com>
2933
2934 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
2935 Only define four-argument overload when __cpp_lib_concepts is defined.
2936
2937 2020-01-01 John David Anglin <danglin@gcc.gnu.org>
2938
2939 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
2940
2941 2020-01-01 Jakub Jelinek <jakub@redhat.com>
2942
2943 Update copyright years.
2944 \f
2945 Copyright (C) 2020 Free Software Foundation, Inc.
2946
2947 Copying and distribution of this file, with or without modification,
2948 are permitted in any medium without royalty provided the copyright
2949 notice and this notice are preserved.