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