]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
runtime: use the call instruction's PC for panic-in-runtime detection
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
710397ad 12019-01-29 Jonathan Wakely <jwakely@redhat.com>
2
5f15e718 3 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
4 __shared_ptr instantiations used by gcc4-compatible ABI.
5
307e86fc 6 * include/experimental/forward_list (experimental::erase): Qualify
7 call to erase_if.
8 * include/experimental/list (experimental::erase): Likewise.
9 * include/std/forward_list (std::erase): Likewise.
10 * include/std/list (std::erase): Likewise.
11
38129d1a 12 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
13 C++2a.
14 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
15 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
16 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
17 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
18 * testsuite/ext/array_allocator/26875.cc: Likewise.
19 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
20 * testsuite/util/replacement_memory_operators.h: Likewise.
21 * testsuite/util/testsuite_allocator.h: Likewise.
22
710397ad 23 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
24 normal mode vector, even for debug mode.
25 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
26 Define alias template for normal mode vector.
27
70f71249 282019-01-28 Jonathan Wakely <jwakely@redhat.com>
29
30 PR libstdc++/68737
31 * config/locale/generic/c_locale.h (__convert_from_v)
32 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
33 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
34 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
35 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
36
f1074115 372019-01-24 Jonathan Wakely <jwakely@redhat.com>
38
4bc4fd90 39 PR libstdc++/88840
40 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
41 data member with static member function _S_use_relocate().
42 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
43 (vector::_M_default_append): Use _S_use_relocate() instead of
44 __use_relocate.
45
f1074115 46 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
47 sign of results.
48
1c4657a3 492019-01-22 Jonathan Wakely <jwakely@redhat.com>
50
51 PR libstdc++/88740
52 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
53 write to stderr instead of using printf.
54
dafe8c59 552019-01-21 Jakub Jelinek <jakub@redhat.com>
56
57 PR libstdc++/86590
58 * include/bits/char_traits.h (__constant_string_p,
59 __constant_char_array_p): Use __builtin_is_constant_evaluated if
60 available.
61
eaf966f3 622019-01-20 Ulrich Drepper <drepper@redhat.com>
63
64 Implement C++20 P0600r1.
65 * include/backward/hash_map: Add nodiscard attribute to empty.
66 * include/backward/hash_set: Likewise.
67 * backward/hashtable.h: Likewise.
68 * include/bits/basic_string.h: Likewise.
69 * include/bits/forward_list.h: Likewise.
70 * include/bits/hashtable.h: Likewise.
71 * include/bits/regex.h: Likewise.
72 * include/bits/stl_deque.h: Likewise.
73 * include/bits/stl_list.h: Likewise.
74 * include/bits/stl_map.h: Likewise.
75 * include/bits/stl_multimap.h: Likewise.
76 * include/bits/stl_multiset.h: Likewise.
77 * include/bits/stl_queue.h: Likewise.
78 * include/bits/stl_set.h: Likewise.
79 * include/bits/stl_stack.h: Likewise.
80 * include/bits/stl_tree.h: Likewise.
81 * include/bits/stl_vector.h: Likewise.
82 * include/bits/unordered_map.h: Likewise.
83 * include/bits/unordered_set.h: Likewise.
84 * include/debug/array: Likewise.
85 * include/experimental/any: Likewise.
86 * include/experimental/bits/fs_path.h: Likewise.
87 * include/experimental/internet: Likewise.
88 * include/experimental/string_view: Likewise.
89 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
90 Likewise.
91 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
92 Likewise.
93 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
94 Likewise.
95 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
96 Likewise.
97 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
98 Likewise.
99 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
100 Likewise.
101 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
102 Likewise.
103 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
104 Likewise.
105 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
106 info_fn_imps.hpp: Likewise.
107 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
108 left_child_next_sibling_heap_.hpp: Likewise.
109 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
110 Likewise.
111 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
112 Likewise.
113 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
114 Likewise.
115 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
116 Likewise.
117 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
118 Likewise.
119 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
120 Likewise.
121 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
122 Likewise.
123 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
124 * include/ext/pb_ds/trie_policy.hpp: Likewise.
125 * include/ext/rope: Likewise.
126 * include/ext/slist: Likewise.
127 * include/ext/vstring.h: Likewise.
128 * include/profile/array: Likewise.
129 * include/std/array: Likewise.
130 * include/tr1/array: Likewise.
131 * include/tr1/hashtable.h: Likewise.
132 * include/tr1/regex: Likewise.
133 * include/tr2/dynamic_bitset: Likewise.
134 * include/bits/alloc_traits.h: Add nodiscard attribute to
135 allocate.
136 * include/experimental/memory_resource: Likewise.
137 * include/ext/alloc_traits.h: Likewise.
138 * include/ext/array_allocator.h: Likewise.
139 * include/ext/bitmap_allocator.h: Likewise.
140 * include/ext/debug_allocator.h: Likewise.
141 * include/ext/extptr_allocator.h: Likewise.
142 * include/ext/mt_allocator.h: Likewise.
143 * include/ext/new_allocator.h: Likewise.
144 * include/ext/pool_allocator.h: Likewise.
145 * include/ext/throw_allocator.h: Likewise.
146 * include/std/scoped_allocator: Likewise.
147 * libsupc++/eh_alloc.cc: Likewise.
148 * include/std/future: Add nodiscard attribute to async.
149 * libsupc++/new: Add nodiscard attribute to new.
150
3c1c2a8c 1512019-01-18 Jonathan Wakely <jwakely@redhat.com>
152
153 PR libstdc++/87514
154 PR libstdc++/87520
155 PR libstdc++/88782
156 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
157 * include/bits/shared_ptr.h
158 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
159 (allocate_shared): Change to use new tag type.
160 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
161 Declare new member function.
162 (_Sp_alloc_shared_tag): Define new type.
163 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
164 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
165 _Sp_make_shared_tag::_S_eq to check type_info.
166 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
167 Constrain to prevent being called with _Sp_alloc_shared_tag.
168 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
169 Replace constructor with ...
170 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
171 reference parameter so address of the new object can be returned to
172 the caller. Obtain the allocator from the tag type.
173 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
174 constructor with ...
175 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
176 to the __shared_count constructor.
177 (__allocate_shared): Change to use new tag type.
178 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
179
21a962b2 1802019-01-17 Jonathan Wakely <jwakely@redhat.com>
181
464ac146 182 * src/c++17/fs_ops.cc
183 (equivalent(const path&, const path&, error_code&))
184 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
185 compare files instead of relying on incomplete info returned by stat.
186
2987a93d 187 PR libstdc++/88884
188 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
189 if the path is already absolute.
190 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
191 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
192
21a962b2 193 PR libstdc++/88881
194 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
195 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
196 of filesystem::exists.
197 (create_directories(const path&, error_code&)): Add assertions.
198 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
199 Add workaround for bug in _wstat for paths with trailing slash.
200 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
201 for expected behaviour on mingw.
202 * testsuite/experimental/filesystem/operations/create_directories.cc:
203 Likewise.
204 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
205 "TMP" instead of "TMPDIR" and clean environment before each test. Do
206 not test permissions on mingw targets.
207
93478c9f 2082019-01-16 Jonathan Wakely <jwakely@redhat.com>
209
210 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
211 constructors and open members taking wide strings. Fix patterns for
212 filesystem::path members to match wstring_view parameters. Add
213 exports for shared_ptr members used by directory iterators.
214 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
215 error code parameter if the file doesn't exist.
216 * src/filesystem/ops.cc (remove(const path&, error_code&)):
217 Likewise.
218 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
219 values for mingw targets, where "/" is not an absolute path. Do not
220 test symlinks on mingw targets.
221 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
222 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
223 on mingw targets.
224 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
225 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
226 that each component of the path is created.
227 * testsuite/experimental/filesystem/operations/create_directories.cc:
228 Likewise.
229 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
230 permissions on mingw targets.
231 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
232 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
233 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
234 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
235 mingw targets.
236 * testsuite/experimental/filesystem/operations/permissions.cc:
237 Likewise.
238 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
239 symlinks or permissions on mingw targets.
240 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
241 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
242 symlinks on mingw targets.
243 * testsuite/experimental/filesystem/operations/remove_all.cc:
244 Likewise.
245 * testsuite/27_io/filesystem/operations/status.cc: Do not test
246 permissions on mingw targets.
247 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
248 test symlinks on mingw targets.
249 * testsuite/experimental/filesystem/operations/space.cc: Fix test
250 for mingw targets.
251
af93b844 2522019-02-14 Ulrich Drepper <drepper@redhat.com>
253
254 PR libstdc++/88738
255 Warn about unused comparisons of shared_ptr/unique_ptr
256 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
257 * include/bits/shared_ptr.h: Use it for operator ==, !=,
258 <, <=, >, >= for shared_ptr.
259 * include/bits/unique_ptr.h: Likewise for unique_ptr.
260
8793c0de 2612019-01-15 Jonathan Wakely <jwakely@redhat.com>
262
afa61572 263 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
264 as 201611L, because P0497R0 changes are supported.
265 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
266
feb89906 267 * include/bits/erase_if.h [__cplusplus > 201703L]
268 (__cpp_lib_erase_if): Only define for C++2a.
269 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
270 (__cpp_lib_null_iterators): Define.
271 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
272 (__cpp_lib_null_iterators): Define.
273 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
274
d253bcb1 275 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
276 status.
277 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
278 Define.
279 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
280 changes are supported.
281 * include/std/optional (__cpp_lib_optional): Likewise.
282 * include/std/variant (__cpp_lib_variant): Likewise.
283 * include/std/version [!__STRICT_ANSI__]
284 (__cpp_lib_uncaught_exceptions): Define as long integer.
285 [__cplusplus >= 201703L] (__cpp_lib_any)
286 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
287 (__cpp_lib_variant): Define for C++17.
288 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
289 as long integer.
290 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
291 integer.
292
8793c0de 293 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
294
a8cd4b2b 2952019-01-12 Jonathan Wakely <jwakely@redhat.com>
296
297 PR libstdc++/88811
298 PR libstdc++/83306
299 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
300 before second path.
301 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
302 test.
303
a5b1332c 3042019-01-11 Jonathan Wakely <jwakely@redhat.com>
305
656ac8b7 306 * doc/xml/manual/intro.xml: Include new section.
307 * doc/xml/manual/status_cxx2017.xml: Document more
308 implementation-defined properties of the library.
309 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
310 * doc/html/*: Regenerate.
311
f5480b8c 312 * include/bits/refwrap.h [__cplusplus > 201703L]
313 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
314 (_Reference_wrapper_base_memfun): Do not define for C++2a.
315 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
316 for C++2a.
317 (reference_wrapper::operator()): Add static assertion.
318 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
319
36496c4d 320 * include/std/chrono (duration_values::zero(), duration_values::min())
321 (duration_values::max()): Add noexcept.
322 (duration::zero(), duration::min(), duration::max()): Likewise.
323 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
324 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
325 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
326
a5b1332c 327 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
328
d9de68bc 3292019-01-11 Jakub Jelinek <jakub@redhat.com>
330
331 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
332 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
333
beb370cb 3342019-01-11 Jonathan Wakely <jwakely@redhat.com>
335
1d628fd4 336 PR libstdc++/88802
337 * include/bits/functional_hash.h (hash<nullptr_t>): Define
338 specialization for C++17 (P0513R0, LWG 2817).
339 * testsuite/20_util/hash/nullptr.cc: New test.
340
a18b3766 341 PR libstdc++/88125
342 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
343 pattern for std::basic_stringbuf::str().
344
beb370cb 345 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
346 basic_ostream::operator<< patterns.
347
cbbb35ec 3482019-01-10 Jonathan Wakely <jwakely@redhat.com>
349
1715824b 350 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
351 test failures on targets with 32-bit time_t.
352
f5529091 353 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
354 * include/std/deque: Likewise.
355 * include/std/forward_list: Likewise.
356 * include/std/list: Likewise.
357 * include/std/string: Likewise.
358 * include/std/vector: Likewise.
359 * include/std/version: Likewise.
360 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
361 * testsuite/23_containers/deque/erasure.cc: Likewise.
362 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
363 * testsuite/23_containers/list/erasure.cc: Likewise.
364 * testsuite/23_containers/map/erasure.cc: Likewise.
365 * testsuite/23_containers/set/erasure.cc: Likewise.
366 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
367 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
368 * testsuite/23_containers/vector/erasure.cc: Likewise.
369
cbbb35ec 370 * include/experimental/internet [AI_NUMERICSERV]
371 (resolver_base::numeric_service): Define conditionally.
372 * testsuite/experimental/net/internet/resolver/base.cc: Test it
373 conditionally.
374 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
375 Likewise.
376
ac9a8436 3772019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
378 Jonathan Wakely <jwakely@redhat.com>
379
380 Implement LWG 2221
381 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
382 (GLIBCXX_3.4.26): Add new exports.
383 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
384 correct list of sources.
385 * include/Makefile.in: Regenerate.
386 * include/std/ostream (operator<<(nullptr_t)): New member function.
387 * src/c++17/ostream-inst.cc: New file.
388 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
389 test.
390
5f027941 3912019-01-10 Jonathan Wakely <jwakely@redhat.com>
392
393 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
394 of the source file containing the caller.
395 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
396 directories created by test.
397 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
398 Likewise.
399 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
400 Likewise.
401 * testsuite/experimental/filesystem/iterators/
402 recursive_directory_iterator.cc: Likewise.
403
3273d2e6 4042019-01-10 Jakub Jelinek <jakub@redhat.com>
405
406 PR tree-optimization/88775
407 * include/bits/stl_function.h (greater<_Tp*>::operator(),
408 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
409 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
410 instead of __builtin_constant_p if available. Don't bother with
411 the pointer comparison in C++11 and earlier.
412
f4d3c071 4132019-01-09 Sandra Loosemore <sandra@codesourcery.com>
414
415 PR other/16615
416
417 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
418 with "cannot".
419
8eba10af 4202019-01-09 Jonathan Wakely <jwakely@redhat.com>
421
6a6ade9f 422 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
423 for filesystem::path. Give variables more distinctive names.
424
41cda271 425 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
426 member function to perform non-trivial assignment.
427 (_Optional_payload_base::_M_move_assign): Likewise.
428 (_Optional_payload<T, true, false, true>::operator=)
429 (_Optional_payload<T, true, true, false>::operator=)
430 (_Optional_payload<T, true, false, false>::operator=): Call
431 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
432
8eba10af 433 PR libstdc++/88204
434 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
435 test std::complex<long double> if long double format is IBM128.
436 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
437 Likewise.
438
64a50f48 4392019-01-08 Jonathan Wakely <jwakely@redhat.com>
440
73f3ad16 441 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
442 for old std::unique_ptr layout.
443 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
444 to become valueless. Add filesystem::path tests.
445
58e897da 446 PR libstdc++/87855
447 * include/std/optional (_Optional_payload_base): New class template
448 for common code hoisted from _Optional_payload specializations. Use
449 a template for the union, to allow a partial specialization for
450 types with non-trivial destructors. Add constructors for in-place
451 initialization to the union.
452 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
453 to perform non-trivial copy construction, instead of relying on
454 non-standard copy elision in a delegating constructor.
455 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
456 non-trivial move construction.
457 (_Optional_payload): Derive from _Optional_payload_base and use it
458 for everything except the non-trivial assignment operators, which are
459 defined as needed.
460 (_Optional_payload<false, C, M>): Derive from the specialization
461 _Optional_payload<true, false, false> and add a destructor.
462 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
463 Forward to corresponding members of _Optional_payload.
464 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
465 Hoist common members from _Optional_base.
466 (_Optional_base): Make all members and base class public.
467 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
468 _Optional_base_impl.
469 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
470 support for new std::optional layout.
471 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
472
64a50f48 473 PR libstdc++/88066
474 * include/bits/locale_conv.h: Use <> for includes not "".
475 * include/ext/random: Likewise.
476 * include/ext/vstring.h: Likewise.
477
95b40931 4782019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
479
480 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
481 (GLIBCXX_3.4.21): Likewise.
482
fa00ec77 4832019-01-08 Jonathan Wakely <jwakely@redhat.com>
484
485 PR libstdc++/88749
486 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
487 to match the one that controls whether utimbuf and utime are declared.
488
3f304b2d 4892019-01-07 Jonathan Wakely <jwakely@redhat.com>
490
fc6ac813 491 PR libstdc++/87787
492 * include/bits/char_traits.h (char_traits::move): Do not pass null
493 pointers to memmove.
494 * include/bits/locale_facets.h
495 (ctype<char>::widen(const char*, const char*, char*)): Do not
496 pass null pointers to memcpy.
497 (ctype<char>::narrow(const char*, const char*, char, char*)):
498 Likewise.
499 (ctype<char>::do_widen(const char*, const char*, char*)):
500 Likewise.
501 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
502 Likewise.
503
bbc66c45 504 * doc/xml/manual/spine.xml: Update copyright years.
505 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
506 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
507 for C++17 filesystem library.
508 * doc/html/*: Regenerate.
509
3f304b2d 510 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
511 * config.h.in: Regenerate.
512 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
513 alphabetically and add missing entries for copy_symlink,
514 hard_link_count, rename, and resize_file.
515 * configure: Regenerate.
516 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
517 used unconditionally.
518 * src/filesystem/ops-common.h (__gnu_posix::truncate)
519 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
520 supports truncating to zero length.
521 * testsuite/27_io/filesystem/operations/all.cc: New test.
522 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
523
0ebb0980 5242019-01-06 Jonathan Wakely <jwakely@redhat.com>
525
3935f409 526 PR libstdc++/86756
527 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
528 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
529 * config.h.in: Regenerate.
530 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
531 remaining std::filesystem types and functions.
532 * configure: Regenerate.
533 * src/c++17/Makefile.am: Add C++17 filesystem sources.
534 * src/c++17/Makefile.in: Regenerate.
535 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
536 here, and change name of included file.
537 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
538 here, and change name of included file.
539 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
540 path to dir-common.h.
541 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
542 path to ops-common.h. Disable -Wunused-parameter warnings.
543 (internal_file_clock): Define unconditionally.
544 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
545 define.
546 (do_copy_file, do_space): Move definitions to ops.common.h.
547 (copy, file_size, hard_link_count, last_write_time, space): Only
548 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
549 report an error.
550 (last_write_time, read_symlink): Remove unused attributes from
551 parameters.
552 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
553 * src/filesystem/Makefile.in: Regenerate.
554 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
555 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
556 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
557 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
558 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
559 dummy types and functions instead of using #error.
560 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
561 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
562 in terms of stat.
563 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
564 (do_copy_file, do_space): Move definitions here from std-ops.cc.
565 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
566 to account for new namespace.
567 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
568 -lstdc++fs from dg-options.
569 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
570 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
571 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
572 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
573 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
574 Likewise.
575 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
576 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
577 Likewise.
578 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
579 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
580 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
581 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
582 * testsuite/27_io/filesystem/operations/create_directories.cc:
583 Likewise.
584 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
585 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
586 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
587 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
588 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
589 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
590 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
591 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
592 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
593 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
594 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
595 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
596 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
597 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
598 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
599 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
600 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
601 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
602 Likewise.
603 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
604
605
c6e37a9f 606 PR libstdc++/86756
607 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
608 typeinfo and vtables less greedy.
609 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
610 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
611 * src/c++17/Makefile.in: Regenerate.
612 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
613 here, and change name of included file.
614 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
615 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
616 from sources.
617 * src/filesystem/Makefile.in: Regenerate.
618 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
619 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
620 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
621 from dg-options and remove dg-require-filesystem-ts.
622 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
623 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
624 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
625 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
626 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
627 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
628 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
629 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
630 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
631 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
632 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
633 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
634 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
635 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
636 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
637 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
638 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
639 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
640 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
641 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
642 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
643 Likewise.
644 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
645 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
646 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
647 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
648 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
649 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
650 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
651 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
652 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
653 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
654 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
655 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
656 Likewise.
657 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
658 Likewise.
659 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
660 Likewise.
661 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
662 Likewise.
663 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
664 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
665 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
666 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
667 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
668 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
669 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
670 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
671 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
672 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
673 Likewise.
674 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
675 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
676 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
677 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
678 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
679
8815ac91 680 PR libstdc++/87431
681 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
682 Check is_trivially_copyable instead of is_scalar.
683 (variant::emplace<N, Args>(Args&&...)): If construction of the new
684 contained value can throw and its type is trivially copyable then
685 construct into a temporary variant and move from it, to provide the
686 strong exception safety guarantee.
687 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
688 Likewise.
689 * testsuite/20_util/variant/87431.cc: New test.
690 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
691 conversion causes valueless state.
692
0ebb0980 693 PR libstdc++/88607
694 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
695 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
696 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
697 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
698 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
699
adc6beee 7002019-01-05 Jonathan Wakely <jwakely@redhat.com>
701
702 * include/bits/fs_fwd.h (__file_clock): Define new clock.
703 (file_time_type): Redefine in terms of __file_clock.
704 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
705 overflow.
706 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
707 internal linkage.
708 (internal_file_lock): New helper type for accessing __file_clock.
709 (do_copy_file): Use internal_file_lock to convert system time to
710 file_time_type.
711 (last_write_time(const path&, error_code&)): Likewise.
712 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
713
6b4a77f2 7142019-01-04 Jonathan Wakely <jwakely@redhat.com>
715
98185b9f 716 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
717 for const member functions of std::basic_string.
718 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
719 in C++17.
720 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
721 Make non-standard constructor private.
722 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
723 Likewise.
724 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
725 explicit instantiations for C++17 as well as earlier dialects.
726 * src/c++17/Makefile.am: Add new source files.
727 * src/c++17/Makefile.in: Regenerate.
728 * src/c++17/cow-string-inst.cc: New file defining explicit
729 instantiations for basic_string member functions added in C++17.
730 * src/c++17/string-inst.cc: Likewise.
731
859e6fed 732 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
733 copy/move constructors for old std::basic_string.
734 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
735 (basic_string::reference, basic_string::const_reference): Define
736 as plain references for C++11 and later.
737 (basic_string::basic_string()): Put constructor body outside
738 preprocessor conditional groups.
739 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
740 instead of copying it.
741 (basic_string::basic_string(const basic_string&, const _Alloc&)):
742 Define.
743 (basic_string::basic_string(basic_string&&, const _Alloc&)):
744 Define.
745 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
746 cases for old basic_string.
747 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
748 allocator-extended constructors unconditionally. Add extra members to
749 allocator type when using old string ABI.
750 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
751 for old string ABI.
752 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
753
e13f6a7f 754 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
755 -fno-inline added to test flags.
756
a18fccd0 757 * testsuite/21_strings/basic_string/requirements/
758 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
759
7f77ca07 760 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
761 assertion failures with old std::string ABI.
762
9346fb0e 763 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
764 with ...
765 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
766 functions that will only erase elements at the end.
767 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
768 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
769 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
770 of erase(p, end()).
771 (path::_List::pop_back()): Define.
772 (path::_List::_M_erase_from(const_iterator)): Define.
773 (path::operator/=(const path&)): Use pop_back to remove last component
774 and _M_erase_from to remove multiple components.
775 (path::_M_append(basic_string_view<value_type>)): Likewise.
776 (path::operator+=(const path&)): Likewise.
777 (path::_M_concat(basic_string_view<value_type>)): Likewise.
778 (path::remove_filename()): Likewise.
779 (path::lexically_normal()): Use _List::_Impl iterators instead of
780 path::iterator. Use pop_back to remove components from the end. Clear
781 trailing filename, instead of using erase(const_iterator) to remove
782 a non-final component.
783 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
784 additional cases.
785 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
786
24230cab 787 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
788 incorrect treatment of empty filename after trailing slash.
789 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
790
6b4a77f2 791 * testsuite/21_strings/basic_string/modifiers/assign/char/
792 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
793 to test flags.
794 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
795 move_assign_optim.cc: Likewise.
796
02df5941 7972019-01-03 Jonathan Wakely <jwakely@redhat.com>
798 Jakub Jelinek <jakub@redhat.com>
799
800 PR libstdc++/88607
801 * include/experimental/memory: Replace UTF-8 quote characters.
802 * include/std/future: Replace UTF-8 "em dash" characters.
803
f8ad40d8 8042019-01-03 Jonathan Wakely <jwakely@redhat.com>
805
9013258b 806 PR libstdc++/88607
807 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
808 * include/debug/forward_list: Likewise.
809 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
810 character.
811 * include/experimental/chrono: Likewise.
812 * include/experimental/functional: Likewise.
813 * include/experimental/ratio: Likewise.
814 * include/experimental/system_error: Likewise.
815 * include/experimental/tuple: Likewise.
816 * include/experimental/type_traits: Likewise.
817 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
818 * include/parallel/multiseq_selection.h: Likewise.
819
f8ad40d8 820 PR libstdc++/88681
821 * config/abi/pre/gnu.ver: Add missing exports.
822 * testsuite/22_locale/collate_byname/88681.cc: New test.
823 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
824 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
825
138292f4 8262019-01-02 Jonathan Wakely <jwakely@redhat.com>
827
553d41a8 828 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
829 initializer_list<value_type> and from input iterator ranges.
830 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
831
138292f4 832 * testsuite/experimental/string_view/element_access/char/empty.cc:
833 Fix year range in copyright header.
834
963c0125 8352019-01-02 Joel Brobecker <brobecker@adacore.com>
836
837 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
838 Fix year range in copyright header.
839
fbd26352 8402019-01-01 Jakub Jelinek <jakub@redhat.com>
d353bf18 841
842 Update copyright years.
fb96fbb3 843\f
fbd26352 844Copyright (C) 2019 Free Software Foundation, Inc.
fb96fbb3 845
846Copying and distribution of this file, with or without modification,
847are permitted in any medium without royalty provided the copyright
848notice and this notice are preserved.