]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
/cp
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
db1349a6 12019-04-26 Jakub Jelinek <jakub@redhat.com>
2
3 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
4 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
5 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
6 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
7 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
8 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
9 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
10
f0a82465 112019-04-25 Jonathan Wakely <jwakely@redhat.com>
12
13 PR libstdc++/90239
14 * doc/xml/manual/status_cxx2020.xml: Amend P0591R4 status.
15 * include/std/scoped_allocator [__cplusplus > 201703L]
16 (scoped_allocator_adaptor::construct): Define in terms of
17 uses_allocator_construction_args, as per P0591R4.
18 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc: New test.
19 * testsuite/util/testsuite_allocator.h: Remove name of unused
20 parameter.
21
fd1863e1 222019-04-24 Jonathan Wakely <jwakely@redhat.com>
23
9ed11778 24 * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
25 * doc/html/*: Regenerate.
26
39b59bb9 27 * include/bits/fs_path.h (operator<, operator<=, operator>)
28 (operator>=, operator==, operator!=): Make hidden friends, as per
29 LWG 3065.
30 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Fix
31 string type in test.
32 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
33
dd3b7006 34 * include/std/any (any::any(ValueType&&)): Use __and_v.
35 * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
36 Likewise.
37
14710c9d 38 * include/std/tuple (apply): Use remove_reference_t instead of decay_t
39 as per P0777R1.
40 * include/std/type_traits (__result_of_memfun): Use remove_reference
41 instead of __remove_cvref_t and remove redundant is_same check.
42 (__inv_unwrap): Use __remove_cvref_t instead of decay_t.
43
809f1d63 44 * include/experimental/string_view (basic_string_view::pointer)
45 (basic_string_view::reference): Fix to refer to non-const value_type.
46 * include/bits/basic_string.h (basic_string): Use __sv_check and
47 __sv_limit instead of basic_string_view::_M_check and
48 basic_string_view::_M_limit.
49 * include/std/string_view (__sv_check, __sv_limit): New
50 helper functions to replace basic_string_view::_M_check and
51 basic_string_view::_M_limit.
52 (basic_string_view): Add static assertions to enforce ill-formed
53 requirement for traits_type::char_type from P1148R0, and to enforce
54 required properties of char-like types.
55 (basic_string_view::pointer, basic_string_view::reference): Fix to
56 refer to non-const value_type.
57 (basic_string_view::operator[], basic_string_view::at)
58 (basic_string_view::front, basic_string_view::back)
59 (basic_string_view::data): Use const_reference and const_pointer
60 typedefs for return types.
61 (basic_string_view::_M_check, basic_string_view::_M_limit): Remove.
62 (hash<wstring_view>): Fix argument_type typedef.
63 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
64 char/1.cc: Fix expected return type of basic_string_view::data().
65 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
66 wchar_t/1.cc: Likewise.
67 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
68 char/1.cc: Likewise.
69 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
70 wchar_t/1.cc: Likewise.
71 * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
72 New test.
73 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
74 Check reference and pointer typedefs.
75 * testsuite/experimental/string_view/requirements/typedefs.cc:
76 Likewise.
77 * testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc:
78 Fix expected return type of basic_string_view::data().
79 * testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/
80 1.cc: Likewise.
81 * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
82 Likewise.
83 * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
84 1.cc: Likewise.
85
37020b0a 86 PR libstdc++/90220
87 * include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
88 Avoid a runtime check for types that can never be stored in std::any.
89 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
90 array types.
91
b8e73341 92 PR libstdc++/90220 (partial)
93 * include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
94 not attempt ill-formed static_cast to pointers to non-object types.
95 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
96 function types.
97
1c9c8e0d 98 * testsuite/20_util/variant/run.cc: Catch exception by reference to
99 prevent -Wcatch-value warning.
100
fd1863e1 101 * include/std/variant (__variant_construct): Use template parameter
102 type instead of equivalent decltype-specifier.
103 (_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
104 Replace forward with move.
105 (_Move_ctor_base<false, Types...>::_M_destructive_move)
106 (_Move_ctor_base<false, Types...>::_M_destructive_copy)
107 (_Move_ctor_base<true, Types...>::_M_destructive_move)
108 (_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
109 index after construction succeeds.
110 (_Copy_assign_base<false, Types...>::operator=): Remove redundant
111 if-constexpr checks that are always true. Use __remove_cvref_t instead
112 of remove_reference so that is_nothrow_move_constructible check
113 doesn't use a const rvalue parameter. In the potentially-throwing case
114 construct a temporary and move assign it, as per LWG 2904.
115 (_Move_assign_base<false, Types...>::operator=): Remove redundant
116 if-constexpr checks that are always true. Use emplace as per LWG 2904.
117 (variant::operator=(T&&)): Only use emplace conditionally, otherwise
118 construct a temporary and move assign from it, as per LWG 2904.
119 * testsuite/20_util/variant/exception_safety.cc: Check that
120 assignment operators have strong exception safety guarantee.
121
55bb4515 1222019-04-23 Thomas Rodgers <trodgers@redhat.com>
123
124 Document PSTL linker flags
125
7f6a1a9c 126 * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
55bb4515 127
b48cc8c5 1282019-04-23 Jonathan Wakely <jwakely@redhat.com>
129
a4265b66 130 * include/std/variant (__detail::__variant::_Traits): Make
131 _S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
132 _S_trivial_move_assign depend on _S_trivial_move_ctor, as per
133 P0602R4.
134 (__detail::__variant::_Copy_assign_alias): Only depend on
135 _S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
136 * testsuite/20_util/variant/compile.cc: Correct checks for trivial
137 move assignment operators.
138
28cc38ec 139 PR libstdc++/90165
140 * include/std/variant (variant::__not_self): New helper for the
141 is_same_v<remove_cvref_t<T>, variant>==false constraints.
142 (variant::__to_type_impl): Remove.
143 (variant::__to_type): Add default argument to check pack size, instead
144 of using __to_type_impl.
145 (variant::__accepted_type): Add default argument using __not_self.
146 (variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
147 for variant(T&&) constructor constraint.
148 (variant::variant(T&&)): Use __not_in_place_tag in constraints.
149 Extract __accepted_type into a named template parameter for reuse in
150 other constraints and in the exception specification.
151 (variant::variant(in_place_type_t<T>, Args&&...))
152 (variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
153 (variant::variant(in_place_index_t<T>, Args&&...))
154 (variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
155 (variant::operator=T&&)): Remove redundant && from trait arguments.
156 * testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
157 isn't used for in_place_type or in_place_index arguments.
158
b48cc8c5 159 * include/std/type_traits (unwrap_reference_t): Define for C++2a.
160 (unwrap_ref_decay): Remove inheritance from unwrap_reference.
161 * testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.
162
9ac9ee83 1632019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
164 Bernd Edlinger <bernd.edlinger@hotmail.de>
165 Jakub Jelinek <jakub@redhat.com>
166
167 PR target/89093
168 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
169 general-regs-only target attribute for ARM.
170
e11f5aed 1712019-04-23 Jonathan Wakely <jwakely@redhat.com>
172
b9d8292f 173 PR libstdc++/87431
174 * include/bits/basic_string.h (_Never_valueless_alt): Make partial
175 specialization also depend on is_nothrow_move_constructible.
176 * include/std/variant (__detail::__variant::__never_valueless()):
177 Only true if the variant would have a move assignment operator.
178 (__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
179 Check __never_valueless<T...>().
180 (variant::emplace): Only perform non-throwing move assignments
181 for never-valueless alternatives if the variant has a move assignment
182 operator.
183 * testsuite/20_util/variant/compile.cc: Check that never-valueless
184 types can be emplaced into non-assignable variants.
185 * testsuite/20_util/variant/run.cc: Check that never-valueless types
186 don't get copied when emplaced into non-assignable variants.
187
e11f5aed 188 * include/std/variant (__detail::__variant::__ref_cast): Remove
189 unused function.
190 (__detail::__variant::_Uninitialized::_M_get)
191 (__detail::__variant::__get)
192 (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
193
46fbb8aa 1942019-04-21 Iain Sandoe <iain@sandoe.co.uk>
195
196 * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
197 to Darwin10.
198 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
199 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
200 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
201 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
202
dff3f73c 2032019-04-20 Thomas Rodgers <trodgers@redhat.com>
204
205 Delegate PSTL configuration to pstl/pstl_config.h
206
207 * include/bits/c++config: Remove explicit PSTL configuration
208 macros and use definitions from <pstl/pstl_config.h>.
209
3dbad48e 2102019-04-20 Thomas Rodgers <trodgers@redhat.com>
211
212 Cleanup algorithm implementations
213 * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
ed42fdb5 214 execution policy.
3dbad48e 215 (mismatch): Forward execution policy.
216 (equal): Qualify call to std::equal().
217 (partial_sort): Forward execution policy.
218 (inplace_merge): Forward execution policy.
219
5d637ddd 2202019-04-19 Thomas Rodgers <trodgers@redhat.com>
221
222 Improve implementation of parallel equal()
223 * include/pstl/algorithm_impl.h
224 (__internal::__brick_equal): use "4 iterator" version of
225 std::equal().
226 (__internal::__brick_equal): use simd for random access
227 iterators on unsequenced execution policies.
228 (__internal::__pattern_equal): add "4 iterator" version
229 (__internal::__pattern_equal): dispatch to simd __brick_equal
230 for vector-only execution policies.
231 (__internal::__pattern_equal): dispatch to __parallel_or for
232 parallel execution policies.
233 * include/pstl/glue_algorithm_impl.h
234 (std::equal): dispatch to "4 iterator" version of
235 __internal::__pattern_equal().
236
88dbeb04 2372019-04-17 Jonathan Wakely <jwakely@redhat.com>
238
a0295ab5 239 PR libstdc++/90105
240 * include/bits/forward_list.h (operator==): Do not use operator!= to
241 compare elements.
242 (forward_list<T, A>::sort(Comp)): When elements are equal take the one
243 earlier in the list, so that sort is stable.
244 * testsuite/23_containers/forward_list/operations/90105.cc: New test.
245 * testsuite/23_containers/forward_list/comparable.cc: Test with
246 types that meet the minimum EqualityComparable and LessThanComparable
247 requirements. Remove irrelevant comment.
248
37a7dbf9 249 * include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
250 Do not depend on whether all alternative types are move constructible.
251 (__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
252 from the operand when deciding whether to perform the assignment.
253 * testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
254 with deleted move constructor and deleted move assignment operator.
255 (default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
256 behaviour of variants with DeletedMoves as an alternative.
257 * testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
258 (move_ctor, move_assign): Check that moving a variant with a
259 DeletedMoves alternative falls back to copying instead of moving.
260
e9a490a4 261 * testsuite/20_util/variant/compile.cc: Remove empty string literals
262 from static_assert declarations.
263
c4495ab1 264 * testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
265 actually match its name.
266 (MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
267 (test_swap()): Fix result for MoveCtorOnly and check
268 MoveCtorAndSwapOnly.
269
88dbeb04 270 * include/std/optional (optional::value_or(U&&) &&): Add missing
271 constexpr specifier.
272 * testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
273 for disengaged optionals and rvalue optionals.
274 * testsuite/20_util/optional/observers/4.cc: Likewise.
275
11deac81 2762019-04-12 Thomas Rodgers <trodgers@redhat.com>
277
278 * include/pstl/algorithm_impl.h: Uglify identfiers.
279 * include/pstl/numeric_impl.h: Uglify identfiers.
280 * include/pstl/parallel_backend_tbb.h: Uglify identfiers.
281
34d8d757 2822019-04-11 Thomas Rodgers <trodgers@redhat.com>
283
284 * include/bits/c++config:
285 Add definition for __PSTL_ASSERT.
286 Add definition for __PSTL_ASSERT_MSG.
287 * include/pstl/algorithm_impl.h: Replace use of assert().
288 * include/pstl/numeric_impl.h: Replace use of assert().
289 * include/pstl/parallel_backend_tbb.h:
290 Replace use of assert().
291 Replace use of __TBB_ASSERT().
34d8d757 292 * include/pstl/parallel_backend_utils.h: Replace use of assert().
293
629a2d18 2942019-04-11 Jonathan Wakely <jwakely@redhat.com>
295
296 PR libstdc++/90046
297 * src/c++17/memory_resource.cc
298 (monotonic_buffer_resource::_Chunk::allocate): Increase alignment if
299 needed to allow placing a _Chunk at the end of the buffer.
300 (monotonic_buffer_resource::_M_new_buffer): Remove static_assert.
301
b047c9ae 3022019-04-10 Jonathan Wakely <jwakely@redhat.com>
303
6a98b075 304 * doc/xml/faq.xml: Add information about emergency EH pool.
305 * doc/xml/manual/debug.xml: Update list of memory debugging tools.
306 Move outdated information on mt_allocator to a separate section.
307 * doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW
308 doesn't affect the default allocator.
309
706bf2a5 310 * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
311 typo.
312
b047c9ae 313 PR libstdc++/89851
314 * testsuite/20_util/variant/89851.cc: New test.
315
faa382bd 3162019-04-09 Jonathan Wakely <jwakely@redhat.com>
317
492debfa 318 * include/std/variant: Adjust whitespace. Add comments.
319 (_Multi_array): Leave primary template undefined.
320 (_Multi_array<_Tp>): Define partial specialization for base case of
321 recursion.
322 (__gen_vtable_impl, __gen_vtable): Remove redundant && from type
323 which is always a reference.
324 (__gen_vtable::_S_apply()): Remove function, inline body into
325 default member initializer.
326 * testsuite/20_util/variant/visit.cc: Test with noncopyable types.
327
47cf9c4c 328 * include/std/variant (__variant_idx_cookie): Add member type.
329 (__visitor_result_type): Remove.
330 (__do_visit): Use invoke_result instead of __visitor_result_type.
331 * testsuite/20_util/variant/visit.cc: New test.
332
faa382bd 333 PR libstdc++/90008
334 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
335 unused capture.
336 * testsuite/20_util/variant/90008.cc: New test.
337
e4da4897 3382019-04-09 Thomas Rodgers <trodgers@redhat.com>
339
340 * include/pstl/algorithm_impl.h: Add namespace qualification.
341 * include/pstl/execution_defs.h: Add namespace qualification.
342 * include/pstl/execution_impl.h: Add namespace qualification.
343 * include/pstl/numeric_impl.h: Add namespace qualification.
344 * include/pstl/parallel_backend_tbb.h: Add namespace qualification.
345 * include/pstl/unseq_backend_simd.h: Add namespace qualification.
346 * include/pstl/parallel_backend_utils.h: Include <cassert>.
347
ff7d433d 3482019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
349
350 Fix visit<R> for variant.
351 * include/std/variant (__do_visit): Add a template parameter
352 for enforcing same return types for visit.
353 (__gen_vtable_impl): Likewise.
354 (_S_apply_single_alt): Adjust.
355 (__visit_invoke_impl): New. Handle casting to void.
356 (__do_visit_invoke): New. Enforces same return types.
357 (__do_visit_invoke_r): New. Converts return types.
358 (__visit_invoke): Adjust.
359 (__gen_vtable): Add a template parameter for enforcing
360 same return types for visit.
361 * testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
362 different return types.
363 * testsuite/20_util/variant/visit_neg.cc: New. Ensures that
364 visitors with different return types don't accidentally
365 compile with regular visitation.
366
d0f56531 3672019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
368
369 * testsuite/27_io/filesystem/iterators/caching.cc: Add
370 dg-require-filesystem-ts.
371
781cb64d 3722019-04-05 Jonathan Wakely <jwakely@redhat.com>
373
bfbd20f7 374 * doc/xml/manual/status_cxx2020.xml: Update status.
375 * include/std/variant (visit<R>): Define for C++2a (P0655R1).
376 * testsuite/20_util/variant/visit_r.cc: New test.
377
83bd31bf 378 * include/bits/fs_dir.h (directory_iterator::operator*)
379 (directory_iterator::operator->): Add noexcept.
380 (operator==, operator!=): Replace namespace-scope equality operators
381 for directory iterators with hidden friends.
382
0067a809 383 PR libstdc++/89986
384 * config/abi/pre/gnu.ver: Add missing exports.
385 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
386 increment member.
387
7d0ae205 388 * config/abi/pre/gnu.ver: Export new symbols.
389 * include/bits/fs_dir.h (recursive_directory_iterator::options())
390 (recursive_directory_iterator::recursion_pending())
391 (recursive_directory_iterator::disable_recursion_pending()): Remove
392 inline definitions. Make noexcept.
393 (recursive_directory_iterator::depth())
394 (recursive_directory_iterator::operator*())
395 (recursive_directory_iterator::operator->()): Make noexcept.
396 (recursive_directory_iterator::_M_options)
397 (recursive_directory_iterator::_M_pending): Remove data members.
398 * src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
399 (recursive_directory_iterator::recursive_directory_iterator): Remove
400 ctor-initializer. Use new constructor for _Dir_stack.
401 (recursive_directory_iterator::options())
402 (recursive_directory_iterator::recursion_pending())
403 (recursive_directory_iterator::disable_recursion_pending()): Add
404 non-inline definitions.
405 (recursive_directory_iterator::depth()): Make noexcept.
406 (recursive_directory_iterator::increment(error_code&))
407 (recursive_directory_iterator::pop(error_code&)): Adjust to new
408 location of options and recursion_pending members.
409 * testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
410 * testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
411 user-declared move constructor and assignment operator, to make the
412 type move-only.
413
5a6e0b73 414 * src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
415 d_type == DT_UNKNOWN immediately.
416 (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
417 handling here.
418 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
419
aa9c570e 420 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
421 assignment.
422 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
423 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
424 assignment.
425
781cb64d 426 PR libstdc++/87431 (again)
427 * include/bits/basic_string.h (__variant::_Never_valueless_alt):
428 Define partial specialization for basic_string.
429 * include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
430 shared_ptr and weak_ptr.
431 * include/bits/std_function.h (_Never_valueless_alt): Likewise for
432 function.
433 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
434 vector.
435 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
436 unique_ptr.
437 * include/debug/vector (_Never_valueless_alt): Likewise for debug
438 vector.
439 * include/std/any (_Never_valueless_alt): Define explicit
440 specialization for any.
441 * include/std/variant (_Never_valueless_alt): Define primary template.
442 (__never_valueless): Use _Never_valueless_alt instead of
443 is_trivially_copyable.
444 (variant::emplace<N>(Args&&...)): Add special case for non-throwing
445 initializations to avoid try-catch overhead. Add special case for
446 scalars produced by potentially-throwing conversions. Use
447 _Never_valueless_alt instead of is_trivially_copyable for the
448 remaining strong exception-safety cases.
449 (variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
450 * testsuite/20_util/variant/87431.cc: Run both test functions.
451 * testsuite/20_util/variant/exception_safety.cc: New test.
452 * testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
453 so the variant becomes valueless.
454
62fd39e8 4552019-04-03 Jonathan Wakely <jwakely@redhat.com>
456
e1d699b8 457 PR libstdc++/85184
458 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
459 Remove assertions.
72be2bb7 460 (variant::emplace<_Tp>): Return result of emplace<N> directly.
e1d699b8 461
62fd39e8 462 * include/std/string (__hash_string_base): New class template defining
463 operator() for hashing strings.
464 (hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
465 (hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
466 * testsuite/21_strings/basic_string/hash/hash.cc: New test.
467 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.
468
4f3e024d 4692019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
470
471 Use single-visitation in variant assignment and swap and relops.
472 Also use indices instead of types when checking whether
473 variants hold the same thing.
474 * include/std/variant (__do_visit): Add a template parameter
475 for index visitation, invoke with indices if index visitation
476 is used.
477 (__variant_idx_cookie): New.
478 (__visit_with_index): Likewise.
479 (_Copy_assign_base::operator=): Do single-visitation with
480 an index visitor.
481 (_Move_assign_base::operator=): Likewise.
482 (_Extra_visit_slot_needed): Adjust.
483 (__visit_invoke): Call with indices if it's an index visitor.
484 (relops): Do single-visitation with an index visitor.
485 (swap): Likewise.
486 (__visitor_result_type): New.
487
106979b7 4882019-03-30 Eric Botcazou <ebotcazou@adacore.com>
489
490 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
491
225ca87b 4922019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
493
494 Don't revisit a variant we are already visiting.
495 * include/std/variant (__variant_construct_single): New.
496 (__variant_construct): Use it.
497 (_M_destructive_move): Likewise.
498 (_M_destructive_copy): Likewise.
499 (_Copy_assign_base::operator=): Adjust.
500 (_Move_assign_base::operator=): Likewise.
501 (swap): Likewise.
502
7237dce7 5032019-03-26 Jonathan Wakely <jwakely@redhat.com>
504
505 PR libstdc++/85965
506 * include/bits/hashtable.h (_Hashtable): Move static assertions to
507 destructor so they are not evaluated until the _Key type is complete.
508 * include/bits/stl_tree.h (_Rb_tree): Likewise.
509 * testsuite/23_containers/set/85965.cc: New test.
510 * testsuite/23_containers/unordered_set/85965.cc: New test.
511 * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
512 with regexp matching the corresponding _Rb_tree specialization.
513 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
514 * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
515 * testsuite/23_containers/set/48101_neg.cc: Likewise.
516 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
517 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
518 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
519 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
520
4c0ef551 5212019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
522
523 PR libstdc++/89825
524 Fix based on a suggestion by Antony Polukhin.
525 * include/std/variant (__never_valueless): New.
526 (_M_valid): Use it.
527 (_Extra_visit_slot_needed): New.
528 (_Multi_array): Use it.
529 (_S_apply_all_alts): Likewise.
530
28b460dd 5312019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
532
533 PR libstdc++/89824
534 Fix based on a suggestion by Antony Polukhin.
535 * include/std/variant (__gen_vtable): Don't reserve an
536 additional table slot, _Multi_array already does that.
537
4d235dc5 5382019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
539
540 PR libstdc++/89816
541 Fix based on a suggestion by Antony Polukhin.
542 * include/std/variant (__variant_construct): Capture a pointer
543 to the storage and visit just one variant.
544
d0595c7e 5452019-03-22 Jonathan Wakely <jwakely@redhat.com>
546
5c34f7ca 547 * doc/xml/manual/backwards_compatibility.xml: Remove link to
548 Doxygen-generated pages with unstable URL.
549 * doc/xml/manual/concurrency_extensions.xml: Likewise.
550 * doc/xml/manual/extensions.xml: Likewise.
551 * doc/xml/manual/parallel_mode.xml: Likewise.
552 * doc/xml/manual/support.xml: Likewise.
553
d0595c7e 554 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
555 avoid -Wconversion warnings.
556
7e155e54 5572019-03-21 Thomas Rodgers <trodgers@redhat.com>
558
559 * include/Makefile.am (std_header): Add ${std_srcdir}/execution.
560 (pstl_srcdir, pstl_builddir, pstl_headers): New variables.
561 (allstamped): Add stamp-pstl.
562 (install-headers): Add ptsl_builddir.
563 * include/Makefile.in: Regenerate.
564 * include/bits/c++config: Add pstl configuration.
565 * include/pstl/LICENSE.txt: New file.
566 * include/pstl/algorithm_fwd.h: New file.
567 * include/pstl/algorithm_impl.h: New file.
568 * include/pstl/execution_defs.h: New file.
569 * include/pstl/execution_impl.h: New file.
570 * include/pstl/glue_algorithm_defs.h: New file.
571 * include/pstl/glue_algorithm_impl.h: New file.
572 * include/pstl/glue_execution_defs.h: New file.
573 * include/pstl/glue_memory_defs.h: New file.
574 * include/pstl/glue_memory_impl.h: New file.
575 * include/pstl/glue_numeric_defs.h: New file.
576 * include/pstl/glue_numeric_impl.h: New file.
577 * include/pstl/memory_impl.h: New file.
578 * include/pstl/numeric_fwd.h: New file.
579 * include/pstl/numeric_impl.h: New file.
580 * include/pstl/parallel_backend.h: New file.
581 * include/pstl/parallel_backend_tbb.h: New file.
582 * include/pstl/parallel_backend_utils.h: New file.
583 * include/pstl/parallel_impl.h: New file.
584 * include/pstl/pstl_config.h: New file.
585 * include/pstl/unseq_backend_simd.h: New file.
586 * include/pstl/utils.h: New file.
587 * include/std/algorithm: Include parallel algorithm implementations.
588 * include/std/execution: New file.
589 * include/std/memory: Include parallel algorithm implementations.
590 * include/std/numeric: Include parallel algorithm implementations.
591 * include/std/version: Add parallel algorithms feature test macro.
592 * testsuite/util/pstl/pstl_test_config.h: New file.
593 * testsuite/util/pstl/test_utils.h: New file.
594 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
595 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
596 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
597 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
598 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
599 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
600 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
601 * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
602 * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
603 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
604 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
605 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
606 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
607 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
608 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
609 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
610 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
611 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
612 * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
613 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
614 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
615 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
616 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
617 * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
618 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
619 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
620 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
621 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
622 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
623 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
624 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
625 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
626 * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
627 * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
628 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
629 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
630 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
631 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
632 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
633 * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
634 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
635 * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
636 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
637 * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
638 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
639 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
640 * testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
641 * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
642 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
643 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
644 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
645 * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
646 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
647 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
648 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
649 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
650 * testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
651 * testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
652 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
653 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
654 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
655 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
656 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
657 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
658 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
659 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
660 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
661 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
662 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
663 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
664 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
665 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
666 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
667 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
668 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
669 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
670 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
671 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
672 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
673 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
674 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
675 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
676 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
677 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
678 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
679 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
680 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
681 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
682 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
683 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
684 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
685 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
686 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
687 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
688 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
689 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
690 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
691 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
692 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
693 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
694 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
695 * testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
696 * testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
697 * testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
698 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
699 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
700
480b3b75 7012019-03-21 Jonathan Wakely <jwakely@redhat.com>
702
0a4390ac 703 * include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
704 (assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
705 (assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
706 (comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
707 (comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
708 (cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
709 (cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
710 (cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
711 (ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
712 (ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
713 (hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
714 (legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
715 (sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
716 (sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
717 when the special functions IS is enabled, not for C++17.
718 * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
719 Replace with ...
720 * testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
721 without checks for special functions in C++17.
722 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
723 New test.
724
480b3b75 725 PR libstdc++/88066
726 * include/backward/hash_map: Use <> for includes not "".
727 * include/backward/hash_set: Likewise.
728 * include/backward/strstream: Likewise.
729 * include/tr1/bessel_function.tcc: Likewise.
730 * include/tr1/exp_integral.tcc: Likewise.
731 * include/tr1/legendre_function.tcc: Likewise.
732 * include/tr1/modified_bessel_func.tcc: Likewise.
733 * include/tr1/riemann_zeta.tcc: Likewise.
734
ed360d55 7352019-03-19 Jonathan Wakely <jwakely@redhat.com>
736
737 * doc/xml/manual/allocator.xml: Link to table documenting evolution
738 of extension allocators.
739 * doc/xml/manual/evolution.xml: Use angle brackets for header names.
740 Document new headers in 7.2, 8.1 and 9.1 releases.
741 * doc/xml/manual/using.xml: Adjust link target for new_allocator.
742 * doc/html/*: Regenerate.
743
8f9d7eb1 7442019-03-12 John David Anglin <dave.anglin@bell.net>
745
746 PR libstdc++/89461
747 * testsuite/lib/libstdc++.exp: Locate libatomic.
748 * testsuite/lib/dg-options.exp (add_options_for_libatomic): New.
749 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
750 libatomic options.
751 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
752 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
753 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
754 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
755
0bd005b6 7562019-03-11 Jonathan Wakely <jwakely@redhat.com>
757
5995ba3a 758 PR libstdc++/89460
759 * configure.ac: Check for sockatmark.
760 * crossconfig.m4: Check for sockatmark.
761 * config.h.in: Regenerate.
762 * configure: Regenerate.
763 * include/experimental/internet (address_v4::_S_hton): Rename
764 overloaded functions to _S_hton_16 and _S_ntoh_16.
765 (address_v4::_S_ntoh): Rename to _S_ntoh_16 and _S_ntoh_32.
766 (basic_endpoint): Adjust calls to _S_hton and _S_ntoh.
767 * include/experimental/socket (basic_socket::at_mark): Check
768 _GLIBCXX_HAVE_SOCKATMARK.
769
5aa8571a 770 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
771 const variables instead of macros.
772
0bd005b6 773 PR libstdc++/89629
774 * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
775 Use correct type for len_aligned.
776 * testsuite/20_util/hash/89629.cc: New test.
777
bc204227 7782019-03-11 Jakub Jelinek <jakub@redhat.com>
779
780 PR libstdc++/89641
781 * include/std/atomic (atomic<T>::store, atomic<T>::load,
782 atomic<T>::exchange, atomic<T>::compare_exchange_weak,
783 atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
784 * include/bits/atomic_base.h (__atomic_base<T>::operator++,
785 __atomic_base<T>::operator--, __atomic_base<T>::operator+=,
786 __atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
787 __atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
788 __atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
789 __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
790 memory_order_seq_cst to int.
791
fc557c2b 7922019-03-08 Jonathan Wakely <jwakely@redhat.com>
793
59b5e890 794 * doc/xml/manual/using.xml: Use link element instead of xref.
795 * doc/html/*: Regenerate.
796
fc557c2b 797 * include/bits/fs_path.h (path::format): Add fixed underlying type.
798
66c6ff9e 7992019-03-08 François Dumont <fdumont@gcc.gnu.org>
800
448338d0 801 PR libstdc++/89477
802 * include/debug/map.h (map): Use _RequireNotAllocator to constrain
803 parameters in deduction guides.
804 * include/debug/multimap.h (multimap): Likewise.
805 * include/debug/set.h (multimap): Likewise.
806 * include/debug/multiset.h (multimap): Likewise.
807 * include/debug/unordered_map (unordered_map): Likewise.
808 (unordered_multimap): Likewise.
809 * include/debug/unordered_set (unordered_set): Likewise.
810 (unordered_multiset): Likewise.
811
66c6ff9e 812 PR libstdc++/89608
813 * include/debug/unordered_map (unordered_map<>::_M_check_rehashed):
814 Invalidate all iterators in case of rehash.
815 (unordered_multimap<>::_M_check_rehashed): Likewise.
816 * include/debug/unordered_set
817 (unordered_set<>::_M_check_rehashed): Likewise.
818 (unordered_multiset<>::_M_check_rehashed): Likewise.
819 * testsuite/23_containers/unordered_set/debug/89608_neg.cc: New.
820
32e92dc2 8212019-03-07 Andreas Schwab <schwab@suse.de>
822
823 * config/abi/post/riscv64-linux-gnu: New directory.
824 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
825
61dcf2e1 8262019-03-07 Jonathan Wakely <jwakely@redhat.com>
827
682ee94e 828 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
829 compile test to run. Fix typo.
830
f24442bd 831 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
832 * doc/html/*: Regenerate.
833
61dcf2e1 834 P0356R5 Simplified partial function application
835 * include/std/functional [C++20] (_Bind_front, _Bind_front_t): Define
836 helpers for bind_front.
837 (bind_front, __cpp_lib_bind_front): Define.
838 * testsuite/20_util/function_objects/bind_front/1.cc: New test.
839
b4af2395 8402019-03-06 Jonathan Wakely <jwakely@redhat.com>
841
842 * include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
843 * include/std/version (__cpp_lib_bounded_array_traits): Likewise.
844 * testsuite/20_util/is_bounded_array/value.cc: Check for macro.
845 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
846
f1857b8b 8472019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
848
849 PR libstdc++/86655 - std::assoc_legendre should not constrain
850 the value of m (or x).
851 * include/tr1/legendre_function.tcc (__assoc_legendre_p,
852 __sph_legendre): If degree > order Don't throw, return 0.
853 (__legendre_p, __assoc_legendre_p): Don't constrain x either.
854 * testsuite/special_functions/02_assoc_legendre/pr86655.cc: New test.
855 * testsuite/special_functions/20_sph_legendre/pr86655.cc: New test.
856 * testsuite/tr1/5_numerical_facilities/special_functions/
857 02_assoc_legendre/pr86655.cc: New test.
858 * testsuite/tr1/5_numerical_facilities/special_functions/
859 22_sph_legendre/pr86655.cc: New test.
860
49c83dca 8612019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
862
863 Rewrite variant.
864 Also PR libstdc++/85517
865 * include/std/variant (__do_visit): New.
866 (__variant_cast): Likewise.
867 (__variant_cookie): Likewise.
868 (__erased_*): Remove.
869 (_Variant_storage::_S_vtable): Likewise.
870 (_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
871 (_Variant_storage::__M_reset): Adjust.
872 (__variant_construct): New.
873 (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
874 __variant_construct.
875 (_Move_ctor_base(_Move_ctor_base&&)): Likewise.
876 (_Move_ctor_base::__M_destructive_copy): New.
877 (_Move_ctor_base::__M_destructive_move): Adjust to use
878 __variant_construct.
879 (_Copy_assign_base::operator=): Adjust to use __do_visit.
880 (_Copy_assign_alias): Adjust to check both copy assignment
881 and copy construction for triviality.
882 (_Move_assign_base::operator=): Adjust to use __do_visit.
883 (_Multi_array): Add support for visitors that accept and return
884 a __variant_cookie.
885 (__gen_vtable_impl::_S_apply_all_alts): Likewise.
886 (__gen_vtable_impl::_S_apply_single_alt): Likewise.
887 (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
888 a __variant_cookie temporary for a variant that is valueless and..
889 (__gen_vtable_impl::__visit_invoke): ..adjust here.
890 (__gen_vtable::_Array_type): Conditionally make space for
891 the __variant_cookie visitor case.
892 (__variant_construct_by_index): New.
893 (get_if): Adjust to use std::addressof.
894 (relops): Adjust to use __do_visit.
895 (variant): Add __variant_cast and __variant_construct_by_index
896 as friends.
897 (variant::emplace): Use _M_reset() and __variant_construct_by_index
898 instead of self-destruction.
899 (variant::swap): Adjust to use __do_visit.
900 (visit): Reimplement in terms of __do_visit.
901 (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
902 * testsuite/20_util/variant/compile.cc: Adjust.
903 * testsuite/20_util/variant/run.cc: Likewise.
904
13825fb2 9052019-03-06 Jonathan Wakely <jwakely@redhat.com>
906
2613fa6b 907 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
908 constant.
909 * testsuite/experimental/feat-char8_t.cc: Likewise.
910
a17f06b3 911 * include/std/type_traits [C++20] (is_bounded_array)
912 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
913 Define.
914 * testsuite/20_util/is_bounded_array/requirements/
915 explicit_instantiation.cc: New test.
916 * testsuite/20_util/is_bounded_array/requirements/typedefs.cc: New
917 test.
918 * testsuite/20_util/is_bounded_array/value.cc: New test.
919 * testsuite/20_util/is_unbounded_array/requirements/
920 explicit_instantiation.cc: New test.
921 * testsuite/20_util/is_unbounded_array/requirements/typedefs.cc: New
922 * test.
923 * testsuite/20_util/is_unbounded_array/value.cc: New test.
924
13825fb2 925 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
926 Add constexpr.
927 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
928
2e73e63a 9292019-03-05 Jonathan Wakely <jwakely@redhat.com>
930
931 * include/c_compatibility/math.h [C++20] (lerp): Add using
932 declaration.
933 * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define.
934 (__lerp): Define function template to implement lerp.
935 (lerp(float, float, float), lerp(double, double, double))
936 (lerp(long double, long double, long double)): Define for C++20.
937 * include/std/numeric [C++20] (__cpp_lib_interpolate): Define.
938 (midpoint(T, T), midpoint(T*, T*)): Define.
939 * include/std::version [C++20] (__cpp_lib_interpolate): Define.
940 * testsuite/26_numerics/lerp.cc: New test.
941 * testsuite/26_numerics/midpoint/floating.cc: New test.
942 * testsuite/26_numerics/midpoint/integral.cc: New test.
943 * testsuite/26_numerics/midpoint/pointer.cc: New test.
944
08d3ce5b 9452019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
946
947 PR libstdc++/88996 Implement P0439R0
948 Make std::memory_order a scoped enumeration.
949 * include/bits/atomic_base.h: For C++20 make memory_order a scoped enum,
950 add variables for the old enumerators. Adjust calls.
951 * testsuite/29_atomics/headers/atomic/types_std_c++2a.cc: New test.
952 * testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc: New test.
953
ad29ad75 9542019-03-04 Jonathan Wakely <jwakely@redhat.com>
955
4233f2a8 956 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
957 directive.
958
ad29ad75 959 * include/std/memory_resource (polymorphic_allocator): Add default
960 template argument for C++20.
961 (polymorphic_allocator::allocate_bytes)
962 (polymorphic_allocator::deallocate_bytes)
963 (polymorphic_allocator::allocate_object)
964 (polymorphic_allocator::deallocate_object)
965 (polymorphic_allocator::new_object)
966 (polymorphic_allocator::delete_object): New member functions for
967 C++20.
968 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
969 test.
970
d4c27c4a 9712019-03-03 Jonathan Wakely <jwakely@redhat.com>
972
973 PR libstdc++/89562
974 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
975 mode for mingw.
976
6a9c77f1 9772019-03-01 Jonathan Wakely <jwakely@redhat.com>
978
5b313df9 979 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
980 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
981
6a9c77f1 982 * include/std/memory (uses_allocator_construction_args): New set of
983 overloaded functions.
984 (make_obj_using_allocator, uninitialized_construct_using_allocator):
985 New functions.
986 * include/std/memory_resource (polymorphic_allocator::construct)
987 [__cplusplus > 201703l]: Replace all overloads with a single function
988 using uses_allocator_construction_args.
989 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: New
990 test.
991 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
992
53ea0887 9932019-02-27 Jonathan Wakely <jwakely@redhat.com>
994
995 PR libstdc++/89466
996 * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
997 stylesheet directories before check for xsltproc. Try to use
998 xmlcatalog to find local stylesheet directory before trying hardcoded
999 paths. Add path used by suse to hardcoded paths. Adjust xsltproc
1000 check to look for the same stylesheet as doc/Makefile.am uses. Don't
1001 use xsltproc if xmlcatalog fails to find a local stylesheet.
1002 * configure.ac: Check for xmlcatalog.
1003 * Makefile.in: Regenerate.
1004 * configure: Likewise.
1005 * doc/Makefile.in: Likewise.
1006 * include/Makefile.in: Likewise.
1007 * libsupc++/Makefile.in: Likewise.
1008 * po/Makefile.in: Likewise.
1009 * python/Makefile.in: Likewise.
1010 * src/Makefile.in: Likewise.
1011 * src/c++11/Makefile.in: Likewise.
1012 * src/c++17/Makefile.in: Likewise.
1013 * src/c++98/Makefile.in: Likewise.
1014 * src/filesystem/Makefile.in: Likewise.
1015 * testsuite/Makefile.in: Likewise.
1016
72ebb7e8 10172019-02-26 Jonathan Wakely <jwakely@redhat.com>
1018
a7f2f1b1 1019 PR libstdc++/89477
1020 * include/bits/alloc_traits.h (_RequireNotAllocator): New helper for
1021 container deduction guides.
1022 * include/bits/hashtable.h (_RequireNotAllocatorOrIntegral): Likewise.
1023 * include/bits/stl_map.h (map): Use _RequireNotAllocator to constrain
1024 parameters in deduction guides.
1025 * include/bits/stl_multimap.h (multimap): Likewise.
1026 * include/bits/stl_multiset.h (multiset): Likewise.
1027 * include/bits/stl_queue.h (queue, priority_queue): Likewise.
1028 * include/bits/stl_set.h (set): Likewise.
1029 * include/bits/stl_stack.h (stack): Likewise.
1030 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
1031 use _RequireNotAllocator and _RequireNotAllocatorOrIntegral to
1032 constrain parameters in deduction guides.
1033 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
1034 Likewise.
1035 * testsuite/23_containers/map/cons/deduction.cc: Test additional
1036 deduction cases.
1037 * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
1038 * testsuite/23_containers/set/cons/deduction.cc: Likewise.
1039 * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
1040 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
1041 Likewise.
1042 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
1043 Likewise.
1044 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
1045
72ebb7e8 1046 PR libstdc++/89416
1047 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Change
1048 to class template and partial specialization using void_t.
1049 (__is_copy_insertable, __is_move_insertable): Adjust base class.
1050
c9f61a64 10512019-02-24 Jonathan Wakely <jwakely@redhat.com>
1052
1053 PR libstdc++/89416
1054 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
1055 copy and move members public.
1056
61e2d6f7 10572019-02-23 Jonathan Wakely <jwakely@redhat.com>
1058
87798f3f 1059 * include/std/type_traits (__underlying_type_impl): New helper to
1060 make underlying_type SFINAE-friendly.
1061 (underlying_type): Derive from __underlying_type_impl.
1062 * testsuite/20_util/underlying_type/requirements/typedefs-3.cc: New
1063 test.
1064
61e2d6f7 1065 PR libstdc++/89446
1066 * include/bits/char_traits.h (__constant_char_array): Check index is
1067 in range before dereferencing.
1068 (char_traits<char>::compare, char_traits<char>::find)
1069 (char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
1070 immediately if n is zero.
1071 (char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
1072 Remove workarounds for PR 67026.
1073 * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
1074 New test.
1075 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
1076 New test.
1077
90a443b3 10782019-02-22 Eric Botcazou <ebotcazou@adacore.com>
1079
1080 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
1081 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
1082
98485ce3 10832019-02-22 Jakub Jelinek <jakub@redhat.com>
1084
1085 PR libstdc++/89402
1086 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
1087 type to std::size_t and argument to type to long double.
1088
26b4fc38 10892019-02-22 Eric Botcazou <ebotcazou@adacore.com>
1090
1091 * configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
1092 * config/abi/post/sparc64-linux-gnu: New directory.
1093 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
1094 * config/abi/post/sparc64-linux-gnu/32: New directory.
1095 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.
1096
4f847a8e 10972019-02-21 Jonathan Wakely <jwakely@redhat.com>
1098
1099 * testsuite/29_atomics/headers/atomic/types_std_c++20.cc: New test.
1100 * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: New
1101 test.
1102
aad651b3 11032019-02-22 Tom Honermann <tom@honermann.net>
1104
1105 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
1106 printers for u8string and u8string_view.
1107
c783b3cc 11082019-02-22 Tom Honermann <tom@honermann.net>
1109
1110 * testsuite/18_support/byte/ops.cc: Validate
1111 std::to_integer<char8_t>, std::to_integer<char16_t>, and
1112 std::to_integer<char32_t>.
1113 * testsuite/18_support/numeric_limits/dr559.cc: Validate
1114 std::numeric_limits<char8_t>.
1115 * testsuite/18_support/numeric_limits/lowest.cc: Validate
1116 std::numeric_limits<char8_t>::lowest().
1117 * testsuite/18_support/numeric_limits/max_digits10.cc: Validate
1118 std::numeric_limits<char8_t>::max_digits10.
1119 * testsuite/18_support/type_info/fundamental.cc: Validate
1120 typeinfo for char8_t.
1121 * testsuite/20_util/from_chars/1_c++20_neg.cc: New test, validating
1122 std::from_chars with char8_t.
1123 * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
1124 Validate explicit instantiation of std::hash<char8_t>.
1125 * testsuite/20_util/is_integral/value.cc: Validate
1126 std::is_integral<char8_t>.
1127 * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
1128 Validate std::make_signed<char8_t>.
1129 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
1130 Validate u8string construction from char8_t sources.
1131 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Validate
1132 std::pmr::u8string.
1133 * testsuite/21_strings/basic_string_view/operations/compare/
1134 char/70483.cc: Validate substr operations on u8string_view.
1135 * testsuite/21_strings/basic_string_view/typedefs.cc: Validate that
1136 the u8string_view typedef is defined.
1137 * testsuite/21_strings/char_traits/requirements/
1138 constexpr_functions.cc: Validate char_traits<char8_t> constexpr
1139 member functions.
1140 * testsuite/21_strings/char_traits/requirements/
1141 constexpr_functions_c++17.cc: Validate char_traits<char8_t> C++17
1142 constexpr member functions.
1143 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Validate
1144 that the u8string typedef is defined.
1145 * testsuite/22_locale/locale/cons/unicode.cc: Validate the presence
1146 of the std::codecvt<char16_t, char8_t, std::mbstate_t> and
1147 std::codecvt<char32_t, char8_t, std::mbstate_t> facets.
1148 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Update line
1149 numbers.
1150 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
1151 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
1152 Likewise.
1153 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
1154 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
1155 Validate std::atomic<char8_t>::is_always_lock_free
1156 * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
1157 Update line numbers.
1158 * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
1159 Likewise.
1160 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
1161 Likewise.
1162 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1163 Validate std::experimental::pmr::u8string.
1164 * testsuite/experimental/string_view/typedefs.cc: Validate that the
1165 u8string_view typedef is defined.
1166 * testsuite/util/testsuite_common_types.h: Add char8_t, char16_t and
1167 char32_t to the typelists.
1168
ef96a935 11692019-02-22 Tom Honermann <tom@honermann.net>
1170
1171 * include/ext/typelist.h: Constrain a partial specialization of
1172 typelist::detail::append_ to only match chain<T1,T2>.
1173
d373b606 11742019-02-21 Jonathan Wakely <jwakely@redhat.com>
1175
1176 PR libstdc++/89416
1177 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace
1178 class template with class. Replace move and copy member types with
1179 member alias templates, so they are only instantiated when needed.
1180 (__is_copy_insertable, __is_move_insertable): Adjust base class.
1181 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable
1182 test for C++11/14/17 as well.
1183 * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New
1184 test.
1185
25395ee8 11862019-02-20 Jakub Jelinek <jakub@redhat.com>
1187
1188 PR libstdc++/89402
1189 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
1190 _GLIBCXX_PURE to the alias declaration.
1191
affcb65b 11922019-02-19 Jonathan Wakely <jwakely@redhat.com>
1193
1194 * testsuite/21_strings/basic_string/literals/types.cc
1195 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
1196 * testsuite/21_strings/basic_string/literals/values.cc
1197 [_GLIBCXX_USE_CHAR8_T]: Likewise.
1198 * testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
1199 potentially having different type.
1200 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
1201 * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
1202 to char.
1203 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
1204 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
1205 * testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
1206 string literals only using basic character set.
1207 * testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
1208 u8 literals to char.
1209 * testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
1210 Test ATOMIC_CHAR8_T_LOCK_FREE.
1211 Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
1212 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
1213 [_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
1214 * testsuite/experimental/string_view/literals/types.cc
1215 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
1216 literal.
1217 * testsuite/experimental/string_view/literals/values.cc
1218 [_GLIBCXX_USE_CHAR8_T]: Likewise.
1219
4acc5060 12202019-02-19 Tom Honermann <tom@honermann.net>
1221
1222 * testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
1223 from char16_32_t.cc; validates numeric_limits<char8_t>.
1224 * testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
1225 test cloned from types.cc; validates operator""s for char8_t
1226 returns u8string.
1227 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
1228 test cloned from values.cc; validates construction and comparison
1229 of u8string values.
1230 * testsuite/21_strings/basic_string/requirements/
1231 /explicit_instantiation/char8_t/1.cc: New test cloned from
1232 char16_t/1.cc; validates explicit instantiation of
1233 basic_string<char8_t>.
1234 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
1235 New test cloned from types.cc; validates operator""sv for char8_t
1236 returns u8string_view.
1237 * testsuite/21_strings/basic_string_view/literals/
1238 values-char8_t.cc: New test cloned from values.cc; validates
1239 construction and comparison of u8string_view values.
1240 * testsuite/21_strings/basic_string_view/requirements/
1241 explicit_instantiation/char8_t/1.cc: New test cloned from
1242 char16_t/1.cc; validates explicit instantiation of
1243 basic_string_view<char8_t>.
1244 * testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
1245 New test cloned from char16_t/65049.cc; validates that
1246 char_traits<char8_t> is not vulnerable to the concerns in PR65049.
1247 * testsuite/21_strings/char_traits/requirements/char8_t/
1248 typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
1249 that char_traits<char8_t> member typedefs are present and correct.
1250 * testsuite/21_strings/char_traits/requirements/
1251 explicit_instantiation/char8_t/1.cc: New test cloned from
1252 char16_t/1.cc; validates explicit instantiation of
1253 char_traits<char8_t>.
1254 * testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
1255 from char16_t.cc: validates
1256 codecvt<char16_t, char8_t, mbstate_t>.
1257 * testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
1258 from char32_t.cc: validates
1259 codecvt<char32_t, char8_t, mbstate_t>.
1260 * testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
1261 utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
1262 codecvt<char32_t, char8_t, std::mbstate_t>.
1263 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
1264 test cloned from string.cc; validates filesystem::path construction
1265 from char8_t input.
1266 * testsuite/experimental/feat-char8_t.cc: New test; validates that
1267 the __cpp_lib_char8_t feature test macro is defined with the
1268 correct value.
1269 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
1270 New test cloned from string.cc; validates filesystem::path
1271 construction from char8_t input.
1272 * testsuite/experimental/string_view/literals/types-char8_t.cc: New
1273 test cloned from types.cc; validates operator""sv for char8_t
1274 returns u8string_view.
1275 * testsuite/experimental/string_view/literals/values-char8_t.cc:
1276 New test cloned from values.cc; validates construction and
1277 comparison of u8string_view values.
1278 * testsuite/experimental/string_view/requirements/
1279 explicit_instantiation/char8_t/1.cc: New test cloned from
1280 char16_t/1.cc; validates explicit instantiation of
1281 basic_string_view<char8_t>.
1282 * testsuite/ext/char8_t/atomic-1.cc: New test; validates that
1283 ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
1284 enabled.
1285
25694c85 12862019-02-19 Tom Honermann <tom@honermann.net>
1287
1288 P0482R5 char8_t: Standard library support
1289 * config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
1290 typeinfo symbols for char8_t.
1291 * config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
1292 (GLIBCXX_3.4.26): Add symbols for specializations of
1293 numeric_limits and codecvt that involve char8_t.
1294 (CXXABI_1.3.12): Add typeinfo symbols for char8_t.
1295 * include/bits/atomic_base.h: Add atomic_char8_t.
1296 * include/bits/basic_string.h: Add std::hash<u8string> and
1297 operator""s(const char8_t*, size_t).
1298 * include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
1299 __cpp_lib_char8_t.
1300 * include/bits/char_traits.h: Add char_traits<char8_t>.
1301 * include/bits/codecvt.h: Add
1302 codecvt<char16_t, char8_t, mbstate_t>,
1303 codecvt<char32_t, char8_t, mbstate_t>,
1304 codecvt_byname<char16_t, char8_t, mbstate_t>, and
1305 codecvt_byname<char32_t, char8_t, mbstate_t>.
1306 * include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
1307 recognize char8_t as an integral type.
1308 * include/bits/fs_path.h: (path::__is_encoded_char): Recognize
1309 char8_t.
1310 (path::u8string): Return std::u8string when char8_t support is
1311 enabled.
1312 (path::generic_u8string): Likewise.
1313 (path::_S_convert): Handle conversion from char8_t input.
1314 (path::_S_str_convert): Likewise.
1315 * include/bits/functional_hash.h: Add hash<char8_t>.
1316 * include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
1317 char8_t.
1318 * include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
1319 for new char8_t specializations.
1320 * include/bits/localefwd.h: Add missing declarations of
1321 codecvt<char16_t, char, mbstate_t> and
1322 codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
1323 codecvt<char16_t, char8_t, mbstate_t> and
1324 codecvt<char32_t, char8_t, mbstate_t>.
1325 * include/bits/postypes.h: Add u8streampos
1326 * include/bits/stringfwd.h: Add declarations of
1327 char_traits<char8_t> and u8string.
1328 * include/c_global/cstddef: Add __byte_operand<char8_t>.
1329 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
1330 Recognize char8_t.
1331 (path::u8string): Return std::u8string when char8_t support is
1332 enabled.
1333 (path::generic_u8string): Likewise.
1334 (path::_S_convert): Handle conversion from char8_t input.
1335 (path::_S_str_convert): Likewise.
1336 * include/experimental/string: Add u8string.
1337 * include/experimental/string_view: Add u8string_view,
1338 hash<experimental::u8string_view>, and
1339 operator""sv(const char8_t*, size_t).
1340 * include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
1341 * include/std/charconv (__is_int_to_chars_type): Recognize char8_t
1342 as a character type.
1343 * include/std/limits: Add numeric_limits<char8_t>.
1344 * include/std/string_view: Add u8string_view,
1345 hash<experimental::u8string_view>, and
1346 operator""sv(const char8_t*, size_t).
1347 * include/std/type_traits: Add __is_integral_helper<char8_t>,
1348 __make_unsigned<char8_t>, and __make_signed<char8_t>.
1349 * libsupc++/atomic_lockfree_defines.h: Define
1350 ATOMIC_CHAR8_T_LOCK_FREE.
1351 * src/c++11/Makefile.am: Compile with -fchar8_t when compiling
1352 codecvt.cc and limits.cc so that char8_t specializations of
1353 numeric_limits and codecvt and emitted.
1354 * src/c++11/Makefile.in: Likewise.
1355 * src/c++11/codecvt.cc: Define members of
1356 codecvt<char16_t, char8_t, mbstate_t>,
1357 codecvt<char32_t, char8_t, mbstate_t>,
1358 codecvt_byname<char16_t, char8_t, mbstate_t>, and
1359 codecvt_byname<char32_t, char8_t, mbstate_t>.
1360 * src/c++11/limits.cc: Define members of
1361 numeric_limits<char8_t>.
1362 * src/c++98/Makefile.am: Compile with -fchar8_t when compiling
1363 locale_init.cc and localename.cc.
1364 * src/c++98/Makefile.in: Likewise.
1365 * src/c++98/locale_init.cc: Add initialization for the
1366 codecvt<char16_t, char8_t, mbstate_t> and
1367 codecvt<char32_t, char8_t, mbstate_t> facets.
1368 * src/c++98/localename.cc: Likewise.
1369 * testsuite/util/testsuite_abi.cc: Validate ABI bump.
1370
140615bb 13712019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
1372
1373 * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
1374 * 27_io/filesystem/operations/resize_file.cc: Likewise.
1375 * 27_io/filesystem/path/generation/normal2.cc: Likewise.
1376
c677a9d7 13772019-02-14 Jonathan Wakely <jwakely@redhat.com>
1378
1bbfe9f8 1379 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
1380 * doc/html/*: Regenerate.
1381
b24f00b1 1382 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
1383 * doc/html/*: Regenerate.
1384
a3d1baa9 1385 * doc/xml/manual/intro.xml: Document LWG 2586 status.
1386 * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
1387 allocator type in is_constructible checks.
1388 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
1389 * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
1390 * testsuite/20_util/tuple/cons/allocators.cc: Add test using
1391 problematic type from LWG 2586 discussion.
1392 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
1393 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
1394
99d130bf 1395 * configure.ac: Check for C11 timespec_get function.
1396 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
1397 (openbsd): Likewise
1398 * config.h.in: Regenerate.
1399 * configure: Regenerate.
1400 * include/c_global/ctime (timespec, timespec_get): Add to namespace
1401 std for C++17 and up.
1402
48772ec3 1403 * doc/xml/manual/intro.xml: Document LWG 2537 status.
1404 * include/bits/stl_queue.h
1405 (priority_queue(const Compare&, const Container&, const Alloc&))
1406 (priority_queue(const Compare&, Container&&, const Alloc&)): Call
1407 make_heap.
1408 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
1409
ee32dd64 1410 * doc/xml/manual/intro.xml: Document LWG 2566 status.
1411 * include/bits/stl_queue.h (queue, priority_queue): Add static
1412 assertions to enforce LWG 2566 requirement on value_type.
1413 * include/bits/stl_stack.h (stack): Likewise.
1414
9724de38 1415 PR middle-end/89303
1416 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
1417
c677a9d7 1418 * doc/xml/manual/intro.xml: Document LWG 2735 status.
1419 * include/bits/std_abs.h: Add comment about LWG 2735.
1420 * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
1421
4194f872 14222019-02-13 Jonathan Wakely <jwakely@redhat.com>
1423
1424 PR libstdc++/89345
1425 * include/std/version [__cpp_impl_destroying_delete]
1426 (__cpp_lib_destroying_delete): Only define for C++2a and later.
1427 * libsupc++/new [__cpp_impl_destroying_delete]
1428 (__cpp_lib_destroying_delete): Likewise.
1429 (destroying_delete_t, destroying_delete): Likewise, but define even
1430 when __cpp_impl_destroying_delete is not defined.
1431 * testsuite/18_support/destroying_delete.cc: New test.
1432
aaacaee2 14332019-02-11 Jonathan Wakely <jwakely@redhat.com>
1434
1435 PR libstdc++/89023
1436 * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
1437 * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
1438 * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
1439 * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
1440
5256b0dd 14412019-02-09 Jonathan Wakely <jwakely@redhat.com>
1442
1443 PR libstdc++/71044
1444 * include/bits/fs_path.h (path::has_root_name)
1445 (path::has_root_directory, path::has_root_path)
1446 (path::has_relative_path, path::has_parent_path)
1447 (path::has_filename, path::has_stem, path::has_extension)
1448 (path::is_absolute, path::is_relative, path::_M_find_extension): Add
1449 noexcept.
1450 * src/c++17/fs_path.cc (path::has_root_name)
1451 (path::has_root_directory, path::has_root_path)
1452 (path::has_relative_path, path::has_parent_path)
1453 (path::has_filename, path::_M_find_extension): Add noexcept.
1454
e32f625e 14552019-02-06 Jonathan Wakely <jwakely@redhat.com>
1456
1457 PR libstdc++/89102 (partial)
1458 * include/std/type_traits (common_type<>): Define.
1459 (common_type<T>): Derive from common_type<T, T>.
1460 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
1461 Test zero-length template argument list.
1462 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
1463 Test additional single argument cases.
1464 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
1465 Adjust expected error.
1466
b03489db 14672019-02-05 Jonathan Wakely <jwakely@redhat.com>
1468
e89e4fec 1469 PR libstdc++/89128
1470 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
1471 guides.
1472 * include/bits/stl_stack.h (stack): Likewise.
1473 * testsuite/23_containers/priority_queue/deduction.cc: New test.
1474 * testsuite/23_containers/queue/deduction.cc: New test.
1475 * testsuite/23_containers/stack/deduction.cc: New test.
1476
b640dd11 1477 PR libstdc++/89194
1478 * include/std/type_traits (__is_convertible_helper)
1479 (__is_convertible_helper<_From, _To, false>): Revert changes to
1480 support is_nothrow_convertible.
1481 (__is_nt_convertible_helper): New helper.
1482 (is_nothrow_convertible): Use __is_nt_convertible_helper.
1483
74c88c5f 1484 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
1485 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
1486
eca5e8d4 1487 PR libstdc++/89130
1488 * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
1489 __is_alloc_insertable_impl. Replace single type member with two
1490 members, one for each of copy and move insertable.
1491 (__is_move_insertable): New trait for internal use.
1492 * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
1493 (vector::_S_nothrow_relocate(true_type)): New functions to
1494 conditionally check if __relocate_a can throw.
1495 (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
1496 on __is_move_insertable.
1497 (vector::_S_do_relocate): New overloaded functions to conditionally
1498 call __relocate_a.
1499 (vector::_S_relocate): New function that dispatches to _S_do_relocate
1500 based on _S_use_relocate.
1501 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
1502 (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
1503 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
1504
b03489db 1505 PR libstdc++/89090
1506 * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
1507 parameter unnamed. Add message to static assertion.
1508 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
1509 (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
1510 in C++11 code.
1511
71625a15 15122019-02-05 Marc Glisse <marc.glisse@inria.fr>
1513
1514 PR libstdc++/87106
1515 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
1516 Rename...
1517 (__is_bitwise_relocatable): ... to this.
1518 (__relocate_a_1): Adapt.
1519 * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
1520 (__is_bitwise_relocatable): ... to this.
1521
e7b22e58 15222019-01-30 Jonathan Wakely <jwakely@redhat.com>
1523
1524 PR libstdc++/89117
1525 * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
1526 final component as well as from _M_pathname. Append the dot using
1527 operator+= instead of only to _M_pathname.
1528 (path::_M_find_extension): Reformat slightly.
1529 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
1530 Add more test cases.
1531
dae923a7 15322019-01-30 Ulrich Drepper <drepper@redhat.com>
1533
1534 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
1535
710397ad 15362019-01-29 Jonathan Wakely <jwakely@redhat.com>
1537
5efc4356 1538 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
1539 constexpr specifiers from arg and proj.
1540
5f15e718 1541 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
1542 __shared_ptr instantiations used by gcc4-compatible ABI.
1543
307e86fc 1544 * include/experimental/forward_list (experimental::erase): Qualify
1545 call to erase_if.
1546 * include/experimental/list (experimental::erase): Likewise.
1547 * include/std/forward_list (std::erase): Likewise.
1548 * include/std/list (std::erase): Likewise.
1549
38129d1a 1550 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
1551 C++2a.
1552 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
1553 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
1554 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
1555 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
1556 * testsuite/ext/array_allocator/26875.cc: Likewise.
1557 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
1558 * testsuite/util/replacement_memory_operators.h: Likewise.
1559 * testsuite/util/testsuite_allocator.h: Likewise.
1560
710397ad 1561 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
1562 normal mode vector, even for debug mode.
1563 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
1564 Define alias template for normal mode vector.
1565
70f71249 15662019-01-28 Jonathan Wakely <jwakely@redhat.com>
1567
1568 PR libstdc++/68737
1569 * config/locale/generic/c_locale.h (__convert_from_v)
1570 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
1571 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
1572 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
1573 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
1574
f1074115 15752019-01-24 Jonathan Wakely <jwakely@redhat.com>
1576
4bc4fd90 1577 PR libstdc++/88840
1578 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
1579 data member with static member function _S_use_relocate().
1580 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
1581 (vector::_M_default_append): Use _S_use_relocate() instead of
1582 __use_relocate.
1583
f1074115 1584 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
1585 sign of results.
1586
1c4657a3 15872019-01-22 Jonathan Wakely <jwakely@redhat.com>
1588
1589 PR libstdc++/88740
1590 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
1591 write to stderr instead of using printf.
1592
dafe8c59 15932019-01-21 Jakub Jelinek <jakub@redhat.com>
1594
1595 PR libstdc++/86590
1596 * include/bits/char_traits.h (__constant_string_p,
1597 __constant_char_array_p): Use __builtin_is_constant_evaluated if
1598 available.
1599
eaf966f3 16002019-01-20 Ulrich Drepper <drepper@redhat.com>
1601
1602 Implement C++20 P0600r1.
1603 * include/backward/hash_map: Add nodiscard attribute to empty.
1604 * include/backward/hash_set: Likewise.
1605 * backward/hashtable.h: Likewise.
1606 * include/bits/basic_string.h: Likewise.
1607 * include/bits/forward_list.h: Likewise.
1608 * include/bits/hashtable.h: Likewise.
1609 * include/bits/regex.h: Likewise.
1610 * include/bits/stl_deque.h: Likewise.
1611 * include/bits/stl_list.h: Likewise.
1612 * include/bits/stl_map.h: Likewise.
1613 * include/bits/stl_multimap.h: Likewise.
1614 * include/bits/stl_multiset.h: Likewise.
1615 * include/bits/stl_queue.h: Likewise.
1616 * include/bits/stl_set.h: Likewise.
1617 * include/bits/stl_stack.h: Likewise.
1618 * include/bits/stl_tree.h: Likewise.
1619 * include/bits/stl_vector.h: Likewise.
1620 * include/bits/unordered_map.h: Likewise.
1621 * include/bits/unordered_set.h: Likewise.
1622 * include/debug/array: Likewise.
1623 * include/experimental/any: Likewise.
1624 * include/experimental/bits/fs_path.h: Likewise.
1625 * include/experimental/internet: Likewise.
1626 * include/experimental/string_view: Likewise.
1627 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
1628 Likewise.
1629 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
1630 Likewise.
1631 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
1632 Likewise.
1633 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
1634 Likewise.
1635 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
1636 Likewise.
1637 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
1638 Likewise.
1639 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
1640 Likewise.
1641 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
1642 Likewise.
1643 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
1644 info_fn_imps.hpp: Likewise.
1645 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
1646 left_child_next_sibling_heap_.hpp: Likewise.
1647 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
1648 Likewise.
1649 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
1650 Likewise.
1651 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
1652 Likewise.
1653 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
1654 Likewise.
1655 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
1656 Likewise.
1657 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
1658 Likewise.
1659 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
1660 Likewise.
1661 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
1662 * include/ext/pb_ds/trie_policy.hpp: Likewise.
1663 * include/ext/rope: Likewise.
1664 * include/ext/slist: Likewise.
1665 * include/ext/vstring.h: Likewise.
1666 * include/profile/array: Likewise.
1667 * include/std/array: Likewise.
1668 * include/tr1/array: Likewise.
1669 * include/tr1/hashtable.h: Likewise.
1670 * include/tr1/regex: Likewise.
1671 * include/tr2/dynamic_bitset: Likewise.
1672 * include/bits/alloc_traits.h: Add nodiscard attribute to
1673 allocate.
1674 * include/experimental/memory_resource: Likewise.
1675 * include/ext/alloc_traits.h: Likewise.
1676 * include/ext/array_allocator.h: Likewise.
1677 * include/ext/bitmap_allocator.h: Likewise.
1678 * include/ext/debug_allocator.h: Likewise.
1679 * include/ext/extptr_allocator.h: Likewise.
1680 * include/ext/mt_allocator.h: Likewise.
1681 * include/ext/new_allocator.h: Likewise.
1682 * include/ext/pool_allocator.h: Likewise.
1683 * include/ext/throw_allocator.h: Likewise.
1684 * include/std/scoped_allocator: Likewise.
1685 * libsupc++/eh_alloc.cc: Likewise.
1686 * include/std/future: Add nodiscard attribute to async.
1687 * libsupc++/new: Add nodiscard attribute to new.
1688
3c1c2a8c 16892019-01-18 Jonathan Wakely <jwakely@redhat.com>
1690
1691 PR libstdc++/87514
1692 PR libstdc++/87520
1693 PR libstdc++/88782
1694 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
1695 * include/bits/shared_ptr.h
1696 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
1697 (allocate_shared): Change to use new tag type.
1698 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
1699 Declare new member function.
1700 (_Sp_alloc_shared_tag): Define new type.
1701 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
1702 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
1703 _Sp_make_shared_tag::_S_eq to check type_info.
1704 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
1705 Constrain to prevent being called with _Sp_alloc_shared_tag.
1706 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
1707 Replace constructor with ...
1708 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
1709 reference parameter so address of the new object can be returned to
1710 the caller. Obtain the allocator from the tag type.
1711 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
1712 constructor with ...
1713 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
1714 to the __shared_count constructor.
1715 (__allocate_shared): Change to use new tag type.
1716 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
1717
21a962b2 17182019-01-17 Jonathan Wakely <jwakely@redhat.com>
1719
464ac146 1720 * src/c++17/fs_ops.cc
1721 (equivalent(const path&, const path&, error_code&))
1722 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
1723 compare files instead of relying on incomplete info returned by stat.
1724
2987a93d 1725 PR libstdc++/88884
1726 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
1727 if the path is already absolute.
1728 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
1729 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
1730
21a962b2 1731 PR libstdc++/88881
1732 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
1733 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
1734 of filesystem::exists.
1735 (create_directories(const path&, error_code&)): Add assertions.
1736 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
1737 Add workaround for bug in _wstat for paths with trailing slash.
1738 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
1739 for expected behaviour on mingw.
1740 * testsuite/experimental/filesystem/operations/create_directories.cc:
1741 Likewise.
1742 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
1743 "TMP" instead of "TMPDIR" and clean environment before each test. Do
1744 not test permissions on mingw targets.
1745
93478c9f 17462019-01-16 Jonathan Wakely <jwakely@redhat.com>
1747
1748 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
1749 constructors and open members taking wide strings. Fix patterns for
1750 filesystem::path members to match wstring_view parameters. Add
1751 exports for shared_ptr members used by directory iterators.
1752 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
1753 error code parameter if the file doesn't exist.
1754 * src/filesystem/ops.cc (remove(const path&, error_code&)):
1755 Likewise.
1756 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
1757 values for mingw targets, where "/" is not an absolute path. Do not
1758 test symlinks on mingw targets.
1759 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
1760 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
1761 on mingw targets.
1762 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
1763 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
1764 that each component of the path is created.
1765 * testsuite/experimental/filesystem/operations/create_directories.cc:
1766 Likewise.
1767 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
1768 permissions on mingw targets.
1769 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
1770 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
1771 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
1772 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
1773 mingw targets.
1774 * testsuite/experimental/filesystem/operations/permissions.cc:
1775 Likewise.
1776 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
1777 symlinks or permissions on mingw targets.
1778 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
1779 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
1780 symlinks on mingw targets.
1781 * testsuite/experimental/filesystem/operations/remove_all.cc:
1782 Likewise.
1783 * testsuite/27_io/filesystem/operations/status.cc: Do not test
1784 permissions on mingw targets.
1785 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
1786 test symlinks on mingw targets.
1787 * testsuite/experimental/filesystem/operations/space.cc: Fix test
1788 for mingw targets.
1789
af93b844 17902019-02-14 Ulrich Drepper <drepper@redhat.com>
1791
1792 PR libstdc++/88738
1793 Warn about unused comparisons of shared_ptr/unique_ptr
1794 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
1795 * include/bits/shared_ptr.h: Use it for operator ==, !=,
1796 <, <=, >, >= for shared_ptr.
1797 * include/bits/unique_ptr.h: Likewise for unique_ptr.
1798
8793c0de 17992019-01-15 Jonathan Wakely <jwakely@redhat.com>
1800
afa61572 1801 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
1802 as 201611L, because P0497R0 changes are supported.
1803 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
1804
feb89906 1805 * include/bits/erase_if.h [__cplusplus > 201703L]
1806 (__cpp_lib_erase_if): Only define for C++2a.
1807 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
1808 (__cpp_lib_null_iterators): Define.
1809 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
1810 (__cpp_lib_null_iterators): Define.
1811 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
1812
d253bcb1 1813 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
1814 status.
1815 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
1816 Define.
1817 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
1818 changes are supported.
1819 * include/std/optional (__cpp_lib_optional): Likewise.
1820 * include/std/variant (__cpp_lib_variant): Likewise.
1821 * include/std/version [!__STRICT_ANSI__]
1822 (__cpp_lib_uncaught_exceptions): Define as long integer.
1823 [__cplusplus >= 201703L] (__cpp_lib_any)
1824 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
1825 (__cpp_lib_variant): Define for C++17.
1826 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
1827 as long integer.
1828 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
1829 integer.
1830
8793c0de 1831 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
1832
a8cd4b2b 18332019-01-12 Jonathan Wakely <jwakely@redhat.com>
1834
1835 PR libstdc++/88811
1836 PR libstdc++/83306
1837 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
1838 before second path.
1839 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
1840 test.
1841
a5b1332c 18422019-01-11 Jonathan Wakely <jwakely@redhat.com>
1843
656ac8b7 1844 * doc/xml/manual/intro.xml: Include new section.
1845 * doc/xml/manual/status_cxx2017.xml: Document more
1846 implementation-defined properties of the library.
1847 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
1848 * doc/html/*: Regenerate.
1849
f5480b8c 1850 * include/bits/refwrap.h [__cplusplus > 201703L]
1851 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
1852 (_Reference_wrapper_base_memfun): Do not define for C++2a.
1853 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
1854 for C++2a.
1855 (reference_wrapper::operator()): Add static assertion.
1856 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
1857
36496c4d 1858 * include/std/chrono (duration_values::zero(), duration_values::min())
1859 (duration_values::max()): Add noexcept.
1860 (duration::zero(), duration::min(), duration::max()): Likewise.
1861 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
1862 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
1863 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
1864
a5b1332c 1865 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
1866
d9de68bc 18672019-01-11 Jakub Jelinek <jakub@redhat.com>
1868
1869 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
1870 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
1871
beb370cb 18722019-01-11 Jonathan Wakely <jwakely@redhat.com>
1873
1d628fd4 1874 PR libstdc++/88802
1875 * include/bits/functional_hash.h (hash<nullptr_t>): Define
1876 specialization for C++17 (P0513R0, LWG 2817).
1877 * testsuite/20_util/hash/nullptr.cc: New test.
1878
a18b3766 1879 PR libstdc++/88125
1880 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
1881 pattern for std::basic_stringbuf::str().
1882
beb370cb 1883 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
1884 basic_ostream::operator<< patterns.
1885
cbbb35ec 18862019-01-10 Jonathan Wakely <jwakely@redhat.com>
1887
1715824b 1888 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
1889 test failures on targets with 32-bit time_t.
1890
f5529091 1891 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
1892 * include/std/deque: Likewise.
1893 * include/std/forward_list: Likewise.
1894 * include/std/list: Likewise.
1895 * include/std/string: Likewise.
1896 * include/std/vector: Likewise.
1897 * include/std/version: Likewise.
1898 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
1899 * testsuite/23_containers/deque/erasure.cc: Likewise.
1900 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
1901 * testsuite/23_containers/list/erasure.cc: Likewise.
1902 * testsuite/23_containers/map/erasure.cc: Likewise.
1903 * testsuite/23_containers/set/erasure.cc: Likewise.
1904 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
1905 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
1906 * testsuite/23_containers/vector/erasure.cc: Likewise.
1907
cbbb35ec 1908 * include/experimental/internet [AI_NUMERICSERV]
1909 (resolver_base::numeric_service): Define conditionally.
1910 * testsuite/experimental/net/internet/resolver/base.cc: Test it
1911 conditionally.
1912 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
1913 Likewise.
1914
ac9a8436 19152019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
1916 Jonathan Wakely <jwakely@redhat.com>
1917
1918 Implement LWG 2221
1919 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
1920 (GLIBCXX_3.4.26): Add new exports.
1921 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
1922 correct list of sources.
1923 * include/Makefile.in: Regenerate.
1924 * include/std/ostream (operator<<(nullptr_t)): New member function.
1925 * src/c++17/ostream-inst.cc: New file.
1926 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
1927 test.
1928
5f027941 19292019-01-10 Jonathan Wakely <jwakely@redhat.com>
1930
1931 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
1932 of the source file containing the caller.
1933 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
1934 directories created by test.
1935 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
1936 Likewise.
1937 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
1938 Likewise.
1939 * testsuite/experimental/filesystem/iterators/
1940 recursive_directory_iterator.cc: Likewise.
1941
3273d2e6 19422019-01-10 Jakub Jelinek <jakub@redhat.com>
1943
1944 PR tree-optimization/88775
1945 * include/bits/stl_function.h (greater<_Tp*>::operator(),
1946 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
1947 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
1948 instead of __builtin_constant_p if available. Don't bother with
1949 the pointer comparison in C++11 and earlier.
1950
f4d3c071 19512019-01-09 Sandra Loosemore <sandra@codesourcery.com>
1952
1953 PR other/16615
1954
1955 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
1956 with "cannot".
1957
8eba10af 19582019-01-09 Jonathan Wakely <jwakely@redhat.com>
1959
6a6ade9f 1960 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
1961 for filesystem::path. Give variables more distinctive names.
1962
41cda271 1963 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
1964 member function to perform non-trivial assignment.
1965 (_Optional_payload_base::_M_move_assign): Likewise.
1966 (_Optional_payload<T, true, false, true>::operator=)
1967 (_Optional_payload<T, true, true, false>::operator=)
1968 (_Optional_payload<T, true, false, false>::operator=): Call
1969 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
1970
8eba10af 1971 PR libstdc++/88204
1972 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
1973 test std::complex<long double> if long double format is IBM128.
1974 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
1975 Likewise.
1976
64a50f48 19772019-01-08 Jonathan Wakely <jwakely@redhat.com>
1978
73f3ad16 1979 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
1980 for old std::unique_ptr layout.
1981 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
1982 to become valueless. Add filesystem::path tests.
1983
58e897da 1984 PR libstdc++/87855
1985 * include/std/optional (_Optional_payload_base): New class template
1986 for common code hoisted from _Optional_payload specializations. Use
1987 a template for the union, to allow a partial specialization for
1988 types with non-trivial destructors. Add constructors for in-place
1989 initialization to the union.
1990 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
1991 to perform non-trivial copy construction, instead of relying on
1992 non-standard copy elision in a delegating constructor.
1993 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
1994 non-trivial move construction.
1995 (_Optional_payload): Derive from _Optional_payload_base and use it
1996 for everything except the non-trivial assignment operators, which are
1997 defined as needed.
1998 (_Optional_payload<false, C, M>): Derive from the specialization
1999 _Optional_payload<true, false, false> and add a destructor.
2000 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
2001 Forward to corresponding members of _Optional_payload.
2002 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
2003 Hoist common members from _Optional_base.
2004 (_Optional_base): Make all members and base class public.
2005 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
2006 _Optional_base_impl.
2007 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
2008 support for new std::optional layout.
2009 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
2010
64a50f48 2011 PR libstdc++/88066
2012 * include/bits/locale_conv.h: Use <> for includes not "".
2013 * include/ext/random: Likewise.
2014 * include/ext/vstring.h: Likewise.
2015
95b40931 20162019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2017
2018 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
2019 (GLIBCXX_3.4.21): Likewise.
2020
fa00ec77 20212019-01-08 Jonathan Wakely <jwakely@redhat.com>
2022
2023 PR libstdc++/88749
2024 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
2025 to match the one that controls whether utimbuf and utime are declared.
2026
3f304b2d 20272019-01-07 Jonathan Wakely <jwakely@redhat.com>
2028
fc6ac813 2029 PR libstdc++/87787
2030 * include/bits/char_traits.h (char_traits::move): Do not pass null
2031 pointers to memmove.
2032 * include/bits/locale_facets.h
2033 (ctype<char>::widen(const char*, const char*, char*)): Do not
2034 pass null pointers to memcpy.
2035 (ctype<char>::narrow(const char*, const char*, char, char*)):
2036 Likewise.
2037 (ctype<char>::do_widen(const char*, const char*, char*)):
2038 Likewise.
2039 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
2040 Likewise.
2041
bbc66c45 2042 * doc/xml/manual/spine.xml: Update copyright years.
2043 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
2044 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
2045 for C++17 filesystem library.
2046 * doc/html/*: Regenerate.
2047
3f304b2d 2048 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
2049 * config.h.in: Regenerate.
2050 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
2051 alphabetically and add missing entries for copy_symlink,
2052 hard_link_count, rename, and resize_file.
2053 * configure: Regenerate.
2054 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
2055 used unconditionally.
2056 * src/filesystem/ops-common.h (__gnu_posix::truncate)
2057 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
2058 supports truncating to zero length.
2059 * testsuite/27_io/filesystem/operations/all.cc: New test.
2060 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
2061
0ebb0980 20622019-01-06 Jonathan Wakely <jwakely@redhat.com>
2063
3935f409 2064 PR libstdc++/86756
2065 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
2066 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
2067 * config.h.in: Regenerate.
2068 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
2069 remaining std::filesystem types and functions.
2070 * configure: Regenerate.
2071 * src/c++17/Makefile.am: Add C++17 filesystem sources.
2072 * src/c++17/Makefile.in: Regenerate.
2073 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
2074 here, and change name of included file.
2075 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
2076 here, and change name of included file.
2077 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
2078 path to dir-common.h.
2079 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
2080 path to ops-common.h. Disable -Wunused-parameter warnings.
2081 (internal_file_clock): Define unconditionally.
2082 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
2083 define.
2084 (do_copy_file, do_space): Move definitions to ops.common.h.
2085 (copy, file_size, hard_link_count, last_write_time, space): Only
2086 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
2087 report an error.
2088 (last_write_time, read_symlink): Remove unused attributes from
2089 parameters.
2090 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
2091 * src/filesystem/Makefile.in: Regenerate.
2092 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
2093 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
2094 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
2095 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
2096 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
2097 dummy types and functions instead of using #error.
2098 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
2099 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
2100 in terms of stat.
2101 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
2102 (do_copy_file, do_space): Move definitions here from std-ops.cc.
2103 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
2104 to account for new namespace.
2105 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
2106 -lstdc++fs from dg-options.
2107 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
2108 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
2109 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
2110 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
2111 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
2112 Likewise.
2113 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
2114 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
2115 Likewise.
2116 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
2117 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
2118 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
2119 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
2120 * testsuite/27_io/filesystem/operations/create_directories.cc:
2121 Likewise.
2122 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
2123 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
2124 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
2125 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
2126 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
2127 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
2128 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
2129 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
2130 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
2131 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
2132 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
2133 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
2134 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
2135 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
2136 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
2137 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
2138 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
2139 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2140 Likewise.
2141 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
2142
2143
c6e37a9f 2144 PR libstdc++/86756
2145 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
2146 typeinfo and vtables less greedy.
2147 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
2148 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
2149 * src/c++17/Makefile.in: Regenerate.
2150 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
2151 here, and change name of included file.
2152 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
2153 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
2154 from sources.
2155 * src/filesystem/Makefile.in: Regenerate.
2156 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
2157 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
2158 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
2159 from dg-options and remove dg-require-filesystem-ts.
2160 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
2161 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
2162 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
2163 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
2164 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
2165 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
2166 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
2167 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
2168 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
2169 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
2170 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
2171 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
2172 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
2173 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
2174 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
2175 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
2176 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
2177 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
2178 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
2179 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
2180 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
2181 Likewise.
2182 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
2183 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
2184 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
2185 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
2186 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
2187 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
2188 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
2189 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
2190 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
2191 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
2192 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
2193 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
2194 Likewise.
2195 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
2196 Likewise.
2197 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
2198 Likewise.
2199 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
2200 Likewise.
2201 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
2202 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
2203 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
2204 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
2205 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
2206 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
2207 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
2208 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
2209 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
2210 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
2211 Likewise.
2212 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
2213 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
2214 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
2215 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
2216 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
2217
8815ac91 2218 PR libstdc++/87431
2219 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
2220 Check is_trivially_copyable instead of is_scalar.
2221 (variant::emplace<N, Args>(Args&&...)): If construction of the new
2222 contained value can throw and its type is trivially copyable then
2223 construct into a temporary variant and move from it, to provide the
2224 strong exception safety guarantee.
2225 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
2226 Likewise.
2227 * testsuite/20_util/variant/87431.cc: New test.
2228 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
2229 conversion causes valueless state.
2230
0ebb0980 2231 PR libstdc++/88607
2232 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
2233 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
2234 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
2235 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
2236 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
2237
adc6beee 22382019-01-05 Jonathan Wakely <jwakely@redhat.com>
2239
2240 * include/bits/fs_fwd.h (__file_clock): Define new clock.
2241 (file_time_type): Redefine in terms of __file_clock.
2242 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
2243 overflow.
2244 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
2245 internal linkage.
2246 (internal_file_lock): New helper type for accessing __file_clock.
2247 (do_copy_file): Use internal_file_lock to convert system time to
2248 file_time_type.
2249 (last_write_time(const path&, error_code&)): Likewise.
2250 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
2251
6b4a77f2 22522019-01-04 Jonathan Wakely <jwakely@redhat.com>
2253
98185b9f 2254 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
2255 for const member functions of std::basic_string.
2256 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
2257 in C++17.
2258 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
2259 Make non-standard constructor private.
2260 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
2261 Likewise.
2262 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
2263 explicit instantiations for C++17 as well as earlier dialects.
2264 * src/c++17/Makefile.am: Add new source files.
2265 * src/c++17/Makefile.in: Regenerate.
2266 * src/c++17/cow-string-inst.cc: New file defining explicit
2267 instantiations for basic_string member functions added in C++17.
2268 * src/c++17/string-inst.cc: Likewise.
2269
859e6fed 2270 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
2271 copy/move constructors for old std::basic_string.
2272 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2273 (basic_string::reference, basic_string::const_reference): Define
2274 as plain references for C++11 and later.
2275 (basic_string::basic_string()): Put constructor body outside
2276 preprocessor conditional groups.
2277 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
2278 instead of copying it.
2279 (basic_string::basic_string(const basic_string&, const _Alloc&)):
2280 Define.
2281 (basic_string::basic_string(basic_string&&, const _Alloc&)):
2282 Define.
2283 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
2284 cases for old basic_string.
2285 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
2286 allocator-extended constructors unconditionally. Add extra members to
2287 allocator type when using old string ABI.
2288 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
2289 for old string ABI.
2290 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
2291
e13f6a7f 2292 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
2293 -fno-inline added to test flags.
2294
a18fccd0 2295 * testsuite/21_strings/basic_string/requirements/
2296 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
2297
7f77ca07 2298 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
2299 assertion failures with old std::string ABI.
2300
9346fb0e 2301 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
2302 with ...
2303 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
2304 functions that will only erase elements at the end.
2305 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
2306 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
2307 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
2308 of erase(p, end()).
2309 (path::_List::pop_back()): Define.
2310 (path::_List::_M_erase_from(const_iterator)): Define.
2311 (path::operator/=(const path&)): Use pop_back to remove last component
2312 and _M_erase_from to remove multiple components.
2313 (path::_M_append(basic_string_view<value_type>)): Likewise.
2314 (path::operator+=(const path&)): Likewise.
2315 (path::_M_concat(basic_string_view<value_type>)): Likewise.
2316 (path::remove_filename()): Likewise.
2317 (path::lexically_normal()): Use _List::_Impl iterators instead of
2318 path::iterator. Use pop_back to remove components from the end. Clear
2319 trailing filename, instead of using erase(const_iterator) to remove
2320 a non-final component.
2321 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
2322 additional cases.
2323 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
2324
24230cab 2325 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
2326 incorrect treatment of empty filename after trailing slash.
2327 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
2328
6b4a77f2 2329 * testsuite/21_strings/basic_string/modifiers/assign/char/
2330 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
2331 to test flags.
2332 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
2333 move_assign_optim.cc: Likewise.
2334
02df5941 23352019-01-03 Jonathan Wakely <jwakely@redhat.com>
2336 Jakub Jelinek <jakub@redhat.com>
2337
2338 PR libstdc++/88607
2339 * include/experimental/memory: Replace UTF-8 quote characters.
2340 * include/std/future: Replace UTF-8 "em dash" characters.
2341
f8ad40d8 23422019-01-03 Jonathan Wakely <jwakely@redhat.com>
2343
9013258b 2344 PR libstdc++/88607
2345 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
2346 * include/debug/forward_list: Likewise.
2347 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
2348 character.
2349 * include/experimental/chrono: Likewise.
2350 * include/experimental/functional: Likewise.
2351 * include/experimental/ratio: Likewise.
2352 * include/experimental/system_error: Likewise.
2353 * include/experimental/tuple: Likewise.
2354 * include/experimental/type_traits: Likewise.
2355 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
2356 * include/parallel/multiseq_selection.h: Likewise.
2357
f8ad40d8 2358 PR libstdc++/88681
2359 * config/abi/pre/gnu.ver: Add missing exports.
2360 * testsuite/22_locale/collate_byname/88681.cc: New test.
2361 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
2362 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
2363
138292f4 23642019-01-02 Jonathan Wakely <jwakely@redhat.com>
2365
553d41a8 2366 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
2367 initializer_list<value_type> and from input iterator ranges.
2368 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
2369
138292f4 2370 * testsuite/experimental/string_view/element_access/char/empty.cc:
2371 Fix year range in copyright header.
2372
963c0125 23732019-01-02 Joel Brobecker <brobecker@adacore.com>
2374
2375 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
2376 Fix year range in copyright header.
2377
fbd26352 23782019-01-01 Jakub Jelinek <jakub@redhat.com>
d353bf18 2379
2380 Update copyright years.
fb96fbb3 2381\f
fbd26352 2382Copyright (C) 2019 Free Software Foundation, Inc.
fb96fbb3 2383
2384Copying and distribution of this file, with or without modification,
2385are permitted in any medium without royalty provided the copyright
2386notice and this notice are preserved.