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