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