]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
Removing unused, non-standard function in _Rb_tree
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
e0bcd31d 12019-05-14 Jonathan Wakely <jwakely@redhat.com>
2
4a182e12 3 * include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
4 Remove unused, non-standard function.
5
d4a9b293 6 * include/bits/regex.h (match_results::max_size()): Adjust return
7 value to account for prefix/suffix/unmatched subs.
8 (match_results::_M_resize(unsigned int)): Use _Base_type::assign to
9 reset the contained sub matches.
10 (match_results::_M_establish_failed_match(_Bi_iter)): Add new member
11 function to set result state following a failed match.
12 * include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
13 sub_match states after _M_resize. Use _M_establish_failed_match.
14
e0bcd31d 15 PR libstdc++/69724
16 * include/std/thread (thread::_State_impl, thread::_S_make_state):
17 Replace single _Callable parameter with variadic _Args pack, to
18 forward them directly to the tuple of decayed copies.
19 * testsuite/30_threads/thread/cons/69724.cc: New test.
20
872d7a1f 212019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
22
23 Inconsistency wrt Allocators in basic_string assignment (LWG2579)
24 * include/bits/basic_string.h: (operator=(const basic_string&):
25 Move allocator decision to assign.
26 (assign(const basic_string&)): Move allocator decision here.
27 * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
28 Add tests.
29 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
30 Add tests.
31
67dff8a4 322019-05-14 Jonathan Wakely <jwakely@redhat.com>
33
155856f9 34 * testsuite/util/testsuite_allocator.h (memory_resource)
35 (default_resource_mgr): Fix indentation.
36
94e98eda 37 * testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
38 Use operator-> to access raw pointer member.
39 * testsuite/23_containers/vector/59829.cc: Likewise.
40 * testsuite/23_containers/vector/bool/80893.cc: Likewise.
41 * testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
42 * testsuite/util/testsuite_allocator.h (NullablePointer): New utility
43 for tests.
44 (PointerBase, PointerBase_void): Derive from NullablePointer and use
45 its constructors and equality operators. Change converting
46 constructors to use operator-> to access private member of the other
47 pointer type.
48 (PointerBase_void::operator->()): Add, for access to private member.
49 (operator-(PointerBase, PointerBase)): Change to hidden friend.
50 (operator==(PointerBase, PointerBase)): Remove.
51 (operator!=(PointerBase, PointerBase)): Remove.
52
8ac285f1 53 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
54 not assume field called _M_head_impl is the first tuple element.
55 * testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
56 implementation more accurate.
57 * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
58 empty pointer type and non-empty deleter.
59
67dff8a4 60 LWG 2899 - Make is_move_constructible correct for unique_ptr
61 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
62 move assignment operator.
63 (__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
64 (__uniq_ptr_data): New class template with conditionally deleted
65 special members.
66 (unique_ptr, unique_ptr<T[], D>): Change type of data member from
67 __uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
68 constructor and move assignment operator as defaulted.
69 (unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
70 __uniq_ptr_impl::release().
71 (unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
72 to __uniq_ptr_impl::reset(pointer).
73 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
74 Check for new __uniq_ptr_data type.
75 * testsuite/20_util/unique_ptr/dr2899.cc: New test.
76
6818ab51 772019-05-13 Jonathan Wakely <jwakely@redhat.com>
78
fecfaafd 79 PR libstdc++/90454.cc path construction from void*
80 * include/bits/fs_path.h (path::_Path): Use remove_pointer so that
81 pointers to void are rejected as well as void.
82 * include/experimental/bits/fs_path.h (path::_Path): Likewise.
83 * testsuite/27_io/filesystem/path/construct/80762.cc: Also check
84 pointers to void.
85 * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
86
6818ab51 87 * doc/xml/manual/policy_data_structures.xml: Comment out stray
88 <remark> elements. Fix formatting of bibliography references.
89
8967657e 902019-05-13 Edward Smith-Rowland <3dw4rd@verizon.net>
91
92 * doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.
93
8dd55415 942019-05-13 Jonathan Wakely <jwakely@redhat.com>
ca8ead92 95
b6cabd65 96 Remove Profile Mode, deprecated since 7.1.0
97 * doc/Makefile.am: Remove XML file for profile mode docs.
98 * doc/Makefile.in: Regenerate.
99 * doc/xml/authors.xml: Remove authors of profile mode docs.
100 * doc/xml/manual/appendix_contributing.xml: Remove mention of profile
101 mode.
102 * doc/xml/manual/debug.xml: Likewise.
103 * doc/xml/manual/evolution.xml: Document removal of profile mode.
104 * doc/xml/manual/profile_mode.xml: Remove profile mode docs.
105 * doc/xml/manual/spine.xml: Remove profile mode author credit.
106 * doc/xml/manual/test.xml: Remove docs for dg-require-profile-mode
107 directive.
108 * doc/xml/manual/using.xml: Remove docs for profile mode headers and
109 macro.
110 * doc/html/*: Regenerate.
111 * include/Makefile.am: Remove profile mode headers.
112 * include/Makefile.in: Regenerate.
113 * include/bits/c++config (std::__profile): Remove namespace.
114 [_GLIBCXX_PROFILE]: Remove checks for macro.
115 * include/profile/array: Remove.
116 * include/profile/base.h: Remove.
117 * include/profile/bitset: Remove.
118 * include/profile/deque: Remove.
119 * include/profile/forward_list: Remove.
120 * include/profile/impl/profiler.h: Remove.
121 * include/profile/impl/profiler_algos.h: Remove.
122 * include/profile/impl/profiler_container_size.h: Remove.
123 * include/profile/impl/profiler_hash_func.h: Remove.
124 * include/profile/impl/profiler_hashtable_size.h: Remove.
125 * include/profile/impl/profiler_list_to_slist.h: Remove.
126 * include/profile/impl/profiler_list_to_vector.h: Remove.
127 * include/profile/impl/profiler_map_to_unordered_map.h: Remove.
128 * include/profile/impl/profiler_node.h: Remove.
129 * include/profile/impl/profiler_state.h: Remove.
130 * include/profile/impl/profiler_trace.h: Remove.
131 * include/profile/impl/profiler_vector_size.h: Remove.
132 * include/profile/impl/profiler_vector_to_list.h: Remove.
133 * include/profile/iterator_tracker.h: Remove.
134 * include/profile/list: Remove.
135 * include/profile/map: Remove.
136 * include/profile/map.h: Remove.
137 * include/profile/multimap.h: Remove.
138 * include/profile/multiset.h: Remove.
139 * include/profile/ordered_base.h: Remove.
140 * include/profile/set: Remove.
141 * include/profile/set.h: Remove.
142 * include/profile/unordered_base.h: Remove.
143 * include/profile/unordered_map: Remove.
144 * include/profile/unordered_set: Remove.
145 * include/profile/vector: Remove.
146 * scripts/run_doxygen: Do not process profile mode headers.
147 * testsuite/23_containers/array/element_access/60497.cc: Don't use
148 profile mode type.
149 * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
150 Remove dg-skip-if for profile mode.
151 * testsuite/23_containers/forward_list/capacity/1.cc: Remove
152 preprocessor check for profile mode.
153 * testsuite/23_containers/list/capacity/29134.cc: Likewise.
154 * testsuite/23_containers/map/modifiers/extract.cc: Remove dg-skip-if
155 for profile mode.
156 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
157 Likewise.
158 * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
159 * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
160 * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
161 * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
162 * testsuite/23_containers/unordered_map/modifiers/extract.cc:
163 Likewise.
164 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
165 Likewise.
166 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
167 Likewise.
168 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
169 Likewise.
170 * testsuite/23_containers/vector/bool/capacity/29134.cc: Remove
171 preprocessor check for profile mode.
172 * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
173 Likewise.
174 * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
175 Remove dg-skip-if for profile mode.
176 * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
177 * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
178 * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
179 * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
180 * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
181 * testsuite/Makefile.am: Remove profile_flags variable and
182 * testsuite/Makefile.am: Remove profile_flags variable and
183 check-profile target.
184 * testsuite/Makefile.in: Regenerate.
185 * testsuite/ext/profile/all.cc: Remove.
186 * testsuite/ext/profile/mutex_extensions_neg.cc: Remove.
187 * testsuite/ext/profile/profiler_algos.cc: Remove.
188 * testsuite/ext/profile/replace_new.cc: Remove.
189 * testsuite/ext/throw_allocator/deallocate_global.cc: Remove
190 preprocessor check for profile mode.
191 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
192 * testsuite/lib/libstdc++.exp (check_v3_target_profile_mode): Remove.
193 (check_v3_target_normal_mode): Do not check for profile mode macro.
194 * testsuite/libstdc++-prettyprinters/80276.cc: Remove dg-skip-if for
195 profile mode.
196 * testsuite/libstdc++-prettyprinters/compat.cc: Likewise.
197 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
198 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
199 * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
200 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
201 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
202 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
203 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
204 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
205 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
206
ca8ead92 207 Remove array_allocator extension, deprecated since 4.9.0
208 * doc/xml/manual/allocator.xml: Remove documentation for
209 array_allocator.
210 * doc/xml/manual/evolution.xml: Document array_allocator removal.
211 * doc/xml/manual/using.xml: Remove header from documentation.
212 * include/Makefile.am: Remove <ext/array_allocator.h> header.
213 * include/Makefile.in: Regenerate.
214 * include/ext/array_allocator.h: Remove.
215 * include/precompiled/extc++.h: Do not include removed header.
216 * testsuite/ext/array_allocator/1.cc: Remove.
217 * testsuite/ext/array_allocator/2.cc: Remove.
218 * testsuite/ext/array_allocator/26875.cc: Remove.
219 * testsuite/ext/array_allocator/3.cc: Remove.
220 * testsuite/ext/array_allocator/check_deallocate_null.cc: Remove.
221 * testsuite/ext/array_allocator/check_delete.cc: Remove.
222 * testsuite/ext/array_allocator/check_new.cc: Remove.
223 * testsuite/ext/array_allocator/variadic_construct.cc: Remove.
224 * testsuite/ext/headers.cc: Do not include removed header.
225
64b2700c 2262019-05-11 François Dumont <fdumont@gcc.gnu.org>
227
228 * include/bits/stl_bvector.h
229 (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
230 Make hidden friend.
231 (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
232 Likewise.
233 (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
234 Likewise.
235 (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
236 Likewise.
237 (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
238 Likewise.
239 (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
240 Likewise.
241 (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
242 Likewise.
243 (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
244 copy elision.
245 (_Bit_iterator::operator-(difference_type)): Likewise.
246 (operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
247 (_Bit_const_iterator::operator+(difference_type)): Likewise and allow
248 NRVO copy elision.
249 (_Bit_const_iterator::operator-(difference_type)): Likewise.
250 (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
251
de3f1d9a 2522019-05-10 Jonathan Wakely <jwakely@redhat.com>
253
eb1be9e7 254 PR libstdc++/81266
255 * testsuite/util/thread/all.h: Do not use remove_pointer for
256 std::thread::native_handle_type.
257
5c6334a5 258 PR libstdc++/90397
259 * include/std/variant (_Variant_storage<false, Types...>::_M_storage())
260 (_Variant_storage<true, Types...>::_M_reset()))
261 (_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
262 (__get_storage): Likewise.
263 (variant): Add noexcept to friend declarations for __get and
264 __get_storage.
265
3e5c91bd 266 PR libstdc++/90388
267 * include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
268 Use _Require for constraints.
269 (operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
270 per the standard.
271 (__uniq_ptr_hash): New base class with conditionally-disabled call
272 operator.
273 (hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
274 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
275 * testsuite/20_util/unique_ptr/hash/90388.cc: New test.
276
de3f1d9a 277 * include/bits/shared_ptr.h: Improve docs.
278 * include/bits/shared_ptr_base.h: Likewise.
279 * include/bits/stl_uninitialized.h: Likewise.
280 * include/bits/unique_ptr.h: Likewise.
281 * libsupc++/new: Likewise.
282
d084c5ba 2832019-05-09 François Dumont <fdumont@gcc.gnu.org>
284
285 * include/bits/stl_deque.h
286 (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
287 Make hidden friend.
288 (operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
289 Likewise.
290 (operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
291 Likewise.
292 (operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
293 Likewise.
294 (operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
295 Likewise.
296 (operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
297 Likewise.
298 (_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
299 copy elision.
300 (_Deque_iterator<>::operator-(difference_type)): Likewise.
301
0f61cb49 3022019-05-08 François Dumont <fdumont@gcc.gnu.org>
303
304 PR libstdc++/90277
305 * testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
306 (test01): Reserve for number of insertions to avoid rehash during test.
307 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
308 (test01): Likewise.
309 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
310 (test01): Likewise.
311 (test02): Likewise.
312 (test03): Likewise.
313
c800ee48 3142019-05-08 Jonathan Wakely <jwakely@redhat.com>
315
316 * include/experimental/bits/fs_path.h: Improve docs.
317 * include/experimental/bits/net.h: Fix wrong header name in comment.
318 Do not document implementation details.
319 * include/experimental/netfwd: Fix doxygen grouping.
320
b103d23d 3212019-05-07 Jonathan Wakely <jwakely@redhat.com>
322
aa371af3 323 * include/bits/stl_pair.h: Improve docs.
324 * include/std/tuple: Likewise.
325
dceea60f 326 * doc/doxygen/doxygroups.cc (std::literals): Add documentation for
327 inline namespace.
328 * include/std/chrono: Improve docs.
329 * include/std/ratio: Do not document implementation details.
330 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
331 line numbers.
332 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
333
a9ae69b5 334 PR libstdc++/89102
335 * doc/xml/manual/intro.xml: Document DR 2408 and 2465 changes.
336 * include/std/chrono (__duration_common_type_wrapper): Replace with ...
337 (__duration_common_type): New helper.
338 (common_type<chrono::duration<R1, P2>, chrono::duration<R2, P2>>): Use
339 __duration_common_type.
340 (__timepoint_common_type_wrapper): Replace with ...
341 (__timepoint_common_type): New helper.
342 (common_type<chrono::time_point<C, D2>, chrono::time_point<C, D2>>):
343 Use __time_point_common_type.
344 * include/std/type_traits (common_type<>): Define, as per LWG 2408.
345 (__common_type_impl): If either argument is transformed by decay,
346 use the common_type of the decayed types.
347 (__common_type_impl<_Tp, _Up, _Tp, _Up>): If the types are already
348 decayed, use __do_common_type_impl to get the common_type.
349 (common_type<_Tp>): Use common_type<_Tp, _Tp>.
350 (__do_member_type_wrapper, __member_type_wrapper)
351 (__expanded_common_type_wrapper): Remove.
352 (__common_type_pack, __common_type_fold): New helpers.
353 (common_type<_Tp, _Up, _Vp...>): Use new helpers instead of
354 __member_type_wrapper and __expanded_common_type_wrapper.
355 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
356 Test zero-length template argument list.
357 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
358 Test single argument cases and argument types that should decay.
359 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
360 Adjust expected error.
361 * testsuite/20_util/duration/literals/range_neg.cc: Use zero for
362 dg-error lineno.
363 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
364 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
365 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
366
b103d23d 367 * doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
368
69be6ea5 3692019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
370
371 Make allocator propagation more consistent for
372 operator+(basic_string) (P1165R1)
373 * include/bits/basic_string.h
374 (operator+(basic_string&&, basic_string&&): Changed resulting
375 allocator to always be the one from the first parameter.
376 * include/bits/basic_string.tcc
377 (operator+(const _CharT*, const basic_string&)): Changed
378 resulting allocator to be SOCCC on the second parameter's allocator.
379 (operator+(_CharT, const basic_string&)): Likewise.
380 * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
381 New.
382 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
383 New.
384
845d0fd6 3852019-05-07 Jonathan Wakely <jwakely@redhat.com>
386
29499715 387 * include/bits/regex.h: Improve docs.
388 * include/bits/regex.tcc: Do not document implementation details.
389
845d0fd6 390 * testsuite/19_diagnostics/error_code/hash.cc: New test.
391
3eec8b67 3922019-05-06 François Dumont <fdumont@gcc.gnu.org>
393
394 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
395 Add type printer for container types in std::__debug namespace.
396 * testsuite/lib/gdb-test.exp (whatis-regexp-test): New.
397 (gdb-tests): Use distinct parameters for the type of test and use of
398 regex.
399 (gdb-test): Check for regex test even if 'whatis' test.
400 * testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
401 mode.
402 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
403 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
404 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
405 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
406 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
407 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
408 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
409
80175534 4102019-05-04 Jonathan Wakely <jwakely@redhat.com>
411
2d527eb0 412 * include/std/system_error (error_category): Fix comment.
413
84eda927 414 PR libstdc++/90299
415 * src/c++17/fs_ops.cc (absolute(const path&)): Report an error if the
416 argument is an empty path.
417 (absolute(const path&, error_code&)): Use invalid_argument as error
418 code instead of no_such_file_or_directory.
419 * testsuite/27_io/filesystem/operations/absolute.cc: Check handling
420 of non-existent paths and empty paths with both overloads of absolute.
421
98a3d630 422 * include/std/system_error (error_category, error_code)
423 (error_condition): Improve docs.
424 * libsupc++/exception: Add missing @addtogroup Doxygen command.
425 * libsupc++/exception_ptr.h (exception_ptr): Link equality operators
426 to class documentation. Suppress documentation for implementation
427 details.
428 * libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
429 Suppress documentation for implementation details.
430
80175534 431 * include/std/system_error (error_code): Remove friend declaration
432 for hash<error_code>.
433 (hash<error_code>::operator()): Use public member functions to access
434 value and category.
435 (hash<error_condition>::operator()): Use address of category, not
436 its object representation.
437 * src/c++11/compatibility-c++0x.cc (hash<error_code>::operator()):
438 Use public member functions to access value and category.
439 * testsuite/19_diagnostics/error_condition/hash.cc: New test.
440
476bdccf 4412019-05-04 François Dumont <fdumont@gcc.gnu.org>
442
443 * include/bits/hashtable.h (_Hashtable<>::rehash): Review comment.
444 * include/bits/hashtable_policy.h
445 (_Prime_rehash_policy::_M_bkt_for_elements): Use __builtin_ceill.
446 (_Power2_rehash_policy::_M_bkt_for_elements): Likewise.
447 (_Power2_rehash_policy::_M_next_bkt): Enforce returning a result not
448 smaller than input value rather than always greater. Preserve
449 _M_next_resize if called with 0 input. Use __builtin_floorl.
450 (_Power2_rehash_policy::_M_need_rehash): Rehash only if number of
451 elements + number of insertions is greater than _M_next_resize. Start
452 with 11 buckets if not told otherwise. Use __builtin_floorl.
453 (_Rehash_base<>::reserve): Use rehash policy _M_bkt_for_elements.
454 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
455 Preserve _M_next_resize if called with 0 input. Use __builtin_floorl.
456 (_Prime_rehash_policy::_M_need_rehash): Start with 11 buckets if not
457 told otherwise. Use __builtin_floorl.
458 * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt test
459 to also validate _Power2_rehash_policy.
460 * testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
461 Adapt.
462
2051f7c0 4632019-05-03 Jonathan Wakely <jwakely@redhat.com>
464
85015e21 465 PR libstdc++/61761
466 * testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
467 std::copysign.
468
2051f7c0 469 PR libstdc++/52119
470 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
471 overflow warning with -Wpedantic -Wsystem-headers.
472
c47265a8 4732019-05-02 Jonathan Wakely <jwakely@redhat.com>
474
9766cefe 475 PR libstdc++/90314
476 * include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Use variadic macro.
477 * include/bits/move.h (swap): Remove extra parentheses.
478
6bd15da3 479 * include/experimental/bits/lfts_config.h: Improve doc markup.
480 * include/experimental/optional: Improve docs.
481 (_Has_addressof_mem, _Has_addressof_free, _Has_addressof)
482 (__constexpr_addressof): Remove.
483 (optional::operator->()): Use std::__addressof().
484 * include/std/optional (optional::operator->()): Adjust whitespace.
485 * testsuite/experimental/optional/constexpr/observers/2.cc: Check
486 that operator-> is still constexpr with overloaded operator&. Change
487 to compile-only test.
488 * testsuite/experimental/optional/constexpr/observers/3.cc: Change to
489 compile-only test.
490
f4673ac1 491 * include/bits/shared_ptr.h: Improve docs.
492 * include/bits/shared_ptr_atomic.h: Likewise.
493 * include/bits/unique_ptr.h: Likewise. Adjust whitespace.
494
c88f1c9d 495 * include/bits/basic_string.h: Fix iterator/index confusion in
496 Doxygen comments.
497 * include/bits/range_access.h: Fix Doxygen warnings.
498 * include/bits/refwrap.h: Do not document implementation details.
499 (ref, cref): Group docs with reference_wrapper.
500 * include/std/fstream: Fix Doxygen markup.
501 * libsupc++/initializer_list (begin, end): Group docs with
502 initializer_list.
503
0276ef36 504 * doc/doxygen/user.cfg.in: Set MARKDOWN_SUPPORT=YES.
505
5ba27b7d 506 * include/bits/unique_lock.h: Fix/improve doxygen markup.
507 * include/std/mutex: Likewise.
508 * include/std/shared_mutex: Likewise.
509
c2046340 510 * include/bits/fs_dir.h: Fix/improve doxygen markup.
511 * include/bits/fs_fwd.h: Likewise.
512 * include/bits/fs_ops.h: Likewise.
513 * include/bits/fs_path.h: Likewise.
514 * include/std/filesystem: Likewise.
515
f73340aa 516 * include/experimental/bits/net.h: Fix/improve doxygen markup.
517 * include/experimental/buffer: Likewise.
518 * include/experimental/executor: Likewise.
519 * include/experimental/internet: Likewise.
520 * include/experimental/io_context: Likewise.
521 * include/experimental/net: Likewise.
522 * include/experimental/netfwd: Likewise.
523 * include/experimental/socket: Likewise.
524 * include/experimental/timer: Likewise.
525
b87d52bd 526 * doc/doxygen/doxygroups.cc: Move description of experimental group
527 here.
528 * include/experimental/algorithm: Add to libfund-ts doc group.
529 * include/experimental/any: Likewise. Do not document implementation
530 details.
531 * include/experimental/array: Add to libfund-ts doc group.
532 * include/experimental/bits/lfts_config.h: Define libfund-ts doc group
533 for Library Fundamentals.
534 * include/experimental/chrono: Add to libfund-ts doc group.
535 * include/experimental/deque: Likewise.
536 * include/experimental/forward_list: Likewise.
537 * include/experimental/functional: Likewise.
538 * include/experimental/iterator: Likewise.
539 * include/experimental/list: Likewise.
540 * include/experimental/map: Likewise.
541 * include/experimental/memory: Likewise.
542 * include/experimental/memory_resource: Likewise. Improve docs.
543 details.
544 * include/experimental/numeric: Add to libfund-ts doc group.
545 * include/experimental/optional: Likewise.
546 * include/experimental/propagate_const: Likewise.
547 * include/experimental/random: Likewise.
548 * include/experimental/ratio: Likewise.
549 * include/experimental/regex: Likewise.
550 * include/experimental/set: Likewise.
551 * include/experimental/source_location: Likewise.
552 * include/experimental/string: Likewise.
553 * include/experimental/string_view: Likewise.
554 * include/experimental/system_error: Likewise.
555 * include/experimental/tuple: Likewise.
556 * include/experimental/type_traits: Likewise.
557 * include/experimental/unordered_map: Likewise.
558 * include/experimental/unordered_set: Likewise.
559 * include/experimental/utility: Likewise.
560 * include/experimental/vector: Likewise.
561 * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
562 * testsuite/experimental/array/neg.cc: Adjust dg-error.
563 * testsuite/experimental/propagate_const/assignment/move_neg.cc:
564 Likewise.
565 * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
566 * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
567 * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
568 * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
569 * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
570
07894d48 571 * include/experimental/bits/fs_dir.h: Fix Doxygen markup.
572 * include/experimental/bits/fs_fwd.h: Improve docs.
573 * include/experimental/bits/fs_ops.h: fix Doxygen markup.
574 * include/experimental/bits/fs_path.h: Likewise.
575 (path, filesystem_error, u8path): Improve docs.
576 * include/experimental/filesystem: Link to docs for TS.
577
cd877474 578 * config/allocator/new_allocator_base.h (__allocator_base): Add
579 workaround for Doxygen bug #6945.
580 * include/std/memory: Improve docs. Define group for pointer safety.
581 * include/std/scoped_allocator: Improve docs. Use "undocumented"
582 conditional to suppress documentation for implementation details.
583
72e8cf41 584 * include/bits/specfun.h: Improve docs.
585 * include/tr1/cmath: Likewise. Fix nesting of preprocessor conditions
586 and namespaces.
587
633c66f0 588 * doc/doxygen/doxygroups.cc (std::tr2, std::__gnu_cxx): Improve docs.
589 (std::experimental): Add docs.
590 * doc/doxygen/user.cfg.in (PREDEFINED): Expand macros for __cxx11
591 namespace to nothing when generating docs.
592 * include/bits/regex_constants.h (std::regex_constants): Improve docs.
593 * include/std/chrono (std::chrono): Likewise.
594 * include/std/functional (std::placeholders): Likewise.
595 * include/std/thread (std::this_thread): Likewise.
596
17035a16 597 * include/parallel/settings.h: Fix Doxygen markup.
598
6de90d17 599 * include/ext/pb_ds/detail/bin_search_tree_/*_imps.hpp: Do not define
600 anything unless PB_DS_CLASS_C_DEC is defined.
601 * include/ext/pb_ds/detail/binary_heap_/*_imps.hpp: Likewise.
602 * include/ext/pb_ds/detail/binomial_heap_/*_imps.hpp: Likewise.
603 * include/ext/pb_ds/detail/binomial_heap_base_/*_imps.hpp: Likewise.
604 * include/ext/pb_ds/detail/cc_hash_table_map_/*_imps.hpp: Likewise.
605 * include/ext/pb_ds/detail/gp_hash_table_map_/*_imps.hpp: Likewise.
606 * include/ext/pb_ds/detail/hash_fn/*_imp.hpp: Likewise.
607 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/*_imps.hpp:
608 Likewise.
609 * include/ext/pb_ds/detail/list_update_map_/*_imps.hpp: Likewise.
610 * include/ext/pb_ds/detail/ov_tree_map_/*_imps.hpp: Likewise.
611 * include/ext/pb_ds/detail/pairing_heap_/*_imps.hpp: Likewise.
612 * include/ext/pb_ds/detail/pat_trie_/*_imps.hpp: Likewise.
613 * include/ext/pb_ds/detail/rb_tree_map_/*_imps.hpp: Likewise.
614 * include/ext/pb_ds/detail/rc_binomial_heap_/*_imps.hpp: Likewise.
615 * include/ext/pb_ds/detail/resize_policy*_imp.hpp: Likewise.
616 * include/ext/pb_ds/detail/splay_tree_/*_imps.hpp: Likewise.
617 * include/ext/pb_ds/detail/thin_heap_/*_imps.hpp: Likewise.
618 * include/ext/pb_ds/detail/trie_policy*_imp.hpp: Likewise.
619 * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp:
620 Likewise.
621 * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
622 * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
623 Likewise.
624 * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
625 Likewise.
626
c47265a8 627 * doc/doxygen/user.cfg.in: Regenerate with Doxygen 1.8.14 and set
628 GROUP_NESTED_COMPOUNDS=YES and SORT_BY_SCOPE_NAME=NO. Add various
629 _GLIBCXX_xxx macros and __attribute__(X) to PREDEFINED macros that
630 Doxygen expands.
631
269f393a 6322019-05-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
633
634 * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
635 * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
636 * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
637 * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
638 * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
639 * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
640 Likewise.
641 * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
642 * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
643 Likewise.
644
c64aa5a2 6452019-05-01 Jonathan Wakely <jwakely@redhat.com>
646
647 PR libstdc++/61761
648 * include/std/complex (__complex_proj): Return parameter unchanged.
649 [_GLIBCXX_USE_C99_COMPLEX] (__complex_proj): Change overloads for
650 floating-point types to take std::complex arguments.
651 [_GLIBCXX_USE_C99_MATH_TR1] (__complex_proj): Add overloads for
652 floating-point types.
653 * testsuite/26_numerics/complex/proj.cc: New test.
654
9d5de90f 6552019-04-30 Jakub Jelinek <jakub@redhat.com>
656
657 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Change _Lock_policyE2 exports
658 to _Lock_policyE[012].
659 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
660
612b2ae7 6612019-04-30 Jonathan Wakely <jwakely@redhat.com>
662
663 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Remove
664 macros accidentally left in.
665 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Remove
666 unnecessary -lstdc++fs option. Fix test for mingw.
667 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
668 Fix test for mingw.
669
55843567 6702019-04-30 Jakub Jelinek <jakub@redhat.com>
671
672 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
673
c5aaf0af 6742019-04-29 Jonathan Wakely <jwakely@redhat.com>
675
d9375e49 676 * include/bits/stl_algo.h (generate_n): Adjust doxygen comment.
677
744a3010 678 * include/bits/move.h (swap(T&, T&), swap(T (&)[N], T (&)[N])): Use
679 _GLIBCXX_NOEXCEPT_IF to simplify declarations.
680
e3600f25 681 PR libstdc++/71312
682 * src/c++11/shared_ptr.cc (get_mutex): Align pool mutexes to 64 bytes.
683
4b7f4f12 684 * include/bits/stl_bvector.h (vector<bool>::empty()): Add nodiscard
685 attribute.
686
94ed6c0a 687 * include/bits/stl_iterator_base_types.h (_Iter_base): Remove unused
688 class template and partial specialization.
689
c5aaf0af 690 PR libstdc++/87982
691 * include/bits/stl_algo.h (generate_n): Convert _Size parameter to
692 an integral type.
693 * include/bits/stl_algobase.h (__size_to_integer): New overloaded
694 functions to convert a value to an integral type.
695 (__fill_n_a, __fill_n_a): Assert that __n is already an integral type.
696 (fill_n): Convert _Size parameter to an integral type.
697 * testsuite/25_algorithms/fill_n/87982.cc: New test.
698 * testsuite/25_algorithms/fill_n/87982_neg.cc: New test.
699 * testsuite/25_algorithms/fill_n/dr426.cc: New test.
700 * testsuite/25_algorithms/generate_n/87982.cc: New test.
701 * testsuite/25_algorithms/generate_n/87982_neg.cc: New test.
702 * testsuite/25_algorithms/generate_n/dr426.cc: New test.
703
ac8f540e 7042019-04-28 Nina Dinka Ranns <dinka.ranns@gmail.com>
a4360611 705
706 Adding noexcept-specification on tuple constructors (LWG 2899)
707 * libstdc++-v3/include/std/tuple:
708 (tuple()): Add noexcept-specification.
709 (tuple(const _Elements&...)): Likewise
710 (tuple(_UElements&&...)): Likewise
711 (tuple(const tuple<_UElements...>&)): Likewise
712 (tuple(tuple<_UElements...>&&)): Likewise
713 (tuple(const _T1&, const _T2&)): Likewise
714 (tuple(_U1&&, _U2&&)): Likewise
715 (tuple(const tuple<_U1, _U2>&): Likewise
716 (tuple(tuple<_U1, _U2>&&): Likewise
717 (tuple(const pair<_U1, _U2>&): Likewise
718 (tuple(pair<_U1, _U2>&&): Likewise
719 * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc: New
720
b9fe1c54 7212019-04-27 Marc Glisse <marc.glisse@inria.fr>
722
723 PR libstdc++/87106
724 * include/bits/stl_uninitialized.h (__relocate_object_a): Mark the
725 arguments with __restrict.
726
a596cded 7272019-04-26 H.J. Lu <hongjiu.lu@intel.com>
728
729 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
730
051e444d 7312019-04-26 Jonathan Wakely <jwakely@redhat.com>
732
3c259ff8 733 * include/experimental/bits/fs_path.h
734 (path::_S_convert_loc<_InputIterator>): Create const std::string to
735 avoid redundant call to _S_convert_loc with non-const pointers.
736
2f95fa8e 737 * testsuite/20_util/variant/run.cc: Use a new Hashable type to test
738 hashing, because pmr::string depends on _GLIBCXX_USE_CXX11_ABI==1.
739 * testsuite/21_strings/basic_string/hash/hash.cc
740 [!_GLIBCXX_USE_CXX11_ABI]: Don't test pmr strings.
741 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc
742 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
743
46933618 744 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace wildcard that matches
745 wstring::_M_replace_dispatch with more specific patterns.
746 * include/bits/fs_path.h (path::_S_convert_loc<_InputIterator>):
747 Create const std::string to avoid redundant call to _S_convert_loc
748 with non-const pointers.
749 * include/bits/locale_conv.h (__do_str_codecvt): Use if-constexpr to
750 avoid unnecessary basic_string::assign instantiations.
751
051e444d 752 * include/std/memory (__uses_alloc_args): Add string-literal to
753 static_assert, to match the one in __uses_alloc.
754 [__cpp_concepts] (_Std_pair): Use C++2a syntax for concept.
755 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: Check
756 for recursive uses-allocator construction of nested pairs.
757 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc:: Add
758 comment.
759
db1349a6 7602019-04-26 Jakub Jelinek <jakub@redhat.com>
761
dd693c4a 762 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
763 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
764 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
765 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
766
db1349a6 767 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
768 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
769 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
770 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
771 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
772 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
773 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
774
f0a82465 7752019-04-25 Jonathan Wakely <jwakely@redhat.com>
776
777 PR libstdc++/90239
778 * doc/xml/manual/status_cxx2020.xml: Amend P0591R4 status.
779 * include/std/scoped_allocator [__cplusplus > 201703L]
780 (scoped_allocator_adaptor::construct): Define in terms of
781 uses_allocator_construction_args, as per P0591R4.
782 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc: New test.
783 * testsuite/util/testsuite_allocator.h: Remove name of unused
784 parameter.
785
fd1863e1 7862019-04-24 Jonathan Wakely <jwakely@redhat.com>
787
9ed11778 788 * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
789 * doc/html/*: Regenerate.
790
39b59bb9 791 * include/bits/fs_path.h (operator<, operator<=, operator>)
792 (operator>=, operator==, operator!=): Make hidden friends, as per
793 LWG 3065.
794 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Fix
795 string type in test.
796 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
797
dd3b7006 798 * include/std/any (any::any(ValueType&&)): Use __and_v.
799 * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
800 Likewise.
801
14710c9d 802 * include/std/tuple (apply): Use remove_reference_t instead of decay_t
803 as per P0777R1.
804 * include/std/type_traits (__result_of_memfun): Use remove_reference
805 instead of __remove_cvref_t and remove redundant is_same check.
806 (__inv_unwrap): Use __remove_cvref_t instead of decay_t.
807
809f1d63 808 * include/experimental/string_view (basic_string_view::pointer)
809 (basic_string_view::reference): Fix to refer to non-const value_type.
810 * include/bits/basic_string.h (basic_string): Use __sv_check and
811 __sv_limit instead of basic_string_view::_M_check and
812 basic_string_view::_M_limit.
813 * include/std/string_view (__sv_check, __sv_limit): New
814 helper functions to replace basic_string_view::_M_check and
815 basic_string_view::_M_limit.
816 (basic_string_view): Add static assertions to enforce ill-formed
817 requirement for traits_type::char_type from P1148R0, and to enforce
818 required properties of char-like types.
819 (basic_string_view::pointer, basic_string_view::reference): Fix to
820 refer to non-const value_type.
821 (basic_string_view::operator[], basic_string_view::at)
822 (basic_string_view::front, basic_string_view::back)
823 (basic_string_view::data): Use const_reference and const_pointer
824 typedefs for return types.
825 (basic_string_view::_M_check, basic_string_view::_M_limit): Remove.
826 (hash<wstring_view>): Fix argument_type typedef.
827 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
828 char/1.cc: Fix expected return type of basic_string_view::data().
829 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
830 wchar_t/1.cc: Likewise.
831 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
832 char/1.cc: Likewise.
833 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
834 wchar_t/1.cc: Likewise.
835 * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
836 New test.
837 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
838 Check reference and pointer typedefs.
839 * testsuite/experimental/string_view/requirements/typedefs.cc:
840 Likewise.
841 * testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc:
842 Fix expected return type of basic_string_view::data().
843 * testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/
844 1.cc: Likewise.
845 * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
846 Likewise.
847 * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
848 1.cc: Likewise.
849
37020b0a 850 PR libstdc++/90220
851 * include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
852 Avoid a runtime check for types that can never be stored in std::any.
853 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
854 array types.
855
b8e73341 856 PR libstdc++/90220 (partial)
857 * include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
858 not attempt ill-formed static_cast to pointers to non-object types.
859 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
860 function types.
861
1c9c8e0d 862 * testsuite/20_util/variant/run.cc: Catch exception by reference to
863 prevent -Wcatch-value warning.
864
fd1863e1 865 * include/std/variant (__variant_construct): Use template parameter
866 type instead of equivalent decltype-specifier.
867 (_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
868 Replace forward with move.
869 (_Move_ctor_base<false, Types...>::_M_destructive_move)
870 (_Move_ctor_base<false, Types...>::_M_destructive_copy)
871 (_Move_ctor_base<true, Types...>::_M_destructive_move)
872 (_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
873 index after construction succeeds.
874 (_Copy_assign_base<false, Types...>::operator=): Remove redundant
875 if-constexpr checks that are always true. Use __remove_cvref_t instead
876 of remove_reference so that is_nothrow_move_constructible check
877 doesn't use a const rvalue parameter. In the potentially-throwing case
878 construct a temporary and move assign it, as per LWG 2904.
879 (_Move_assign_base<false, Types...>::operator=): Remove redundant
880 if-constexpr checks that are always true. Use emplace as per LWG 2904.
881 (variant::operator=(T&&)): Only use emplace conditionally, otherwise
882 construct a temporary and move assign from it, as per LWG 2904.
883 * testsuite/20_util/variant/exception_safety.cc: Check that
884 assignment operators have strong exception safety guarantee.
885
55bb4515 8862019-04-23 Thomas Rodgers <trodgers@redhat.com>
887
888 Document PSTL linker flags
889
7f6a1a9c 890 * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
55bb4515 891
b48cc8c5 8922019-04-23 Jonathan Wakely <jwakely@redhat.com>
893
a4265b66 894 * include/std/variant (__detail::__variant::_Traits): Make
895 _S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
896 _S_trivial_move_assign depend on _S_trivial_move_ctor, as per
897 P0602R4.
898 (__detail::__variant::_Copy_assign_alias): Only depend on
899 _S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
900 * testsuite/20_util/variant/compile.cc: Correct checks for trivial
901 move assignment operators.
902
28cc38ec 903 PR libstdc++/90165
904 * include/std/variant (variant::__not_self): New helper for the
905 is_same_v<remove_cvref_t<T>, variant>==false constraints.
906 (variant::__to_type_impl): Remove.
907 (variant::__to_type): Add default argument to check pack size, instead
908 of using __to_type_impl.
909 (variant::__accepted_type): Add default argument using __not_self.
910 (variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
911 for variant(T&&) constructor constraint.
912 (variant::variant(T&&)): Use __not_in_place_tag in constraints.
913 Extract __accepted_type into a named template parameter for reuse in
914 other constraints and in the exception specification.
915 (variant::variant(in_place_type_t<T>, Args&&...))
916 (variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
917 (variant::variant(in_place_index_t<T>, Args&&...))
918 (variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
919 (variant::operator=T&&)): Remove redundant && from trait arguments.
920 * testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
921 isn't used for in_place_type or in_place_index arguments.
922
b48cc8c5 923 * include/std/type_traits (unwrap_reference_t): Define for C++2a.
924 (unwrap_ref_decay): Remove inheritance from unwrap_reference.
925 * testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.
926
9ac9ee83 9272019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
928 Bernd Edlinger <bernd.edlinger@hotmail.de>
929 Jakub Jelinek <jakub@redhat.com>
930
931 PR target/89093
932 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
933 general-regs-only target attribute for ARM.
934
e11f5aed 9352019-04-23 Jonathan Wakely <jwakely@redhat.com>
936
b9d8292f 937 PR libstdc++/87431
938 * include/bits/basic_string.h (_Never_valueless_alt): Make partial
939 specialization also depend on is_nothrow_move_constructible.
940 * include/std/variant (__detail::__variant::__never_valueless()):
941 Only true if the variant would have a move assignment operator.
942 (__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
943 Check __never_valueless<T...>().
944 (variant::emplace): Only perform non-throwing move assignments
945 for never-valueless alternatives if the variant has a move assignment
946 operator.
947 * testsuite/20_util/variant/compile.cc: Check that never-valueless
948 types can be emplaced into non-assignable variants.
949 * testsuite/20_util/variant/run.cc: Check that never-valueless types
950 don't get copied when emplaced into non-assignable variants.
951
e11f5aed 952 * include/std/variant (__detail::__variant::__ref_cast): Remove
953 unused function.
954 (__detail::__variant::_Uninitialized::_M_get)
955 (__detail::__variant::__get)
956 (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
957
46fbb8aa 9582019-04-21 Iain Sandoe <iain@sandoe.co.uk>
959
960 * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
961 to Darwin10.
962 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
963 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
964 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
965 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
966
dff3f73c 9672019-04-20 Thomas Rodgers <trodgers@redhat.com>
968
969 Delegate PSTL configuration to pstl/pstl_config.h
970
971 * include/bits/c++config: Remove explicit PSTL configuration
972 macros and use definitions from <pstl/pstl_config.h>.
973
3dbad48e 9742019-04-20 Thomas Rodgers <trodgers@redhat.com>
975
976 Cleanup algorithm implementations
977 * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
ed42fdb5 978 execution policy.
3dbad48e 979 (mismatch): Forward execution policy.
980 (equal): Qualify call to std::equal().
981 (partial_sort): Forward execution policy.
982 (inplace_merge): Forward execution policy.
983
5d637ddd 9842019-04-19 Thomas Rodgers <trodgers@redhat.com>
985
986 Improve implementation of parallel equal()
987 * include/pstl/algorithm_impl.h
988 (__internal::__brick_equal): use "4 iterator" version of
989 std::equal().
990 (__internal::__brick_equal): use simd for random access
991 iterators on unsequenced execution policies.
992 (__internal::__pattern_equal): add "4 iterator" version
993 (__internal::__pattern_equal): dispatch to simd __brick_equal
994 for vector-only execution policies.
995 (__internal::__pattern_equal): dispatch to __parallel_or for
996 parallel execution policies.
997 * include/pstl/glue_algorithm_impl.h
998 (std::equal): dispatch to "4 iterator" version of
999 __internal::__pattern_equal().
1000
88dbeb04 10012019-04-17 Jonathan Wakely <jwakely@redhat.com>
1002
a0295ab5 1003 PR libstdc++/90105
1004 * include/bits/forward_list.h (operator==): Do not use operator!= to
1005 compare elements.
1006 (forward_list<T, A>::sort(Comp)): When elements are equal take the one
1007 earlier in the list, so that sort is stable.
1008 * testsuite/23_containers/forward_list/operations/90105.cc: New test.
1009 * testsuite/23_containers/forward_list/comparable.cc: Test with
1010 types that meet the minimum EqualityComparable and LessThanComparable
1011 requirements. Remove irrelevant comment.
1012
37a7dbf9 1013 * include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
1014 Do not depend on whether all alternative types are move constructible.
1015 (__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
1016 from the operand when deciding whether to perform the assignment.
1017 * testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
1018 with deleted move constructor and deleted move assignment operator.
1019 (default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
1020 behaviour of variants with DeletedMoves as an alternative.
1021 * testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
1022 (move_ctor, move_assign): Check that moving a variant with a
1023 DeletedMoves alternative falls back to copying instead of moving.
1024
e9a490a4 1025 * testsuite/20_util/variant/compile.cc: Remove empty string literals
1026 from static_assert declarations.
1027
c4495ab1 1028 * testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
1029 actually match its name.
1030 (MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
1031 (test_swap()): Fix result for MoveCtorOnly and check
1032 MoveCtorAndSwapOnly.
1033
88dbeb04 1034 * include/std/optional (optional::value_or(U&&) &&): Add missing
1035 constexpr specifier.
1036 * testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
1037 for disengaged optionals and rvalue optionals.
1038 * testsuite/20_util/optional/observers/4.cc: Likewise.
1039
11deac81 10402019-04-12 Thomas Rodgers <trodgers@redhat.com>
1041
1042 * include/pstl/algorithm_impl.h: Uglify identfiers.
1043 * include/pstl/numeric_impl.h: Uglify identfiers.
1044 * include/pstl/parallel_backend_tbb.h: Uglify identfiers.
1045
34d8d757 10462019-04-11 Thomas Rodgers <trodgers@redhat.com>
1047
1048 * include/bits/c++config:
1049 Add definition for __PSTL_ASSERT.
1050 Add definition for __PSTL_ASSERT_MSG.
1051 * include/pstl/algorithm_impl.h: Replace use of assert().
1052 * include/pstl/numeric_impl.h: Replace use of assert().
1053 * include/pstl/parallel_backend_tbb.h:
1054 Replace use of assert().
1055 Replace use of __TBB_ASSERT().
34d8d757 1056 * include/pstl/parallel_backend_utils.h: Replace use of assert().
1057
629a2d18 10582019-04-11 Jonathan Wakely <jwakely@redhat.com>
1059
1060 PR libstdc++/90046
1061 * src/c++17/memory_resource.cc
1062 (monotonic_buffer_resource::_Chunk::allocate): Increase alignment if
1063 needed to allow placing a _Chunk at the end of the buffer.
1064 (monotonic_buffer_resource::_M_new_buffer): Remove static_assert.
1065
b047c9ae 10662019-04-10 Jonathan Wakely <jwakely@redhat.com>
1067
6a98b075 1068 * doc/xml/faq.xml: Add information about emergency EH pool.
1069 * doc/xml/manual/debug.xml: Update list of memory debugging tools.
1070 Move outdated information on mt_allocator to a separate section.
1071 * doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW
1072 doesn't affect the default allocator.
1073
706bf2a5 1074 * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
1075 typo.
1076
b047c9ae 1077 PR libstdc++/89851
1078 * testsuite/20_util/variant/89851.cc: New test.
1079
faa382bd 10802019-04-09 Jonathan Wakely <jwakely@redhat.com>
1081
492debfa 1082 * include/std/variant: Adjust whitespace. Add comments.
1083 (_Multi_array): Leave primary template undefined.
1084 (_Multi_array<_Tp>): Define partial specialization for base case of
1085 recursion.
1086 (__gen_vtable_impl, __gen_vtable): Remove redundant && from type
1087 which is always a reference.
1088 (__gen_vtable::_S_apply()): Remove function, inline body into
1089 default member initializer.
1090 * testsuite/20_util/variant/visit.cc: Test with noncopyable types.
1091
47cf9c4c 1092 * include/std/variant (__variant_idx_cookie): Add member type.
1093 (__visitor_result_type): Remove.
1094 (__do_visit): Use invoke_result instead of __visitor_result_type.
1095 * testsuite/20_util/variant/visit.cc: New test.
1096
faa382bd 1097 PR libstdc++/90008
1098 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
1099 unused capture.
1100 * testsuite/20_util/variant/90008.cc: New test.
1101
e4da4897 11022019-04-09 Thomas Rodgers <trodgers@redhat.com>
1103
1104 * include/pstl/algorithm_impl.h: Add namespace qualification.
1105 * include/pstl/execution_defs.h: Add namespace qualification.
1106 * include/pstl/execution_impl.h: Add namespace qualification.
1107 * include/pstl/numeric_impl.h: Add namespace qualification.
1108 * include/pstl/parallel_backend_tbb.h: Add namespace qualification.
1109 * include/pstl/unseq_backend_simd.h: Add namespace qualification.
1110 * include/pstl/parallel_backend_utils.h: Include <cassert>.
1111
ff7d433d 11122019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
1113
1114 Fix visit<R> for variant.
1115 * include/std/variant (__do_visit): Add a template parameter
1116 for enforcing same return types for visit.
1117 (__gen_vtable_impl): Likewise.
1118 (_S_apply_single_alt): Adjust.
1119 (__visit_invoke_impl): New. Handle casting to void.
1120 (__do_visit_invoke): New. Enforces same return types.
1121 (__do_visit_invoke_r): New. Converts return types.
1122 (__visit_invoke): Adjust.
1123 (__gen_vtable): Add a template parameter for enforcing
1124 same return types for visit.
1125 * testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
1126 different return types.
1127 * testsuite/20_util/variant/visit_neg.cc: New. Ensures that
1128 visitors with different return types don't accidentally
1129 compile with regular visitation.
1130
d0f56531 11312019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
1132
1133 * testsuite/27_io/filesystem/iterators/caching.cc: Add
1134 dg-require-filesystem-ts.
1135
781cb64d 11362019-04-05 Jonathan Wakely <jwakely@redhat.com>
1137
bfbd20f7 1138 * doc/xml/manual/status_cxx2020.xml: Update status.
1139 * include/std/variant (visit<R>): Define for C++2a (P0655R1).
1140 * testsuite/20_util/variant/visit_r.cc: New test.
1141
83bd31bf 1142 * include/bits/fs_dir.h (directory_iterator::operator*)
1143 (directory_iterator::operator->): Add noexcept.
1144 (operator==, operator!=): Replace namespace-scope equality operators
1145 for directory iterators with hidden friends.
1146
0067a809 1147 PR libstdc++/89986
1148 * config/abi/pre/gnu.ver: Add missing exports.
1149 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
1150 increment member.
1151
7d0ae205 1152 * config/abi/pre/gnu.ver: Export new symbols.
1153 * include/bits/fs_dir.h (recursive_directory_iterator::options())
1154 (recursive_directory_iterator::recursion_pending())
1155 (recursive_directory_iterator::disable_recursion_pending()): Remove
1156 inline definitions. Make noexcept.
1157 (recursive_directory_iterator::depth())
1158 (recursive_directory_iterator::operator*())
1159 (recursive_directory_iterator::operator->()): Make noexcept.
1160 (recursive_directory_iterator::_M_options)
1161 (recursive_directory_iterator::_M_pending): Remove data members.
1162 * src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
1163 (recursive_directory_iterator::recursive_directory_iterator): Remove
1164 ctor-initializer. Use new constructor for _Dir_stack.
1165 (recursive_directory_iterator::options())
1166 (recursive_directory_iterator::recursion_pending())
1167 (recursive_directory_iterator::disable_recursion_pending()): Add
1168 non-inline definitions.
1169 (recursive_directory_iterator::depth()): Make noexcept.
1170 (recursive_directory_iterator::increment(error_code&))
1171 (recursive_directory_iterator::pop(error_code&)): Adjust to new
1172 location of options and recursion_pending members.
1173 * testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
1174 * testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
1175 user-declared move constructor and assignment operator, to make the
1176 type move-only.
1177
5a6e0b73 1178 * src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
1179 d_type == DT_UNKNOWN immediately.
1180 (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
1181 handling here.
1182 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
1183
aa9c570e 1184 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
1185 assignment.
1186 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
1187 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
1188 assignment.
1189
781cb64d 1190 PR libstdc++/87431 (again)
1191 * include/bits/basic_string.h (__variant::_Never_valueless_alt):
1192 Define partial specialization for basic_string.
1193 * include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
1194 shared_ptr and weak_ptr.
1195 * include/bits/std_function.h (_Never_valueless_alt): Likewise for
1196 function.
1197 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
1198 vector.
1199 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
1200 unique_ptr.
1201 * include/debug/vector (_Never_valueless_alt): Likewise for debug
1202 vector.
1203 * include/std/any (_Never_valueless_alt): Define explicit
1204 specialization for any.
1205 * include/std/variant (_Never_valueless_alt): Define primary template.
1206 (__never_valueless): Use _Never_valueless_alt instead of
1207 is_trivially_copyable.
1208 (variant::emplace<N>(Args&&...)): Add special case for non-throwing
1209 initializations to avoid try-catch overhead. Add special case for
1210 scalars produced by potentially-throwing conversions. Use
1211 _Never_valueless_alt instead of is_trivially_copyable for the
1212 remaining strong exception-safety cases.
1213 (variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
1214 * testsuite/20_util/variant/87431.cc: Run both test functions.
1215 * testsuite/20_util/variant/exception_safety.cc: New test.
1216 * testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
1217 so the variant becomes valueless.
1218
62fd39e8 12192019-04-03 Jonathan Wakely <jwakely@redhat.com>
1220
e1d699b8 1221 PR libstdc++/85184
1222 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
1223 Remove assertions.
72be2bb7 1224 (variant::emplace<_Tp>): Return result of emplace<N> directly.
e1d699b8 1225
62fd39e8 1226 * include/std/string (__hash_string_base): New class template defining
1227 operator() for hashing strings.
1228 (hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
1229 (hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
1230 * testsuite/21_strings/basic_string/hash/hash.cc: New test.
1231 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.
1232
4f3e024d 12332019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
1234
1235 Use single-visitation in variant assignment and swap and relops.
1236 Also use indices instead of types when checking whether
1237 variants hold the same thing.
1238 * include/std/variant (__do_visit): Add a template parameter
1239 for index visitation, invoke with indices if index visitation
1240 is used.
1241 (__variant_idx_cookie): New.
1242 (__visit_with_index): Likewise.
1243 (_Copy_assign_base::operator=): Do single-visitation with
1244 an index visitor.
1245 (_Move_assign_base::operator=): Likewise.
1246 (_Extra_visit_slot_needed): Adjust.
1247 (__visit_invoke): Call with indices if it's an index visitor.
1248 (relops): Do single-visitation with an index visitor.
1249 (swap): Likewise.
1250 (__visitor_result_type): New.
1251
106979b7 12522019-03-30 Eric Botcazou <ebotcazou@adacore.com>
1253
1254 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
1255
225ca87b 12562019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
1257
1258 Don't revisit a variant we are already visiting.
1259 * include/std/variant (__variant_construct_single): New.
1260 (__variant_construct): Use it.
1261 (_M_destructive_move): Likewise.
1262 (_M_destructive_copy): Likewise.
1263 (_Copy_assign_base::operator=): Adjust.
1264 (_Move_assign_base::operator=): Likewise.
1265 (swap): Likewise.
1266
7237dce7 12672019-03-26 Jonathan Wakely <jwakely@redhat.com>
1268
1269 PR libstdc++/85965
1270 * include/bits/hashtable.h (_Hashtable): Move static assertions to
1271 destructor so they are not evaluated until the _Key type is complete.
1272 * include/bits/stl_tree.h (_Rb_tree): Likewise.
1273 * testsuite/23_containers/set/85965.cc: New test.
1274 * testsuite/23_containers/unordered_set/85965.cc: New test.
1275 * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
1276 with regexp matching the corresponding _Rb_tree specialization.
1277 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
1278 * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
1279 * testsuite/23_containers/set/48101_neg.cc: Likewise.
1280 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
1281 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
1282 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
1283 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
1284
4c0ef551 12852019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
1286
1287 PR libstdc++/89825
1288 Fix based on a suggestion by Antony Polukhin.
1289 * include/std/variant (__never_valueless): New.
1290 (_M_valid): Use it.
1291 (_Extra_visit_slot_needed): New.
1292 (_Multi_array): Use it.
1293 (_S_apply_all_alts): Likewise.
1294
28b460dd 12952019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
1296
1297 PR libstdc++/89824
1298 Fix based on a suggestion by Antony Polukhin.
1299 * include/std/variant (__gen_vtable): Don't reserve an
1300 additional table slot, _Multi_array already does that.
1301
4d235dc5 13022019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
1303
1304 PR libstdc++/89816
1305 Fix based on a suggestion by Antony Polukhin.
1306 * include/std/variant (__variant_construct): Capture a pointer
1307 to the storage and visit just one variant.
1308
d0595c7e 13092019-03-22 Jonathan Wakely <jwakely@redhat.com>
1310
5c34f7ca 1311 * doc/xml/manual/backwards_compatibility.xml: Remove link to
1312 Doxygen-generated pages with unstable URL.
1313 * doc/xml/manual/concurrency_extensions.xml: Likewise.
1314 * doc/xml/manual/extensions.xml: Likewise.
1315 * doc/xml/manual/parallel_mode.xml: Likewise.
1316 * doc/xml/manual/support.xml: Likewise.
1317
d0595c7e 1318 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
1319 avoid -Wconversion warnings.
1320
7e155e54 13212019-03-21 Thomas Rodgers <trodgers@redhat.com>
1322
1323 * include/Makefile.am (std_header): Add ${std_srcdir}/execution.
1324 (pstl_srcdir, pstl_builddir, pstl_headers): New variables.
1325 (allstamped): Add stamp-pstl.
1326 (install-headers): Add ptsl_builddir.
1327 * include/Makefile.in: Regenerate.
1328 * include/bits/c++config: Add pstl configuration.
1329 * include/pstl/LICENSE.txt: New file.
1330 * include/pstl/algorithm_fwd.h: New file.
1331 * include/pstl/algorithm_impl.h: New file.
1332 * include/pstl/execution_defs.h: New file.
1333 * include/pstl/execution_impl.h: New file.
1334 * include/pstl/glue_algorithm_defs.h: New file.
1335 * include/pstl/glue_algorithm_impl.h: New file.
1336 * include/pstl/glue_execution_defs.h: New file.
1337 * include/pstl/glue_memory_defs.h: New file.
1338 * include/pstl/glue_memory_impl.h: New file.
1339 * include/pstl/glue_numeric_defs.h: New file.
1340 * include/pstl/glue_numeric_impl.h: New file.
1341 * include/pstl/memory_impl.h: New file.
1342 * include/pstl/numeric_fwd.h: New file.
1343 * include/pstl/numeric_impl.h: New file.
1344 * include/pstl/parallel_backend.h: New file.
1345 * include/pstl/parallel_backend_tbb.h: New file.
1346 * include/pstl/parallel_backend_utils.h: New file.
1347 * include/pstl/parallel_impl.h: New file.
1348 * include/pstl/pstl_config.h: New file.
1349 * include/pstl/unseq_backend_simd.h: New file.
1350 * include/pstl/utils.h: New file.
1351 * include/std/algorithm: Include parallel algorithm implementations.
1352 * include/std/execution: New file.
1353 * include/std/memory: Include parallel algorithm implementations.
1354 * include/std/numeric: Include parallel algorithm implementations.
1355 * include/std/version: Add parallel algorithms feature test macro.
1356 * testsuite/util/pstl/pstl_test_config.h: New file.
1357 * testsuite/util/pstl/test_utils.h: New file.
1358 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
1359 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
1360 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
1361 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
1362 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
1363 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
1364 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
1365 * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
1366 * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
1367 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
1368 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
1369 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
1370 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
1371 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
1372 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
1373 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
1374 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
1375 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
1376 * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
1377 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
1378 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
1379 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
1380 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
1381 * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
1382 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
1383 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
1384 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
1385 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
1386 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
1387 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
1388 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
1389 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
1390 * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
1391 * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
1392 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
1393 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
1394 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
1395 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
1396 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
1397 * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
1398 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
1399 * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
1400 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
1401 * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
1402 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
1403 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
1404 * testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
1405 * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
1406 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
1407 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
1408 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
1409 * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
1410 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
1411 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
1412 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
1413 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
1414 * testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
1415 * testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
1416 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
1417 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
1418 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
1419 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
1420 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
1421 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
1422 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
1423 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
1424 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
1425 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
1426 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
1427 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
1428 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
1429 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
1430 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
1431 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
1432 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
1433 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
1434 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
1435 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
1436 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
1437 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
1438 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
1439 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
1440 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
1441 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
1442 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
1443 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
1444 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
1445 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
1446 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
1447 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
1448 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
1449 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
1450 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
1451 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
1452 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
1453 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
1454 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
1455 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
1456 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
1457 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
1458 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
1459 * testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
1460 * testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
1461 * testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
1462 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
1463 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
1464
480b3b75 14652019-03-21 Jonathan Wakely <jwakely@redhat.com>
1466
0a4390ac 1467 * include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
1468 (assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
1469 (assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
1470 (comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
1471 (comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
1472 (cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
1473 (cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
1474 (cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
1475 (ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
1476 (ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
1477 (hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
1478 (legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
1479 (sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
1480 (sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
1481 when the special functions IS is enabled, not for C++17.
1482 * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
1483 Replace with ...
1484 * testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
1485 without checks for special functions in C++17.
1486 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
1487 New test.
1488
480b3b75 1489 PR libstdc++/88066
1490 * include/backward/hash_map: Use <> for includes not "".
1491 * include/backward/hash_set: Likewise.
1492 * include/backward/strstream: Likewise.
1493 * include/tr1/bessel_function.tcc: Likewise.
1494 * include/tr1/exp_integral.tcc: Likewise.
1495 * include/tr1/legendre_function.tcc: Likewise.
1496 * include/tr1/modified_bessel_func.tcc: Likewise.
1497 * include/tr1/riemann_zeta.tcc: Likewise.
1498
ed360d55 14992019-03-19 Jonathan Wakely <jwakely@redhat.com>
1500
1501 * doc/xml/manual/allocator.xml: Link to table documenting evolution
1502 of extension allocators.
1503 * doc/xml/manual/evolution.xml: Use angle brackets for header names.
1504 Document new headers in 7.2, 8.1 and 9.1 releases.
1505 * doc/xml/manual/using.xml: Adjust link target for new_allocator.
1506 * doc/html/*: Regenerate.
1507
8f9d7eb1 15082019-03-12 John David Anglin <dave.anglin@bell.net>
1509
1510 PR libstdc++/89461
1511 * testsuite/lib/libstdc++.exp: Locate libatomic.
1512 * testsuite/lib/dg-options.exp (add_options_for_libatomic): New.
1513 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
1514 libatomic options.
1515 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
1516 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
1517 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
1518 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
1519
0bd005b6 15202019-03-11 Jonathan Wakely <jwakely@redhat.com>
1521
5995ba3a 1522 PR libstdc++/89460
1523 * configure.ac: Check for sockatmark.
1524 * crossconfig.m4: Check for sockatmark.
1525 * config.h.in: Regenerate.
1526 * configure: Regenerate.
1527 * include/experimental/internet (address_v4::_S_hton): Rename
1528 overloaded functions to _S_hton_16 and _S_ntoh_16.
1529 (address_v4::_S_ntoh): Rename to _S_ntoh_16 and _S_ntoh_32.
1530 (basic_endpoint): Adjust calls to _S_hton and _S_ntoh.
1531 * include/experimental/socket (basic_socket::at_mark): Check
1532 _GLIBCXX_HAVE_SOCKATMARK.
1533
5aa8571a 1534 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
1535 const variables instead of macros.
1536
0bd005b6 1537 PR libstdc++/89629
1538 * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
1539 Use correct type for len_aligned.
1540 * testsuite/20_util/hash/89629.cc: New test.
1541
bc204227 15422019-03-11 Jakub Jelinek <jakub@redhat.com>
1543
1544 PR libstdc++/89641
1545 * include/std/atomic (atomic<T>::store, atomic<T>::load,
1546 atomic<T>::exchange, atomic<T>::compare_exchange_weak,
1547 atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
1548 * include/bits/atomic_base.h (__atomic_base<T>::operator++,
1549 __atomic_base<T>::operator--, __atomic_base<T>::operator+=,
1550 __atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
1551 __atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
1552 __atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
1553 __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
1554 memory_order_seq_cst to int.
1555
fc557c2b 15562019-03-08 Jonathan Wakely <jwakely@redhat.com>
1557
59b5e890 1558 * doc/xml/manual/using.xml: Use link element instead of xref.
1559 * doc/html/*: Regenerate.
1560
fc557c2b 1561 * include/bits/fs_path.h (path::format): Add fixed underlying type.
1562
66c6ff9e 15632019-03-08 François Dumont <fdumont@gcc.gnu.org>
1564
448338d0 1565 PR libstdc++/89477
1566 * include/debug/map.h (map): Use _RequireNotAllocator to constrain
1567 parameters in deduction guides.
1568 * include/debug/multimap.h (multimap): Likewise.
1569 * include/debug/set.h (multimap): Likewise.
1570 * include/debug/multiset.h (multimap): Likewise.
1571 * include/debug/unordered_map (unordered_map): Likewise.
1572 (unordered_multimap): Likewise.
1573 * include/debug/unordered_set (unordered_set): Likewise.
1574 (unordered_multiset): Likewise.
1575
66c6ff9e 1576 PR libstdc++/89608
1577 * include/debug/unordered_map (unordered_map<>::_M_check_rehashed):
1578 Invalidate all iterators in case of rehash.
1579 (unordered_multimap<>::_M_check_rehashed): Likewise.
1580 * include/debug/unordered_set
1581 (unordered_set<>::_M_check_rehashed): Likewise.
1582 (unordered_multiset<>::_M_check_rehashed): Likewise.
1583 * testsuite/23_containers/unordered_set/debug/89608_neg.cc: New.
1584
32e92dc2 15852019-03-07 Andreas Schwab <schwab@suse.de>
1586
1587 * config/abi/post/riscv64-linux-gnu: New directory.
1588 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
1589
61dcf2e1 15902019-03-07 Jonathan Wakely <jwakely@redhat.com>
1591
682ee94e 1592 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
1593 compile test to run. Fix typo.
1594
f24442bd 1595 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
1596 * doc/html/*: Regenerate.
1597
61dcf2e1 1598 P0356R5 Simplified partial function application
1599 * include/std/functional [C++20] (_Bind_front, _Bind_front_t): Define
1600 helpers for bind_front.
1601 (bind_front, __cpp_lib_bind_front): Define.
1602 * testsuite/20_util/function_objects/bind_front/1.cc: New test.
1603
b4af2395 16042019-03-06 Jonathan Wakely <jwakely@redhat.com>
1605
1606 * include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
1607 * include/std/version (__cpp_lib_bounded_array_traits): Likewise.
1608 * testsuite/20_util/is_bounded_array/value.cc: Check for macro.
1609 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
1610
f1857b8b 16112019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
1612
1613 PR libstdc++/86655 - std::assoc_legendre should not constrain
1614 the value of m (or x).
1615 * include/tr1/legendre_function.tcc (__assoc_legendre_p,
1616 __sph_legendre): If degree > order Don't throw, return 0.
1617 (__legendre_p, __assoc_legendre_p): Don't constrain x either.
1618 * testsuite/special_functions/02_assoc_legendre/pr86655.cc: New test.
1619 * testsuite/special_functions/20_sph_legendre/pr86655.cc: New test.
1620 * testsuite/tr1/5_numerical_facilities/special_functions/
1621 02_assoc_legendre/pr86655.cc: New test.
1622 * testsuite/tr1/5_numerical_facilities/special_functions/
1623 22_sph_legendre/pr86655.cc: New test.
1624
49c83dca 16252019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
1626
1627 Rewrite variant.
1628 Also PR libstdc++/85517
1629 * include/std/variant (__do_visit): New.
1630 (__variant_cast): Likewise.
1631 (__variant_cookie): Likewise.
1632 (__erased_*): Remove.
1633 (_Variant_storage::_S_vtable): Likewise.
1634 (_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
1635 (_Variant_storage::__M_reset): Adjust.
1636 (__variant_construct): New.
1637 (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
1638 __variant_construct.
1639 (_Move_ctor_base(_Move_ctor_base&&)): Likewise.
1640 (_Move_ctor_base::__M_destructive_copy): New.
1641 (_Move_ctor_base::__M_destructive_move): Adjust to use
1642 __variant_construct.
1643 (_Copy_assign_base::operator=): Adjust to use __do_visit.
1644 (_Copy_assign_alias): Adjust to check both copy assignment
1645 and copy construction for triviality.
1646 (_Move_assign_base::operator=): Adjust to use __do_visit.
1647 (_Multi_array): Add support for visitors that accept and return
1648 a __variant_cookie.
1649 (__gen_vtable_impl::_S_apply_all_alts): Likewise.
1650 (__gen_vtable_impl::_S_apply_single_alt): Likewise.
1651 (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
1652 a __variant_cookie temporary for a variant that is valueless and..
1653 (__gen_vtable_impl::__visit_invoke): ..adjust here.
1654 (__gen_vtable::_Array_type): Conditionally make space for
1655 the __variant_cookie visitor case.
1656 (__variant_construct_by_index): New.
1657 (get_if): Adjust to use std::addressof.
1658 (relops): Adjust to use __do_visit.
1659 (variant): Add __variant_cast and __variant_construct_by_index
1660 as friends.
1661 (variant::emplace): Use _M_reset() and __variant_construct_by_index
1662 instead of self-destruction.
1663 (variant::swap): Adjust to use __do_visit.
1664 (visit): Reimplement in terms of __do_visit.
1665 (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
1666 * testsuite/20_util/variant/compile.cc: Adjust.
1667 * testsuite/20_util/variant/run.cc: Likewise.
1668
13825fb2 16692019-03-06 Jonathan Wakely <jwakely@redhat.com>
1670
2613fa6b 1671 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
1672 constant.
1673 * testsuite/experimental/feat-char8_t.cc: Likewise.
1674
a17f06b3 1675 * include/std/type_traits [C++20] (is_bounded_array)
1676 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
1677 Define.
1678 * testsuite/20_util/is_bounded_array/requirements/
1679 explicit_instantiation.cc: New test.
1680 * testsuite/20_util/is_bounded_array/requirements/typedefs.cc: New
1681 test.
1682 * testsuite/20_util/is_bounded_array/value.cc: New test.
1683 * testsuite/20_util/is_unbounded_array/requirements/
1684 explicit_instantiation.cc: New test.
1685 * testsuite/20_util/is_unbounded_array/requirements/typedefs.cc: New
1686 * test.
1687 * testsuite/20_util/is_unbounded_array/value.cc: New test.
1688
13825fb2 1689 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
1690 Add constexpr.
1691 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
1692
2e73e63a 16932019-03-05 Jonathan Wakely <jwakely@redhat.com>
1694
1695 * include/c_compatibility/math.h [C++20] (lerp): Add using
1696 declaration.
1697 * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define.
1698 (__lerp): Define function template to implement lerp.
1699 (lerp(float, float, float), lerp(double, double, double))
1700 (lerp(long double, long double, long double)): Define for C++20.
1701 * include/std/numeric [C++20] (__cpp_lib_interpolate): Define.
1702 (midpoint(T, T), midpoint(T*, T*)): Define.
1703 * include/std::version [C++20] (__cpp_lib_interpolate): Define.
1704 * testsuite/26_numerics/lerp.cc: New test.
1705 * testsuite/26_numerics/midpoint/floating.cc: New test.
1706 * testsuite/26_numerics/midpoint/integral.cc: New test.
1707 * testsuite/26_numerics/midpoint/pointer.cc: New test.
1708
08d3ce5b 17092019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
1710
1711 PR libstdc++/88996 Implement P0439R0
1712 Make std::memory_order a scoped enumeration.
1713 * include/bits/atomic_base.h: For C++20 make memory_order a scoped enum,
1714 add variables for the old enumerators. Adjust calls.
1715 * testsuite/29_atomics/headers/atomic/types_std_c++2a.cc: New test.
1716 * testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc: New test.
1717
ad29ad75 17182019-03-04 Jonathan Wakely <jwakely@redhat.com>
1719
4233f2a8 1720 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
1721 directive.
1722
ad29ad75 1723 * include/std/memory_resource (polymorphic_allocator): Add default
1724 template argument for C++20.
1725 (polymorphic_allocator::allocate_bytes)
1726 (polymorphic_allocator::deallocate_bytes)
1727 (polymorphic_allocator::allocate_object)
1728 (polymorphic_allocator::deallocate_object)
1729 (polymorphic_allocator::new_object)
1730 (polymorphic_allocator::delete_object): New member functions for
1731 C++20.
1732 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
1733 test.
1734
d4c27c4a 17352019-03-03 Jonathan Wakely <jwakely@redhat.com>
1736
1737 PR libstdc++/89562
1738 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
1739 mode for mingw.
1740
6a9c77f1 17412019-03-01 Jonathan Wakely <jwakely@redhat.com>
1742
5b313df9 1743 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
1744 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
1745
6a9c77f1 1746 * include/std/memory (uses_allocator_construction_args): New set of
1747 overloaded functions.
1748 (make_obj_using_allocator, uninitialized_construct_using_allocator):
1749 New functions.
1750 * include/std/memory_resource (polymorphic_allocator::construct)
1751 [__cplusplus > 201703l]: Replace all overloads with a single function
1752 using uses_allocator_construction_args.
1753 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: New
1754 test.
1755 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
1756
53ea0887 17572019-02-27 Jonathan Wakely <jwakely@redhat.com>
1758
1759 PR libstdc++/89466
1760 * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
1761 stylesheet directories before check for xsltproc. Try to use
1762 xmlcatalog to find local stylesheet directory before trying hardcoded
1763 paths. Add path used by suse to hardcoded paths. Adjust xsltproc
1764 check to look for the same stylesheet as doc/Makefile.am uses. Don't
1765 use xsltproc if xmlcatalog fails to find a local stylesheet.
1766 * configure.ac: Check for xmlcatalog.
1767 * Makefile.in: Regenerate.
1768 * configure: Likewise.
1769 * doc/Makefile.in: Likewise.
1770 * include/Makefile.in: Likewise.
1771 * libsupc++/Makefile.in: Likewise.
1772 * po/Makefile.in: Likewise.
1773 * python/Makefile.in: Likewise.
1774 * src/Makefile.in: Likewise.
1775 * src/c++11/Makefile.in: Likewise.
1776 * src/c++17/Makefile.in: Likewise.
1777 * src/c++98/Makefile.in: Likewise.
1778 * src/filesystem/Makefile.in: Likewise.
1779 * testsuite/Makefile.in: Likewise.
1780
72ebb7e8 17812019-02-26 Jonathan Wakely <jwakely@redhat.com>
1782
a7f2f1b1 1783 PR libstdc++/89477
1784 * include/bits/alloc_traits.h (_RequireNotAllocator): New helper for
1785 container deduction guides.
1786 * include/bits/hashtable.h (_RequireNotAllocatorOrIntegral): Likewise.
1787 * include/bits/stl_map.h (map): Use _RequireNotAllocator to constrain
1788 parameters in deduction guides.
1789 * include/bits/stl_multimap.h (multimap): Likewise.
1790 * include/bits/stl_multiset.h (multiset): Likewise.
1791 * include/bits/stl_queue.h (queue, priority_queue): Likewise.
1792 * include/bits/stl_set.h (set): Likewise.
1793 * include/bits/stl_stack.h (stack): Likewise.
1794 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
1795 use _RequireNotAllocator and _RequireNotAllocatorOrIntegral to
1796 constrain parameters in deduction guides.
1797 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
1798 Likewise.
1799 * testsuite/23_containers/map/cons/deduction.cc: Test additional
1800 deduction cases.
1801 * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
1802 * testsuite/23_containers/set/cons/deduction.cc: Likewise.
1803 * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
1804 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
1805 Likewise.
1806 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
1807 Likewise.
1808 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
1809
72ebb7e8 1810 PR libstdc++/89416
1811 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Change
1812 to class template and partial specialization using void_t.
1813 (__is_copy_insertable, __is_move_insertable): Adjust base class.
1814
c9f61a64 18152019-02-24 Jonathan Wakely <jwakely@redhat.com>
1816
1817 PR libstdc++/89416
1818 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
1819 copy and move members public.
1820
61e2d6f7 18212019-02-23 Jonathan Wakely <jwakely@redhat.com>
1822
87798f3f 1823 * include/std/type_traits (__underlying_type_impl): New helper to
1824 make underlying_type SFINAE-friendly.
1825 (underlying_type): Derive from __underlying_type_impl.
1826 * testsuite/20_util/underlying_type/requirements/typedefs-3.cc: New
1827 test.
1828
61e2d6f7 1829 PR libstdc++/89446
1830 * include/bits/char_traits.h (__constant_char_array): Check index is
1831 in range before dereferencing.
1832 (char_traits<char>::compare, char_traits<char>::find)
1833 (char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
1834 immediately if n is zero.
1835 (char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
1836 Remove workarounds for PR 67026.
1837 * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
1838 New test.
1839 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
1840 New test.
1841
90a443b3 18422019-02-22 Eric Botcazou <ebotcazou@adacore.com>
1843
1844 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
1845 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
1846
98485ce3 18472019-02-22 Jakub Jelinek <jakub@redhat.com>
1848
1849 PR libstdc++/89402
1850 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
1851 type to std::size_t and argument to type to long double.
1852
26b4fc38 18532019-02-22 Eric Botcazou <ebotcazou@adacore.com>
1854
1855 * configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
1856 * config/abi/post/sparc64-linux-gnu: New directory.
1857 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
1858 * config/abi/post/sparc64-linux-gnu/32: New directory.
1859 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.
1860
4f847a8e 18612019-02-21 Jonathan Wakely <jwakely@redhat.com>
1862
1863 * testsuite/29_atomics/headers/atomic/types_std_c++20.cc: New test.
1864 * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: New
1865 test.
1866
aad651b3 18672019-02-22 Tom Honermann <tom@honermann.net>
1868
1869 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
1870 printers for u8string and u8string_view.
1871
c783b3cc 18722019-02-22 Tom Honermann <tom@honermann.net>
1873
1874 * testsuite/18_support/byte/ops.cc: Validate
1875 std::to_integer<char8_t>, std::to_integer<char16_t>, and
1876 std::to_integer<char32_t>.
1877 * testsuite/18_support/numeric_limits/dr559.cc: Validate
1878 std::numeric_limits<char8_t>.
1879 * testsuite/18_support/numeric_limits/lowest.cc: Validate
1880 std::numeric_limits<char8_t>::lowest().
1881 * testsuite/18_support/numeric_limits/max_digits10.cc: Validate
1882 std::numeric_limits<char8_t>::max_digits10.
1883 * testsuite/18_support/type_info/fundamental.cc: Validate
1884 typeinfo for char8_t.
1885 * testsuite/20_util/from_chars/1_c++20_neg.cc: New test, validating
1886 std::from_chars with char8_t.
1887 * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
1888 Validate explicit instantiation of std::hash<char8_t>.
1889 * testsuite/20_util/is_integral/value.cc: Validate
1890 std::is_integral<char8_t>.
1891 * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
1892 Validate std::make_signed<char8_t>.
1893 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
1894 Validate u8string construction from char8_t sources.
1895 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Validate
1896 std::pmr::u8string.
1897 * testsuite/21_strings/basic_string_view/operations/compare/
1898 char/70483.cc: Validate substr operations on u8string_view.
1899 * testsuite/21_strings/basic_string_view/typedefs.cc: Validate that
1900 the u8string_view typedef is defined.
1901 * testsuite/21_strings/char_traits/requirements/
1902 constexpr_functions.cc: Validate char_traits<char8_t> constexpr
1903 member functions.
1904 * testsuite/21_strings/char_traits/requirements/
1905 constexpr_functions_c++17.cc: Validate char_traits<char8_t> C++17
1906 constexpr member functions.
1907 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Validate
1908 that the u8string typedef is defined.
1909 * testsuite/22_locale/locale/cons/unicode.cc: Validate the presence
1910 of the std::codecvt<char16_t, char8_t, std::mbstate_t> and
1911 std::codecvt<char32_t, char8_t, std::mbstate_t> facets.
1912 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Update line
1913 numbers.
1914 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
1915 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
1916 Likewise.
1917 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
1918 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
1919 Validate std::atomic<char8_t>::is_always_lock_free
1920 * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
1921 Update line numbers.
1922 * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
1923 Likewise.
1924 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
1925 Likewise.
1926 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1927 Validate std::experimental::pmr::u8string.
1928 * testsuite/experimental/string_view/typedefs.cc: Validate that the
1929 u8string_view typedef is defined.
1930 * testsuite/util/testsuite_common_types.h: Add char8_t, char16_t and
1931 char32_t to the typelists.
1932
ef96a935 19332019-02-22 Tom Honermann <tom@honermann.net>
1934
1935 * include/ext/typelist.h: Constrain a partial specialization of
1936 typelist::detail::append_ to only match chain<T1,T2>.
1937
d373b606 19382019-02-21 Jonathan Wakely <jwakely@redhat.com>
1939
1940 PR libstdc++/89416
1941 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace
1942 class template with class. Replace move and copy member types with
1943 member alias templates, so they are only instantiated when needed.
1944 (__is_copy_insertable, __is_move_insertable): Adjust base class.
1945 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable
1946 test for C++11/14/17 as well.
1947 * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New
1948 test.
1949
25395ee8 19502019-02-20 Jakub Jelinek <jakub@redhat.com>
1951
1952 PR libstdc++/89402
1953 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
1954 _GLIBCXX_PURE to the alias declaration.
1955
affcb65b 19562019-02-19 Jonathan Wakely <jwakely@redhat.com>
1957
1958 * testsuite/21_strings/basic_string/literals/types.cc
1959 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
1960 * testsuite/21_strings/basic_string/literals/values.cc
1961 [_GLIBCXX_USE_CHAR8_T]: Likewise.
1962 * testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
1963 potentially having different type.
1964 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
1965 * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
1966 to char.
1967 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
1968 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
1969 * testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
1970 string literals only using basic character set.
1971 * testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
1972 u8 literals to char.
1973 * testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
1974 Test ATOMIC_CHAR8_T_LOCK_FREE.
1975 Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
1976 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
1977 [_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
1978 * testsuite/experimental/string_view/literals/types.cc
1979 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
1980 literal.
1981 * testsuite/experimental/string_view/literals/values.cc
1982 [_GLIBCXX_USE_CHAR8_T]: Likewise.
1983
4acc5060 19842019-02-19 Tom Honermann <tom@honermann.net>
1985
1986 * testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
1987 from char16_32_t.cc; validates numeric_limits<char8_t>.
1988 * testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
1989 test cloned from types.cc; validates operator""s for char8_t
1990 returns u8string.
1991 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
1992 test cloned from values.cc; validates construction and comparison
1993 of u8string values.
1994 * testsuite/21_strings/basic_string/requirements/
1995 /explicit_instantiation/char8_t/1.cc: New test cloned from
1996 char16_t/1.cc; validates explicit instantiation of
1997 basic_string<char8_t>.
1998 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
1999 New test cloned from types.cc; validates operator""sv for char8_t
2000 returns u8string_view.
2001 * testsuite/21_strings/basic_string_view/literals/
2002 values-char8_t.cc: New test cloned from values.cc; validates
2003 construction and comparison of u8string_view values.
2004 * testsuite/21_strings/basic_string_view/requirements/
2005 explicit_instantiation/char8_t/1.cc: New test cloned from
2006 char16_t/1.cc; validates explicit instantiation of
2007 basic_string_view<char8_t>.
2008 * testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
2009 New test cloned from char16_t/65049.cc; validates that
2010 char_traits<char8_t> is not vulnerable to the concerns in PR65049.
2011 * testsuite/21_strings/char_traits/requirements/char8_t/
2012 typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
2013 that char_traits<char8_t> member typedefs are present and correct.
2014 * testsuite/21_strings/char_traits/requirements/
2015 explicit_instantiation/char8_t/1.cc: New test cloned from
2016 char16_t/1.cc; validates explicit instantiation of
2017 char_traits<char8_t>.
2018 * testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
2019 from char16_t.cc: validates
2020 codecvt<char16_t, char8_t, mbstate_t>.
2021 * testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
2022 from char32_t.cc: validates
2023 codecvt<char32_t, char8_t, mbstate_t>.
2024 * testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
2025 utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
2026 codecvt<char32_t, char8_t, std::mbstate_t>.
2027 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
2028 test cloned from string.cc; validates filesystem::path construction
2029 from char8_t input.
2030 * testsuite/experimental/feat-char8_t.cc: New test; validates that
2031 the __cpp_lib_char8_t feature test macro is defined with the
2032 correct value.
2033 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
2034 New test cloned from string.cc; validates filesystem::path
2035 construction from char8_t input.
2036 * testsuite/experimental/string_view/literals/types-char8_t.cc: New
2037 test cloned from types.cc; validates operator""sv for char8_t
2038 returns u8string_view.
2039 * testsuite/experimental/string_view/literals/values-char8_t.cc:
2040 New test cloned from values.cc; validates construction and
2041 comparison of u8string_view values.
2042 * testsuite/experimental/string_view/requirements/
2043 explicit_instantiation/char8_t/1.cc: New test cloned from
2044 char16_t/1.cc; validates explicit instantiation of
2045 basic_string_view<char8_t>.
2046 * testsuite/ext/char8_t/atomic-1.cc: New test; validates that
2047 ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
2048 enabled.
2049
25694c85 20502019-02-19 Tom Honermann <tom@honermann.net>
2051
2052 P0482R5 char8_t: Standard library support
2053 * config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
2054 typeinfo symbols for char8_t.
2055 * config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
2056 (GLIBCXX_3.4.26): Add symbols for specializations of
2057 numeric_limits and codecvt that involve char8_t.
2058 (CXXABI_1.3.12): Add typeinfo symbols for char8_t.
2059 * include/bits/atomic_base.h: Add atomic_char8_t.
2060 * include/bits/basic_string.h: Add std::hash<u8string> and
2061 operator""s(const char8_t*, size_t).
2062 * include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
2063 __cpp_lib_char8_t.
2064 * include/bits/char_traits.h: Add char_traits<char8_t>.
2065 * include/bits/codecvt.h: Add
2066 codecvt<char16_t, char8_t, mbstate_t>,
2067 codecvt<char32_t, char8_t, mbstate_t>,
2068 codecvt_byname<char16_t, char8_t, mbstate_t>, and
2069 codecvt_byname<char32_t, char8_t, mbstate_t>.
2070 * include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
2071 recognize char8_t as an integral type.
2072 * include/bits/fs_path.h: (path::__is_encoded_char): Recognize
2073 char8_t.
2074 (path::u8string): Return std::u8string when char8_t support is
2075 enabled.
2076 (path::generic_u8string): Likewise.
2077 (path::_S_convert): Handle conversion from char8_t input.
2078 (path::_S_str_convert): Likewise.
2079 * include/bits/functional_hash.h: Add hash<char8_t>.
2080 * include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
2081 char8_t.
2082 * include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
2083 for new char8_t specializations.
2084 * include/bits/localefwd.h: Add missing declarations of
2085 codecvt<char16_t, char, mbstate_t> and
2086 codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
2087 codecvt<char16_t, char8_t, mbstate_t> and
2088 codecvt<char32_t, char8_t, mbstate_t>.
2089 * include/bits/postypes.h: Add u8streampos
2090 * include/bits/stringfwd.h: Add declarations of
2091 char_traits<char8_t> and u8string.
2092 * include/c_global/cstddef: Add __byte_operand<char8_t>.
2093 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
2094 Recognize char8_t.
2095 (path::u8string): Return std::u8string when char8_t support is
2096 enabled.
2097 (path::generic_u8string): Likewise.
2098 (path::_S_convert): Handle conversion from char8_t input.
2099 (path::_S_str_convert): Likewise.
2100 * include/experimental/string: Add u8string.
2101 * include/experimental/string_view: Add u8string_view,
2102 hash<experimental::u8string_view>, and
2103 operator""sv(const char8_t*, size_t).
2104 * include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
2105 * include/std/charconv (__is_int_to_chars_type): Recognize char8_t
2106 as a character type.
2107 * include/std/limits: Add numeric_limits<char8_t>.
2108 * include/std/string_view: Add u8string_view,
2109 hash<experimental::u8string_view>, and
2110 operator""sv(const char8_t*, size_t).
2111 * include/std/type_traits: Add __is_integral_helper<char8_t>,
2112 __make_unsigned<char8_t>, and __make_signed<char8_t>.
2113 * libsupc++/atomic_lockfree_defines.h: Define
2114 ATOMIC_CHAR8_T_LOCK_FREE.
2115 * src/c++11/Makefile.am: Compile with -fchar8_t when compiling
2116 codecvt.cc and limits.cc so that char8_t specializations of
2117 numeric_limits and codecvt and emitted.
2118 * src/c++11/Makefile.in: Likewise.
2119 * src/c++11/codecvt.cc: Define members of
2120 codecvt<char16_t, char8_t, mbstate_t>,
2121 codecvt<char32_t, char8_t, mbstate_t>,
2122 codecvt_byname<char16_t, char8_t, mbstate_t>, and
2123 codecvt_byname<char32_t, char8_t, mbstate_t>.
2124 * src/c++11/limits.cc: Define members of
2125 numeric_limits<char8_t>.
2126 * src/c++98/Makefile.am: Compile with -fchar8_t when compiling
2127 locale_init.cc and localename.cc.
2128 * src/c++98/Makefile.in: Likewise.
2129 * src/c++98/locale_init.cc: Add initialization for the
2130 codecvt<char16_t, char8_t, mbstate_t> and
2131 codecvt<char32_t, char8_t, mbstate_t> facets.
2132 * src/c++98/localename.cc: Likewise.
2133 * testsuite/util/testsuite_abi.cc: Validate ABI bump.
2134
140615bb 21352019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
2136
2137 * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
2138 * 27_io/filesystem/operations/resize_file.cc: Likewise.
2139 * 27_io/filesystem/path/generation/normal2.cc: Likewise.
2140
c677a9d7 21412019-02-14 Jonathan Wakely <jwakely@redhat.com>
2142
1bbfe9f8 2143 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
2144 * doc/html/*: Regenerate.
2145
b24f00b1 2146 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
2147 * doc/html/*: Regenerate.
2148
a3d1baa9 2149 * doc/xml/manual/intro.xml: Document LWG 2586 status.
2150 * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
2151 allocator type in is_constructible checks.
2152 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
2153 * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
2154 * testsuite/20_util/tuple/cons/allocators.cc: Add test using
2155 problematic type from LWG 2586 discussion.
2156 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
2157 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
2158
99d130bf 2159 * configure.ac: Check for C11 timespec_get function.
2160 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
2161 (openbsd): Likewise
2162 * config.h.in: Regenerate.
2163 * configure: Regenerate.
2164 * include/c_global/ctime (timespec, timespec_get): Add to namespace
2165 std for C++17 and up.
2166
48772ec3 2167 * doc/xml/manual/intro.xml: Document LWG 2537 status.
2168 * include/bits/stl_queue.h
2169 (priority_queue(const Compare&, const Container&, const Alloc&))
2170 (priority_queue(const Compare&, Container&&, const Alloc&)): Call
2171 make_heap.
2172 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
2173
ee32dd64 2174 * doc/xml/manual/intro.xml: Document LWG 2566 status.
2175 * include/bits/stl_queue.h (queue, priority_queue): Add static
2176 assertions to enforce LWG 2566 requirement on value_type.
2177 * include/bits/stl_stack.h (stack): Likewise.
2178
9724de38 2179 PR middle-end/89303
2180 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
2181
c677a9d7 2182 * doc/xml/manual/intro.xml: Document LWG 2735 status.
2183 * include/bits/std_abs.h: Add comment about LWG 2735.
2184 * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
2185
4194f872 21862019-02-13 Jonathan Wakely <jwakely@redhat.com>
2187
2188 PR libstdc++/89345
2189 * include/std/version [__cpp_impl_destroying_delete]
2190 (__cpp_lib_destroying_delete): Only define for C++2a and later.
2191 * libsupc++/new [__cpp_impl_destroying_delete]
2192 (__cpp_lib_destroying_delete): Likewise.
2193 (destroying_delete_t, destroying_delete): Likewise, but define even
2194 when __cpp_impl_destroying_delete is not defined.
2195 * testsuite/18_support/destroying_delete.cc: New test.
2196
aaacaee2 21972019-02-11 Jonathan Wakely <jwakely@redhat.com>
2198
2199 PR libstdc++/89023
2200 * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
2201 * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
2202 * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
2203 * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
2204
5256b0dd 22052019-02-09 Jonathan Wakely <jwakely@redhat.com>
2206
2207 PR libstdc++/71044
2208 * include/bits/fs_path.h (path::has_root_name)
2209 (path::has_root_directory, path::has_root_path)
2210 (path::has_relative_path, path::has_parent_path)
2211 (path::has_filename, path::has_stem, path::has_extension)
2212 (path::is_absolute, path::is_relative, path::_M_find_extension): Add
2213 noexcept.
2214 * src/c++17/fs_path.cc (path::has_root_name)
2215 (path::has_root_directory, path::has_root_path)
2216 (path::has_relative_path, path::has_parent_path)
2217 (path::has_filename, path::_M_find_extension): Add noexcept.
2218
e32f625e 22192019-02-06 Jonathan Wakely <jwakely@redhat.com>
2220
2221 PR libstdc++/89102 (partial)
2222 * include/std/type_traits (common_type<>): Define.
2223 (common_type<T>): Derive from common_type<T, T>.
2224 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
2225 Test zero-length template argument list.
2226 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
2227 Test additional single argument cases.
2228 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
2229 Adjust expected error.
2230
b03489db 22312019-02-05 Jonathan Wakely <jwakely@redhat.com>
2232
e89e4fec 2233 PR libstdc++/89128
2234 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
2235 guides.
2236 * include/bits/stl_stack.h (stack): Likewise.
2237 * testsuite/23_containers/priority_queue/deduction.cc: New test.
2238 * testsuite/23_containers/queue/deduction.cc: New test.
2239 * testsuite/23_containers/stack/deduction.cc: New test.
2240
b640dd11 2241 PR libstdc++/89194
2242 * include/std/type_traits (__is_convertible_helper)
2243 (__is_convertible_helper<_From, _To, false>): Revert changes to
2244 support is_nothrow_convertible.
2245 (__is_nt_convertible_helper): New helper.
2246 (is_nothrow_convertible): Use __is_nt_convertible_helper.
2247
74c88c5f 2248 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
2249 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
2250
eca5e8d4 2251 PR libstdc++/89130
2252 * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
2253 __is_alloc_insertable_impl. Replace single type member with two
2254 members, one for each of copy and move insertable.
2255 (__is_move_insertable): New trait for internal use.
2256 * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
2257 (vector::_S_nothrow_relocate(true_type)): New functions to
2258 conditionally check if __relocate_a can throw.
2259 (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
2260 on __is_move_insertable.
2261 (vector::_S_do_relocate): New overloaded functions to conditionally
2262 call __relocate_a.
2263 (vector::_S_relocate): New function that dispatches to _S_do_relocate
2264 based on _S_use_relocate.
2265 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
2266 (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
2267 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
2268
b03489db 2269 PR libstdc++/89090
2270 * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
2271 parameter unnamed. Add message to static assertion.
2272 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
2273 (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
2274 in C++11 code.
2275
71625a15 22762019-02-05 Marc Glisse <marc.glisse@inria.fr>
2277
2278 PR libstdc++/87106
2279 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
2280 Rename...
2281 (__is_bitwise_relocatable): ... to this.
2282 (__relocate_a_1): Adapt.
2283 * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
2284 (__is_bitwise_relocatable): ... to this.
2285
e7b22e58 22862019-01-30 Jonathan Wakely <jwakely@redhat.com>
2287
2288 PR libstdc++/89117
2289 * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
2290 final component as well as from _M_pathname. Append the dot using
2291 operator+= instead of only to _M_pathname.
2292 (path::_M_find_extension): Reformat slightly.
2293 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
2294 Add more test cases.
2295
dae923a7 22962019-01-30 Ulrich Drepper <drepper@redhat.com>
2297
2298 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
2299
710397ad 23002019-01-29 Jonathan Wakely <jwakely@redhat.com>
2301
5efc4356 2302 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
2303 constexpr specifiers from arg and proj.
2304
5f15e718 2305 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
2306 __shared_ptr instantiations used by gcc4-compatible ABI.
2307
307e86fc 2308 * include/experimental/forward_list (experimental::erase): Qualify
2309 call to erase_if.
2310 * include/experimental/list (experimental::erase): Likewise.
2311 * include/std/forward_list (std::erase): Likewise.
2312 * include/std/list (std::erase): Likewise.
2313
38129d1a 2314 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
2315 C++2a.
2316 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
2317 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
2318 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
2319 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
2320 * testsuite/ext/array_allocator/26875.cc: Likewise.
2321 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
2322 * testsuite/util/replacement_memory_operators.h: Likewise.
2323 * testsuite/util/testsuite_allocator.h: Likewise.
2324
710397ad 2325 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
2326 normal mode vector, even for debug mode.
2327 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
2328 Define alias template for normal mode vector.
2329
70f71249 23302019-01-28 Jonathan Wakely <jwakely@redhat.com>
2331
2332 PR libstdc++/68737
2333 * config/locale/generic/c_locale.h (__convert_from_v)
2334 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
2335 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
2336 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
2337 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
2338
f1074115 23392019-01-24 Jonathan Wakely <jwakely@redhat.com>
2340
4bc4fd90 2341 PR libstdc++/88840
2342 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
2343 data member with static member function _S_use_relocate().
2344 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
2345 (vector::_M_default_append): Use _S_use_relocate() instead of
2346 __use_relocate.
2347
f1074115 2348 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
2349 sign of results.
2350
1c4657a3 23512019-01-22 Jonathan Wakely <jwakely@redhat.com>
2352
2353 PR libstdc++/88740
2354 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
2355 write to stderr instead of using printf.
2356
dafe8c59 23572019-01-21 Jakub Jelinek <jakub@redhat.com>
2358
2359 PR libstdc++/86590
2360 * include/bits/char_traits.h (__constant_string_p,
2361 __constant_char_array_p): Use __builtin_is_constant_evaluated if
2362 available.
2363
eaf966f3 23642019-01-20 Ulrich Drepper <drepper@redhat.com>
2365
2366 Implement C++20 P0600r1.
2367 * include/backward/hash_map: Add nodiscard attribute to empty.
2368 * include/backward/hash_set: Likewise.
2369 * backward/hashtable.h: Likewise.
2370 * include/bits/basic_string.h: Likewise.
2371 * include/bits/forward_list.h: Likewise.
2372 * include/bits/hashtable.h: Likewise.
2373 * include/bits/regex.h: Likewise.
2374 * include/bits/stl_deque.h: Likewise.
2375 * include/bits/stl_list.h: Likewise.
2376 * include/bits/stl_map.h: Likewise.
2377 * include/bits/stl_multimap.h: Likewise.
2378 * include/bits/stl_multiset.h: Likewise.
2379 * include/bits/stl_queue.h: Likewise.
2380 * include/bits/stl_set.h: Likewise.
2381 * include/bits/stl_stack.h: Likewise.
2382 * include/bits/stl_tree.h: Likewise.
2383 * include/bits/stl_vector.h: Likewise.
2384 * include/bits/unordered_map.h: Likewise.
2385 * include/bits/unordered_set.h: Likewise.
2386 * include/debug/array: Likewise.
2387 * include/experimental/any: Likewise.
2388 * include/experimental/bits/fs_path.h: Likewise.
2389 * include/experimental/internet: Likewise.
2390 * include/experimental/string_view: Likewise.
2391 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
2392 Likewise.
2393 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
2394 Likewise.
2395 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
2396 Likewise.
2397 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
2398 Likewise.
2399 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
2400 Likewise.
2401 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
2402 Likewise.
2403 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
2404 Likewise.
2405 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
2406 Likewise.
2407 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
2408 info_fn_imps.hpp: Likewise.
2409 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
2410 left_child_next_sibling_heap_.hpp: Likewise.
2411 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
2412 Likewise.
2413 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
2414 Likewise.
2415 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
2416 Likewise.
2417 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
2418 Likewise.
2419 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
2420 Likewise.
2421 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
2422 Likewise.
2423 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
2424 Likewise.
2425 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
2426 * include/ext/pb_ds/trie_policy.hpp: Likewise.
2427 * include/ext/rope: Likewise.
2428 * include/ext/slist: Likewise.
2429 * include/ext/vstring.h: Likewise.
2430 * include/profile/array: Likewise.
2431 * include/std/array: Likewise.
2432 * include/tr1/array: Likewise.
2433 * include/tr1/hashtable.h: Likewise.
2434 * include/tr1/regex: Likewise.
2435 * include/tr2/dynamic_bitset: Likewise.
2436 * include/bits/alloc_traits.h: Add nodiscard attribute to
2437 allocate.
2438 * include/experimental/memory_resource: Likewise.
2439 * include/ext/alloc_traits.h: Likewise.
2440 * include/ext/array_allocator.h: Likewise.
2441 * include/ext/bitmap_allocator.h: Likewise.
2442 * include/ext/debug_allocator.h: Likewise.
2443 * include/ext/extptr_allocator.h: Likewise.
2444 * include/ext/mt_allocator.h: Likewise.
2445 * include/ext/new_allocator.h: Likewise.
2446 * include/ext/pool_allocator.h: Likewise.
2447 * include/ext/throw_allocator.h: Likewise.
2448 * include/std/scoped_allocator: Likewise.
2449 * libsupc++/eh_alloc.cc: Likewise.
2450 * include/std/future: Add nodiscard attribute to async.
2451 * libsupc++/new: Add nodiscard attribute to new.
2452
3c1c2a8c 24532019-01-18 Jonathan Wakely <jwakely@redhat.com>
2454
2455 PR libstdc++/87514
2456 PR libstdc++/87520
2457 PR libstdc++/88782
2458 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
2459 * include/bits/shared_ptr.h
2460 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
2461 (allocate_shared): Change to use new tag type.
2462 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
2463 Declare new member function.
2464 (_Sp_alloc_shared_tag): Define new type.
2465 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
2466 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
2467 _Sp_make_shared_tag::_S_eq to check type_info.
2468 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
2469 Constrain to prevent being called with _Sp_alloc_shared_tag.
2470 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
2471 Replace constructor with ...
2472 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
2473 reference parameter so address of the new object can be returned to
2474 the caller. Obtain the allocator from the tag type.
2475 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
2476 constructor with ...
2477 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
2478 to the __shared_count constructor.
2479 (__allocate_shared): Change to use new tag type.
2480 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
2481
21a962b2 24822019-01-17 Jonathan Wakely <jwakely@redhat.com>
2483
464ac146 2484 * src/c++17/fs_ops.cc
2485 (equivalent(const path&, const path&, error_code&))
2486 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
2487 compare files instead of relying on incomplete info returned by stat.
2488
2987a93d 2489 PR libstdc++/88884
2490 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
2491 if the path is already absolute.
2492 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
2493 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
2494
21a962b2 2495 PR libstdc++/88881
2496 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
2497 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
2498 of filesystem::exists.
2499 (create_directories(const path&, error_code&)): Add assertions.
2500 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
2501 Add workaround for bug in _wstat for paths with trailing slash.
2502 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
2503 for expected behaviour on mingw.
2504 * testsuite/experimental/filesystem/operations/create_directories.cc:
2505 Likewise.
2506 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
2507 "TMP" instead of "TMPDIR" and clean environment before each test. Do
2508 not test permissions on mingw targets.
2509
93478c9f 25102019-01-16 Jonathan Wakely <jwakely@redhat.com>
2511
2512 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
2513 constructors and open members taking wide strings. Fix patterns for
2514 filesystem::path members to match wstring_view parameters. Add
2515 exports for shared_ptr members used by directory iterators.
2516 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
2517 error code parameter if the file doesn't exist.
2518 * src/filesystem/ops.cc (remove(const path&, error_code&)):
2519 Likewise.
2520 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
2521 values for mingw targets, where "/" is not an absolute path. Do not
2522 test symlinks on mingw targets.
2523 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
2524 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
2525 on mingw targets.
2526 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
2527 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
2528 that each component of the path is created.
2529 * testsuite/experimental/filesystem/operations/create_directories.cc:
2530 Likewise.
2531 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
2532 permissions on mingw targets.
2533 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
2534 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
2535 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
2536 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
2537 mingw targets.
2538 * testsuite/experimental/filesystem/operations/permissions.cc:
2539 Likewise.
2540 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
2541 symlinks or permissions on mingw targets.
2542 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
2543 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
2544 symlinks on mingw targets.
2545 * testsuite/experimental/filesystem/operations/remove_all.cc:
2546 Likewise.
2547 * testsuite/27_io/filesystem/operations/status.cc: Do not test
2548 permissions on mingw targets.
2549 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
2550 test symlinks on mingw targets.
2551 * testsuite/experimental/filesystem/operations/space.cc: Fix test
2552 for mingw targets.
2553
af93b844 25542019-02-14 Ulrich Drepper <drepper@redhat.com>
2555
2556 PR libstdc++/88738
2557 Warn about unused comparisons of shared_ptr/unique_ptr
2558 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
2559 * include/bits/shared_ptr.h: Use it for operator ==, !=,
2560 <, <=, >, >= for shared_ptr.
2561 * include/bits/unique_ptr.h: Likewise for unique_ptr.
2562
8793c0de 25632019-01-15 Jonathan Wakely <jwakely@redhat.com>
2564
afa61572 2565 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
2566 as 201611L, because P0497R0 changes are supported.
2567 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
2568
feb89906 2569 * include/bits/erase_if.h [__cplusplus > 201703L]
2570 (__cpp_lib_erase_if): Only define for C++2a.
2571 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
2572 (__cpp_lib_null_iterators): Define.
2573 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
2574 (__cpp_lib_null_iterators): Define.
2575 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
2576
d253bcb1 2577 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
2578 status.
2579 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
2580 Define.
2581 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
2582 changes are supported.
2583 * include/std/optional (__cpp_lib_optional): Likewise.
2584 * include/std/variant (__cpp_lib_variant): Likewise.
2585 * include/std/version [!__STRICT_ANSI__]
2586 (__cpp_lib_uncaught_exceptions): Define as long integer.
2587 [__cplusplus >= 201703L] (__cpp_lib_any)
2588 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
2589 (__cpp_lib_variant): Define for C++17.
2590 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
2591 as long integer.
2592 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
2593 integer.
2594
8793c0de 2595 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
2596
a8cd4b2b 25972019-01-12 Jonathan Wakely <jwakely@redhat.com>
2598
2599 PR libstdc++/88811
2600 PR libstdc++/83306
2601 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
2602 before second path.
2603 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
2604 test.
2605
a5b1332c 26062019-01-11 Jonathan Wakely <jwakely@redhat.com>
2607
656ac8b7 2608 * doc/xml/manual/intro.xml: Include new section.
2609 * doc/xml/manual/status_cxx2017.xml: Document more
2610 implementation-defined properties of the library.
2611 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
2612 * doc/html/*: Regenerate.
2613
f5480b8c 2614 * include/bits/refwrap.h [__cplusplus > 201703L]
2615 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
2616 (_Reference_wrapper_base_memfun): Do not define for C++2a.
2617 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
2618 for C++2a.
2619 (reference_wrapper::operator()): Add static assertion.
2620 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
2621
36496c4d 2622 * include/std/chrono (duration_values::zero(), duration_values::min())
2623 (duration_values::max()): Add noexcept.
2624 (duration::zero(), duration::min(), duration::max()): Likewise.
2625 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
2626 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
2627 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
2628
a5b1332c 2629 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
2630
d9de68bc 26312019-01-11 Jakub Jelinek <jakub@redhat.com>
2632
2633 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
2634 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
2635
beb370cb 26362019-01-11 Jonathan Wakely <jwakely@redhat.com>
2637
1d628fd4 2638 PR libstdc++/88802
2639 * include/bits/functional_hash.h (hash<nullptr_t>): Define
2640 specialization for C++17 (P0513R0, LWG 2817).
2641 * testsuite/20_util/hash/nullptr.cc: New test.
2642
a18b3766 2643 PR libstdc++/88125
2644 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
2645 pattern for std::basic_stringbuf::str().
2646
beb370cb 2647 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
2648 basic_ostream::operator<< patterns.
2649
cbbb35ec 26502019-01-10 Jonathan Wakely <jwakely@redhat.com>
2651
1715824b 2652 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
2653 test failures on targets with 32-bit time_t.
2654
f5529091 2655 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
2656 * include/std/deque: Likewise.
2657 * include/std/forward_list: Likewise.
2658 * include/std/list: Likewise.
2659 * include/std/string: Likewise.
2660 * include/std/vector: Likewise.
2661 * include/std/version: Likewise.
2662 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
2663 * testsuite/23_containers/deque/erasure.cc: Likewise.
2664 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
2665 * testsuite/23_containers/list/erasure.cc: Likewise.
2666 * testsuite/23_containers/map/erasure.cc: Likewise.
2667 * testsuite/23_containers/set/erasure.cc: Likewise.
2668 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2669 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
2670 * testsuite/23_containers/vector/erasure.cc: Likewise.
2671
cbbb35ec 2672 * include/experimental/internet [AI_NUMERICSERV]
2673 (resolver_base::numeric_service): Define conditionally.
2674 * testsuite/experimental/net/internet/resolver/base.cc: Test it
2675 conditionally.
2676 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2677 Likewise.
2678
ac9a8436 26792019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
2680 Jonathan Wakely <jwakely@redhat.com>
2681
2682 Implement LWG 2221
2683 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
2684 (GLIBCXX_3.4.26): Add new exports.
2685 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
2686 correct list of sources.
2687 * include/Makefile.in: Regenerate.
2688 * include/std/ostream (operator<<(nullptr_t)): New member function.
2689 * src/c++17/ostream-inst.cc: New file.
2690 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
2691 test.
2692
5f027941 26932019-01-10 Jonathan Wakely <jwakely@redhat.com>
2694
2695 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
2696 of the source file containing the caller.
2697 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
2698 directories created by test.
2699 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
2700 Likewise.
2701 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
2702 Likewise.
2703 * testsuite/experimental/filesystem/iterators/
2704 recursive_directory_iterator.cc: Likewise.
2705
3273d2e6 27062019-01-10 Jakub Jelinek <jakub@redhat.com>
2707
2708 PR tree-optimization/88775
2709 * include/bits/stl_function.h (greater<_Tp*>::operator(),
2710 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
2711 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
2712 instead of __builtin_constant_p if available. Don't bother with
2713 the pointer comparison in C++11 and earlier.
2714
f4d3c071 27152019-01-09 Sandra Loosemore <sandra@codesourcery.com>
2716
2717 PR other/16615
2718
2719 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
2720 with "cannot".
2721
8eba10af 27222019-01-09 Jonathan Wakely <jwakely@redhat.com>
2723
6a6ade9f 2724 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
2725 for filesystem::path. Give variables more distinctive names.
2726
41cda271 2727 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
2728 member function to perform non-trivial assignment.
2729 (_Optional_payload_base::_M_move_assign): Likewise.
2730 (_Optional_payload<T, true, false, true>::operator=)
2731 (_Optional_payload<T, true, true, false>::operator=)
2732 (_Optional_payload<T, true, false, false>::operator=): Call
2733 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
2734
8eba10af 2735 PR libstdc++/88204
2736 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
2737 test std::complex<long double> if long double format is IBM128.
2738 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
2739 Likewise.
2740
64a50f48 27412019-01-08 Jonathan Wakely <jwakely@redhat.com>
2742
73f3ad16 2743 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
2744 for old std::unique_ptr layout.
2745 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
2746 to become valueless. Add filesystem::path tests.
2747
58e897da 2748 PR libstdc++/87855
2749 * include/std/optional (_Optional_payload_base): New class template
2750 for common code hoisted from _Optional_payload specializations. Use
2751 a template for the union, to allow a partial specialization for
2752 types with non-trivial destructors. Add constructors for in-place
2753 initialization to the union.
2754 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
2755 to perform non-trivial copy construction, instead of relying on
2756 non-standard copy elision in a delegating constructor.
2757 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
2758 non-trivial move construction.
2759 (_Optional_payload): Derive from _Optional_payload_base and use it
2760 for everything except the non-trivial assignment operators, which are
2761 defined as needed.
2762 (_Optional_payload<false, C, M>): Derive from the specialization
2763 _Optional_payload<true, false, false> and add a destructor.
2764 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
2765 Forward to corresponding members of _Optional_payload.
2766 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
2767 Hoist common members from _Optional_base.
2768 (_Optional_base): Make all members and base class public.
2769 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
2770 _Optional_base_impl.
2771 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
2772 support for new std::optional layout.
2773 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
2774
64a50f48 2775 PR libstdc++/88066
2776 * include/bits/locale_conv.h: Use <> for includes not "".
2777 * include/ext/random: Likewise.
2778 * include/ext/vstring.h: Likewise.
2779
95b40931 27802019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2781
2782 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
2783 (GLIBCXX_3.4.21): Likewise.
2784
fa00ec77 27852019-01-08 Jonathan Wakely <jwakely@redhat.com>
2786
2787 PR libstdc++/88749
2788 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
2789 to match the one that controls whether utimbuf and utime are declared.
2790
3f304b2d 27912019-01-07 Jonathan Wakely <jwakely@redhat.com>
2792
fc6ac813 2793 PR libstdc++/87787
2794 * include/bits/char_traits.h (char_traits::move): Do not pass null
2795 pointers to memmove.
2796 * include/bits/locale_facets.h
2797 (ctype<char>::widen(const char*, const char*, char*)): Do not
2798 pass null pointers to memcpy.
2799 (ctype<char>::narrow(const char*, const char*, char, char*)):
2800 Likewise.
2801 (ctype<char>::do_widen(const char*, const char*, char*)):
2802 Likewise.
2803 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
2804 Likewise.
2805
bbc66c45 2806 * doc/xml/manual/spine.xml: Update copyright years.
2807 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
2808 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
2809 for C++17 filesystem library.
2810 * doc/html/*: Regenerate.
2811
3f304b2d 2812 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
2813 * config.h.in: Regenerate.
2814 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
2815 alphabetically and add missing entries for copy_symlink,
2816 hard_link_count, rename, and resize_file.
2817 * configure: Regenerate.
2818 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
2819 used unconditionally.
2820 * src/filesystem/ops-common.h (__gnu_posix::truncate)
2821 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
2822 supports truncating to zero length.
2823 * testsuite/27_io/filesystem/operations/all.cc: New test.
2824 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
2825
0ebb0980 28262019-01-06 Jonathan Wakely <jwakely@redhat.com>
2827
3935f409 2828 PR libstdc++/86756
2829 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
2830 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
2831 * config.h.in: Regenerate.
2832 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
2833 remaining std::filesystem types and functions.
2834 * configure: Regenerate.
2835 * src/c++17/Makefile.am: Add C++17 filesystem sources.
2836 * src/c++17/Makefile.in: Regenerate.
2837 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
2838 here, and change name of included file.
2839 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
2840 here, and change name of included file.
2841 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
2842 path to dir-common.h.
2843 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
2844 path to ops-common.h. Disable -Wunused-parameter warnings.
2845 (internal_file_clock): Define unconditionally.
2846 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
2847 define.
2848 (do_copy_file, do_space): Move definitions to ops.common.h.
2849 (copy, file_size, hard_link_count, last_write_time, space): Only
2850 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
2851 report an error.
2852 (last_write_time, read_symlink): Remove unused attributes from
2853 parameters.
2854 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
2855 * src/filesystem/Makefile.in: Regenerate.
2856 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
2857 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
2858 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
2859 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
2860 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
2861 dummy types and functions instead of using #error.
2862 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
2863 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
2864 in terms of stat.
2865 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
2866 (do_copy_file, do_space): Move definitions here from std-ops.cc.
2867 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
2868 to account for new namespace.
2869 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
2870 -lstdc++fs from dg-options.
2871 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
2872 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
2873 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
2874 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
2875 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
2876 Likewise.
2877 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
2878 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
2879 Likewise.
2880 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
2881 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
2882 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
2883 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
2884 * testsuite/27_io/filesystem/operations/create_directories.cc:
2885 Likewise.
2886 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
2887 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
2888 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
2889 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
2890 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
2891 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
2892 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
2893 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
2894 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
2895 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
2896 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
2897 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
2898 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
2899 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
2900 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
2901 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
2902 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
2903 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2904 Likewise.
2905 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
2906
2907
c6e37a9f 2908 PR libstdc++/86756
2909 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
2910 typeinfo and vtables less greedy.
2911 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
2912 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
2913 * src/c++17/Makefile.in: Regenerate.
2914 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
2915 here, and change name of included file.
2916 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
2917 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
2918 from sources.
2919 * src/filesystem/Makefile.in: Regenerate.
2920 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
2921 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
2922 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
2923 from dg-options and remove dg-require-filesystem-ts.
2924 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
2925 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
2926 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
2927 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
2928 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
2929 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
2930 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
2931 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
2932 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
2933 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
2934 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
2935 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
2936 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
2937 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
2938 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
2939 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
2940 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
2941 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
2942 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
2943 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
2944 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
2945 Likewise.
2946 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
2947 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
2948 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
2949 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
2950 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
2951 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
2952 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
2953 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
2954 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
2955 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
2956 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
2957 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
2958 Likewise.
2959 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
2960 Likewise.
2961 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
2962 Likewise.
2963 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
2964 Likewise.
2965 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
2966 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
2967 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
2968 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
2969 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
2970 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
2971 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
2972 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
2973 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
2974 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
2975 Likewise.
2976 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
2977 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
2978 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
2979 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
2980 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
2981
8815ac91 2982 PR libstdc++/87431
2983 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
2984 Check is_trivially_copyable instead of is_scalar.
2985 (variant::emplace<N, Args>(Args&&...)): If construction of the new
2986 contained value can throw and its type is trivially copyable then
2987 construct into a temporary variant and move from it, to provide the
2988 strong exception safety guarantee.
2989 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
2990 Likewise.
2991 * testsuite/20_util/variant/87431.cc: New test.
2992 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
2993 conversion causes valueless state.
2994
0ebb0980 2995 PR libstdc++/88607
2996 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
2997 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
2998 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
2999 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
3000 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
3001
adc6beee 30022019-01-05 Jonathan Wakely <jwakely@redhat.com>
3003
3004 * include/bits/fs_fwd.h (__file_clock): Define new clock.
3005 (file_time_type): Redefine in terms of __file_clock.
3006 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
3007 overflow.
3008 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
3009 internal linkage.
3010 (internal_file_lock): New helper type for accessing __file_clock.
3011 (do_copy_file): Use internal_file_lock to convert system time to
3012 file_time_type.
3013 (last_write_time(const path&, error_code&)): Likewise.
3014 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
3015
6b4a77f2 30162019-01-04 Jonathan Wakely <jwakely@redhat.com>
3017
98185b9f 3018 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
3019 for const member functions of std::basic_string.
3020 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
3021 in C++17.
3022 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
3023 Make non-standard constructor private.
3024 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
3025 Likewise.
3026 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
3027 explicit instantiations for C++17 as well as earlier dialects.
3028 * src/c++17/Makefile.am: Add new source files.
3029 * src/c++17/Makefile.in: Regenerate.
3030 * src/c++17/cow-string-inst.cc: New file defining explicit
3031 instantiations for basic_string member functions added in C++17.
3032 * src/c++17/string-inst.cc: Likewise.
3033
859e6fed 3034 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
3035 copy/move constructors for old std::basic_string.
3036 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3037 (basic_string::reference, basic_string::const_reference): Define
3038 as plain references for C++11 and later.
3039 (basic_string::basic_string()): Put constructor body outside
3040 preprocessor conditional groups.
3041 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
3042 instead of copying it.
3043 (basic_string::basic_string(const basic_string&, const _Alloc&)):
3044 Define.
3045 (basic_string::basic_string(basic_string&&, const _Alloc&)):
3046 Define.
3047 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
3048 cases for old basic_string.
3049 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
3050 allocator-extended constructors unconditionally. Add extra members to
3051 allocator type when using old string ABI.
3052 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
3053 for old string ABI.
3054 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
3055
e13f6a7f 3056 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
3057 -fno-inline added to test flags.
3058
a18fccd0 3059 * testsuite/21_strings/basic_string/requirements/
3060 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
3061
7f77ca07 3062 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
3063 assertion failures with old std::string ABI.
3064
9346fb0e 3065 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
3066 with ...
3067 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
3068 functions that will only erase elements at the end.
3069 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
3070 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
3071 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
3072 of erase(p, end()).
3073 (path::_List::pop_back()): Define.
3074 (path::_List::_M_erase_from(const_iterator)): Define.
3075 (path::operator/=(const path&)): Use pop_back to remove last component
3076 and _M_erase_from to remove multiple components.
3077 (path::_M_append(basic_string_view<value_type>)): Likewise.
3078 (path::operator+=(const path&)): Likewise.
3079 (path::_M_concat(basic_string_view<value_type>)): Likewise.
3080 (path::remove_filename()): Likewise.
3081 (path::lexically_normal()): Use _List::_Impl iterators instead of
3082 path::iterator. Use pop_back to remove components from the end. Clear
3083 trailing filename, instead of using erase(const_iterator) to remove
3084 a non-final component.
3085 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
3086 additional cases.
3087 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
3088
24230cab 3089 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
3090 incorrect treatment of empty filename after trailing slash.
3091 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
3092
6b4a77f2 3093 * testsuite/21_strings/basic_string/modifiers/assign/char/
3094 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
3095 to test flags.
3096 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
3097 move_assign_optim.cc: Likewise.
3098
02df5941 30992019-01-03 Jonathan Wakely <jwakely@redhat.com>
3100 Jakub Jelinek <jakub@redhat.com>
3101
3102 PR libstdc++/88607
3103 * include/experimental/memory: Replace UTF-8 quote characters.
3104 * include/std/future: Replace UTF-8 "em dash" characters.
3105
f8ad40d8 31062019-01-03 Jonathan Wakely <jwakely@redhat.com>
3107
9013258b 3108 PR libstdc++/88607
3109 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
3110 * include/debug/forward_list: Likewise.
3111 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
3112 character.
3113 * include/experimental/chrono: Likewise.
3114 * include/experimental/functional: Likewise.
3115 * include/experimental/ratio: Likewise.
3116 * include/experimental/system_error: Likewise.
3117 * include/experimental/tuple: Likewise.
3118 * include/experimental/type_traits: Likewise.
3119 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
3120 * include/parallel/multiseq_selection.h: Likewise.
3121
f8ad40d8 3122 PR libstdc++/88681
3123 * config/abi/pre/gnu.ver: Add missing exports.
3124 * testsuite/22_locale/collate_byname/88681.cc: New test.
3125 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
3126 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
3127
138292f4 31282019-01-02 Jonathan Wakely <jwakely@redhat.com>
3129
553d41a8 3130 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
3131 initializer_list<value_type> and from input iterator ranges.
3132 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
3133
138292f4 3134 * testsuite/experimental/string_view/element_access/char/empty.cc:
3135 Fix year range in copyright header.
3136
963c0125 31372019-01-02 Joel Brobecker <brobecker@adacore.com>
3138
3139 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
3140 Fix year range in copyright header.
3141
fbd26352 31422019-01-01 Jakub Jelinek <jakub@redhat.com>
d353bf18 3143
3144 Update copyright years.
fb96fbb3 3145\f
fbd26352 3146Copyright (C) 2019 Free Software Foundation, Inc.
fb96fbb3 3147
3148Copying and distribution of this file, with or without modification,
3149are permitted in any medium without royalty provided the copyright
3150notice and this notice are preserved.