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