Fix libstdc++ filesystem tests
[gcc.git] / libstdc++-v3 / ChangeLog
1 2019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
2
3 * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
4 * 27_io/filesystem/operations/resize_file.cc: Likewise.
5 * 27_io/filesystem/path/generation/normal2.cc: Likewise.
6
7 2019-02-14 Jonathan Wakely <jwakely@redhat.com>
8
9 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
10 * doc/html/*: Regenerate.
11
12 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
13 * doc/html/*: Regenerate.
14
15 * doc/xml/manual/intro.xml: Document LWG 2586 status.
16 * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
17 allocator type in is_constructible checks.
18 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
19 * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
20 * testsuite/20_util/tuple/cons/allocators.cc: Add test using
21 problematic type from LWG 2586 discussion.
22 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
23 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
24
25 * configure.ac: Check for C11 timespec_get function.
26 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
27 (openbsd): Likewise
28 * config.h.in: Regenerate.
29 * configure: Regenerate.
30 * include/c_global/ctime (timespec, timespec_get): Add to namespace
31 std for C++17 and up.
32
33 * doc/xml/manual/intro.xml: Document LWG 2537 status.
34 * include/bits/stl_queue.h
35 (priority_queue(const Compare&, const Container&, const Alloc&))
36 (priority_queue(const Compare&, Container&&, const Alloc&)): Call
37 make_heap.
38 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
39
40 * doc/xml/manual/intro.xml: Document LWG 2566 status.
41 * include/bits/stl_queue.h (queue, priority_queue): Add static
42 assertions to enforce LWG 2566 requirement on value_type.
43 * include/bits/stl_stack.h (stack): Likewise.
44
45 PR middle-end/89303
46 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
47
48 * doc/xml/manual/intro.xml: Document LWG 2735 status.
49 * include/bits/std_abs.h: Add comment about LWG 2735.
50 * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
51
52 2019-02-13 Jonathan Wakely <jwakely@redhat.com>
53
54 PR libstdc++/89345
55 * include/std/version [__cpp_impl_destroying_delete]
56 (__cpp_lib_destroying_delete): Only define for C++2a and later.
57 * libsupc++/new [__cpp_impl_destroying_delete]
58 (__cpp_lib_destroying_delete): Likewise.
59 (destroying_delete_t, destroying_delete): Likewise, but define even
60 when __cpp_impl_destroying_delete is not defined.
61 * testsuite/18_support/destroying_delete.cc: New test.
62
63 2019-02-11 Jonathan Wakely <jwakely@redhat.com>
64
65 PR libstdc++/89023
66 * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
67 * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
68 * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
69 * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
70
71 2019-02-09 Jonathan Wakely <jwakely@redhat.com>
72
73 PR libstdc++/71044
74 * include/bits/fs_path.h (path::has_root_name)
75 (path::has_root_directory, path::has_root_path)
76 (path::has_relative_path, path::has_parent_path)
77 (path::has_filename, path::has_stem, path::has_extension)
78 (path::is_absolute, path::is_relative, path::_M_find_extension): Add
79 noexcept.
80 * src/c++17/fs_path.cc (path::has_root_name)
81 (path::has_root_directory, path::has_root_path)
82 (path::has_relative_path, path::has_parent_path)
83 (path::has_filename, path::_M_find_extension): Add noexcept.
84
85 2019-02-06 Jonathan Wakely <jwakely@redhat.com>
86
87 PR libstdc++/89102 (partial)
88 * include/std/type_traits (common_type<>): Define.
89 (common_type<T>): Derive from common_type<T, T>.
90 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
91 Test zero-length template argument list.
92 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
93 Test additional single argument cases.
94 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
95 Adjust expected error.
96
97 2019-02-05 Jonathan Wakely <jwakely@redhat.com>
98
99 PR libstdc++/89128
100 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
101 guides.
102 * include/bits/stl_stack.h (stack): Likewise.
103 * testsuite/23_containers/priority_queue/deduction.cc: New test.
104 * testsuite/23_containers/queue/deduction.cc: New test.
105 * testsuite/23_containers/stack/deduction.cc: New test.
106
107 PR libstdc++/89194
108 * include/std/type_traits (__is_convertible_helper)
109 (__is_convertible_helper<_From, _To, false>): Revert changes to
110 support is_nothrow_convertible.
111 (__is_nt_convertible_helper): New helper.
112 (is_nothrow_convertible): Use __is_nt_convertible_helper.
113
114 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
115 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
116
117 PR libstdc++/89130
118 * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
119 __is_alloc_insertable_impl. Replace single type member with two
120 members, one for each of copy and move insertable.
121 (__is_move_insertable): New trait for internal use.
122 * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
123 (vector::_S_nothrow_relocate(true_type)): New functions to
124 conditionally check if __relocate_a can throw.
125 (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
126 on __is_move_insertable.
127 (vector::_S_do_relocate): New overloaded functions to conditionally
128 call __relocate_a.
129 (vector::_S_relocate): New function that dispatches to _S_do_relocate
130 based on _S_use_relocate.
131 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
132 (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
133 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
134
135 PR libstdc++/89090
136 * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
137 parameter unnamed. Add message to static assertion.
138 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
139 (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
140 in C++11 code.
141
142 2019-02-05 Marc Glisse <marc.glisse@inria.fr>
143
144 PR libstdc++/87106
145 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
146 Rename...
147 (__is_bitwise_relocatable): ... to this.
148 (__relocate_a_1): Adapt.
149 * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
150 (__is_bitwise_relocatable): ... to this.
151
152 2019-01-30 Jonathan Wakely <jwakely@redhat.com>
153
154 PR libstdc++/89117
155 * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
156 final component as well as from _M_pathname. Append the dot using
157 operator+= instead of only to _M_pathname.
158 (path::_M_find_extension): Reformat slightly.
159 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
160 Add more test cases.
161
162 2019-01-30 Ulrich Drepper <drepper@redhat.com>
163
164 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
165
166 2019-01-29 Jonathan Wakely <jwakely@redhat.com>
167
168 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
169 constexpr specifiers from arg and proj.
170
171 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
172 __shared_ptr instantiations used by gcc4-compatible ABI.
173
174 * include/experimental/forward_list (experimental::erase): Qualify
175 call to erase_if.
176 * include/experimental/list (experimental::erase): Likewise.
177 * include/std/forward_list (std::erase): Likewise.
178 * include/std/list (std::erase): Likewise.
179
180 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
181 C++2a.
182 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
183 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
184 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
185 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
186 * testsuite/ext/array_allocator/26875.cc: Likewise.
187 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
188 * testsuite/util/replacement_memory_operators.h: Likewise.
189 * testsuite/util/testsuite_allocator.h: Likewise.
190
191 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
192 normal mode vector, even for debug mode.
193 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
194 Define alias template for normal mode vector.
195
196 2019-01-28 Jonathan Wakely <jwakely@redhat.com>
197
198 PR libstdc++/68737
199 * config/locale/generic/c_locale.h (__convert_from_v)
200 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
201 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
202 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
203 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
204
205 2019-01-24 Jonathan Wakely <jwakely@redhat.com>
206
207 PR libstdc++/88840
208 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
209 data member with static member function _S_use_relocate().
210 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
211 (vector::_M_default_append): Use _S_use_relocate() instead of
212 __use_relocate.
213
214 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
215 sign of results.
216
217 2019-01-22 Jonathan Wakely <jwakely@redhat.com>
218
219 PR libstdc++/88740
220 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
221 write to stderr instead of using printf.
222
223 2019-01-21 Jakub Jelinek <jakub@redhat.com>
224
225 PR libstdc++/86590
226 * include/bits/char_traits.h (__constant_string_p,
227 __constant_char_array_p): Use __builtin_is_constant_evaluated if
228 available.
229
230 2019-01-20 Ulrich Drepper <drepper@redhat.com>
231
232 Implement C++20 P0600r1.
233 * include/backward/hash_map: Add nodiscard attribute to empty.
234 * include/backward/hash_set: Likewise.
235 * backward/hashtable.h: Likewise.
236 * include/bits/basic_string.h: Likewise.
237 * include/bits/forward_list.h: Likewise.
238 * include/bits/hashtable.h: Likewise.
239 * include/bits/regex.h: Likewise.
240 * include/bits/stl_deque.h: Likewise.
241 * include/bits/stl_list.h: Likewise.
242 * include/bits/stl_map.h: Likewise.
243 * include/bits/stl_multimap.h: Likewise.
244 * include/bits/stl_multiset.h: Likewise.
245 * include/bits/stl_queue.h: Likewise.
246 * include/bits/stl_set.h: Likewise.
247 * include/bits/stl_stack.h: Likewise.
248 * include/bits/stl_tree.h: Likewise.
249 * include/bits/stl_vector.h: Likewise.
250 * include/bits/unordered_map.h: Likewise.
251 * include/bits/unordered_set.h: Likewise.
252 * include/debug/array: Likewise.
253 * include/experimental/any: Likewise.
254 * include/experimental/bits/fs_path.h: Likewise.
255 * include/experimental/internet: Likewise.
256 * include/experimental/string_view: Likewise.
257 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
258 Likewise.
259 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
260 Likewise.
261 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
262 Likewise.
263 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
264 Likewise.
265 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
266 Likewise.
267 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
268 Likewise.
269 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
270 Likewise.
271 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
272 Likewise.
273 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
274 info_fn_imps.hpp: Likewise.
275 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
276 left_child_next_sibling_heap_.hpp: Likewise.
277 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
278 Likewise.
279 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
280 Likewise.
281 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
282 Likewise.
283 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
284 Likewise.
285 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
286 Likewise.
287 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
288 Likewise.
289 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
290 Likewise.
291 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
292 * include/ext/pb_ds/trie_policy.hpp: Likewise.
293 * include/ext/rope: Likewise.
294 * include/ext/slist: Likewise.
295 * include/ext/vstring.h: Likewise.
296 * include/profile/array: Likewise.
297 * include/std/array: Likewise.
298 * include/tr1/array: Likewise.
299 * include/tr1/hashtable.h: Likewise.
300 * include/tr1/regex: Likewise.
301 * include/tr2/dynamic_bitset: Likewise.
302 * include/bits/alloc_traits.h: Add nodiscard attribute to
303 allocate.
304 * include/experimental/memory_resource: Likewise.
305 * include/ext/alloc_traits.h: Likewise.
306 * include/ext/array_allocator.h: Likewise.
307 * include/ext/bitmap_allocator.h: Likewise.
308 * include/ext/debug_allocator.h: Likewise.
309 * include/ext/extptr_allocator.h: Likewise.
310 * include/ext/mt_allocator.h: Likewise.
311 * include/ext/new_allocator.h: Likewise.
312 * include/ext/pool_allocator.h: Likewise.
313 * include/ext/throw_allocator.h: Likewise.
314 * include/std/scoped_allocator: Likewise.
315 * libsupc++/eh_alloc.cc: Likewise.
316 * include/std/future: Add nodiscard attribute to async.
317 * libsupc++/new: Add nodiscard attribute to new.
318
319 2019-01-18 Jonathan Wakely <jwakely@redhat.com>
320
321 PR libstdc++/87514
322 PR libstdc++/87520
323 PR libstdc++/88782
324 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
325 * include/bits/shared_ptr.h
326 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
327 (allocate_shared): Change to use new tag type.
328 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
329 Declare new member function.
330 (_Sp_alloc_shared_tag): Define new type.
331 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
332 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
333 _Sp_make_shared_tag::_S_eq to check type_info.
334 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
335 Constrain to prevent being called with _Sp_alloc_shared_tag.
336 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
337 Replace constructor with ...
338 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
339 reference parameter so address of the new object can be returned to
340 the caller. Obtain the allocator from the tag type.
341 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
342 constructor with ...
343 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
344 to the __shared_count constructor.
345 (__allocate_shared): Change to use new tag type.
346 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
347
348 2019-01-17 Jonathan Wakely <jwakely@redhat.com>
349
350 * src/c++17/fs_ops.cc
351 (equivalent(const path&, const path&, error_code&))
352 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
353 compare files instead of relying on incomplete info returned by stat.
354
355 PR libstdc++/88884
356 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
357 if the path is already absolute.
358 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
359 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
360
361 PR libstdc++/88881
362 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
363 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
364 of filesystem::exists.
365 (create_directories(const path&, error_code&)): Add assertions.
366 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
367 Add workaround for bug in _wstat for paths with trailing slash.
368 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
369 for expected behaviour on mingw.
370 * testsuite/experimental/filesystem/operations/create_directories.cc:
371 Likewise.
372 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
373 "TMP" instead of "TMPDIR" and clean environment before each test. Do
374 not test permissions on mingw targets.
375
376 2019-01-16 Jonathan Wakely <jwakely@redhat.com>
377
378 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
379 constructors and open members taking wide strings. Fix patterns for
380 filesystem::path members to match wstring_view parameters. Add
381 exports for shared_ptr members used by directory iterators.
382 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
383 error code parameter if the file doesn't exist.
384 * src/filesystem/ops.cc (remove(const path&, error_code&)):
385 Likewise.
386 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
387 values for mingw targets, where "/" is not an absolute path. Do not
388 test symlinks on mingw targets.
389 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
390 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
391 on mingw targets.
392 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
393 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
394 that each component of the path is created.
395 * testsuite/experimental/filesystem/operations/create_directories.cc:
396 Likewise.
397 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
398 permissions on mingw targets.
399 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
400 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
401 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
402 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
403 mingw targets.
404 * testsuite/experimental/filesystem/operations/permissions.cc:
405 Likewise.
406 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
407 symlinks or permissions on mingw targets.
408 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
409 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
410 symlinks on mingw targets.
411 * testsuite/experimental/filesystem/operations/remove_all.cc:
412 Likewise.
413 * testsuite/27_io/filesystem/operations/status.cc: Do not test
414 permissions on mingw targets.
415 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
416 test symlinks on mingw targets.
417 * testsuite/experimental/filesystem/operations/space.cc: Fix test
418 for mingw targets.
419
420 2019-02-14 Ulrich Drepper <drepper@redhat.com>
421
422 PR libstdc++/88738
423 Warn about unused comparisons of shared_ptr/unique_ptr
424 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
425 * include/bits/shared_ptr.h: Use it for operator ==, !=,
426 <, <=, >, >= for shared_ptr.
427 * include/bits/unique_ptr.h: Likewise for unique_ptr.
428
429 2019-01-15 Jonathan Wakely <jwakely@redhat.com>
430
431 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
432 as 201611L, because P0497R0 changes are supported.
433 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
434
435 * include/bits/erase_if.h [__cplusplus > 201703L]
436 (__cpp_lib_erase_if): Only define for C++2a.
437 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
438 (__cpp_lib_null_iterators): Define.
439 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
440 (__cpp_lib_null_iterators): Define.
441 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
442
443 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
444 status.
445 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
446 Define.
447 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
448 changes are supported.
449 * include/std/optional (__cpp_lib_optional): Likewise.
450 * include/std/variant (__cpp_lib_variant): Likewise.
451 * include/std/version [!__STRICT_ANSI__]
452 (__cpp_lib_uncaught_exceptions): Define as long integer.
453 [__cplusplus >= 201703L] (__cpp_lib_any)
454 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
455 (__cpp_lib_variant): Define for C++17.
456 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
457 as long integer.
458 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
459 integer.
460
461 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
462
463 2019-01-12 Jonathan Wakely <jwakely@redhat.com>
464
465 PR libstdc++/88811
466 PR libstdc++/83306
467 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
468 before second path.
469 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
470 test.
471
472 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
473
474 * doc/xml/manual/intro.xml: Include new section.
475 * doc/xml/manual/status_cxx2017.xml: Document more
476 implementation-defined properties of the library.
477 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
478 * doc/html/*: Regenerate.
479
480 * include/bits/refwrap.h [__cplusplus > 201703L]
481 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
482 (_Reference_wrapper_base_memfun): Do not define for C++2a.
483 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
484 for C++2a.
485 (reference_wrapper::operator()): Add static assertion.
486 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
487
488 * include/std/chrono (duration_values::zero(), duration_values::min())
489 (duration_values::max()): Add noexcept.
490 (duration::zero(), duration::min(), duration::max()): Likewise.
491 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
492 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
493 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
494
495 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
496
497 2019-01-11 Jakub Jelinek <jakub@redhat.com>
498
499 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
500 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
501
502 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
503
504 PR libstdc++/88802
505 * include/bits/functional_hash.h (hash<nullptr_t>): Define
506 specialization for C++17 (P0513R0, LWG 2817).
507 * testsuite/20_util/hash/nullptr.cc: New test.
508
509 PR libstdc++/88125
510 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
511 pattern for std::basic_stringbuf::str().
512
513 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
514 basic_ostream::operator<< patterns.
515
516 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
517
518 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
519 test failures on targets with 32-bit time_t.
520
521 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
522 * include/std/deque: Likewise.
523 * include/std/forward_list: Likewise.
524 * include/std/list: Likewise.
525 * include/std/string: Likewise.
526 * include/std/vector: Likewise.
527 * include/std/version: Likewise.
528 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
529 * testsuite/23_containers/deque/erasure.cc: Likewise.
530 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
531 * testsuite/23_containers/list/erasure.cc: Likewise.
532 * testsuite/23_containers/map/erasure.cc: Likewise.
533 * testsuite/23_containers/set/erasure.cc: Likewise.
534 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
535 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
536 * testsuite/23_containers/vector/erasure.cc: Likewise.
537
538 * include/experimental/internet [AI_NUMERICSERV]
539 (resolver_base::numeric_service): Define conditionally.
540 * testsuite/experimental/net/internet/resolver/base.cc: Test it
541 conditionally.
542 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
543 Likewise.
544
545 2019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
546 Jonathan Wakely <jwakely@redhat.com>
547
548 Implement LWG 2221
549 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
550 (GLIBCXX_3.4.26): Add new exports.
551 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
552 correct list of sources.
553 * include/Makefile.in: Regenerate.
554 * include/std/ostream (operator<<(nullptr_t)): New member function.
555 * src/c++17/ostream-inst.cc: New file.
556 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
557 test.
558
559 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
560
561 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
562 of the source file containing the caller.
563 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
564 directories created by test.
565 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
566 Likewise.
567 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
568 Likewise.
569 * testsuite/experimental/filesystem/iterators/
570 recursive_directory_iterator.cc: Likewise.
571
572 2019-01-10 Jakub Jelinek <jakub@redhat.com>
573
574 PR tree-optimization/88775
575 * include/bits/stl_function.h (greater<_Tp*>::operator(),
576 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
577 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
578 instead of __builtin_constant_p if available. Don't bother with
579 the pointer comparison in C++11 and earlier.
580
581 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
582
583 PR other/16615
584
585 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
586 with "cannot".
587
588 2019-01-09 Jonathan Wakely <jwakely@redhat.com>
589
590 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
591 for filesystem::path. Give variables more distinctive names.
592
593 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
594 member function to perform non-trivial assignment.
595 (_Optional_payload_base::_M_move_assign): Likewise.
596 (_Optional_payload<T, true, false, true>::operator=)
597 (_Optional_payload<T, true, true, false>::operator=)
598 (_Optional_payload<T, true, false, false>::operator=): Call
599 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
600
601 PR libstdc++/88204
602 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
603 test std::complex<long double> if long double format is IBM128.
604 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
605 Likewise.
606
607 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
608
609 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
610 for old std::unique_ptr layout.
611 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
612 to become valueless. Add filesystem::path tests.
613
614 PR libstdc++/87855
615 * include/std/optional (_Optional_payload_base): New class template
616 for common code hoisted from _Optional_payload specializations. Use
617 a template for the union, to allow a partial specialization for
618 types with non-trivial destructors. Add constructors for in-place
619 initialization to the union.
620 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
621 to perform non-trivial copy construction, instead of relying on
622 non-standard copy elision in a delegating constructor.
623 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
624 non-trivial move construction.
625 (_Optional_payload): Derive from _Optional_payload_base and use it
626 for everything except the non-trivial assignment operators, which are
627 defined as needed.
628 (_Optional_payload<false, C, M>): Derive from the specialization
629 _Optional_payload<true, false, false> and add a destructor.
630 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
631 Forward to corresponding members of _Optional_payload.
632 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
633 Hoist common members from _Optional_base.
634 (_Optional_base): Make all members and base class public.
635 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
636 _Optional_base_impl.
637 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
638 support for new std::optional layout.
639 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
640
641 PR libstdc++/88066
642 * include/bits/locale_conv.h: Use <> for includes not "".
643 * include/ext/random: Likewise.
644 * include/ext/vstring.h: Likewise.
645
646 2019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
647
648 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
649 (GLIBCXX_3.4.21): Likewise.
650
651 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
652
653 PR libstdc++/88749
654 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
655 to match the one that controls whether utimbuf and utime are declared.
656
657 2019-01-07 Jonathan Wakely <jwakely@redhat.com>
658
659 PR libstdc++/87787
660 * include/bits/char_traits.h (char_traits::move): Do not pass null
661 pointers to memmove.
662 * include/bits/locale_facets.h
663 (ctype<char>::widen(const char*, const char*, char*)): Do not
664 pass null pointers to memcpy.
665 (ctype<char>::narrow(const char*, const char*, char, char*)):
666 Likewise.
667 (ctype<char>::do_widen(const char*, const char*, char*)):
668 Likewise.
669 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
670 Likewise.
671
672 * doc/xml/manual/spine.xml: Update copyright years.
673 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
674 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
675 for C++17 filesystem library.
676 * doc/html/*: Regenerate.
677
678 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
679 * config.h.in: Regenerate.
680 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
681 alphabetically and add missing entries for copy_symlink,
682 hard_link_count, rename, and resize_file.
683 * configure: Regenerate.
684 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
685 used unconditionally.
686 * src/filesystem/ops-common.h (__gnu_posix::truncate)
687 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
688 supports truncating to zero length.
689 * testsuite/27_io/filesystem/operations/all.cc: New test.
690 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
691
692 2019-01-06 Jonathan Wakely <jwakely@redhat.com>
693
694 PR libstdc++/86756
695 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
696 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
697 * config.h.in: Regenerate.
698 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
699 remaining std::filesystem types and functions.
700 * configure: Regenerate.
701 * src/c++17/Makefile.am: Add C++17 filesystem sources.
702 * src/c++17/Makefile.in: Regenerate.
703 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
704 here, and change name of included file.
705 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
706 here, and change name of included file.
707 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
708 path to dir-common.h.
709 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
710 path to ops-common.h. Disable -Wunused-parameter warnings.
711 (internal_file_clock): Define unconditionally.
712 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
713 define.
714 (do_copy_file, do_space): Move definitions to ops.common.h.
715 (copy, file_size, hard_link_count, last_write_time, space): Only
716 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
717 report an error.
718 (last_write_time, read_symlink): Remove unused attributes from
719 parameters.
720 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
721 * src/filesystem/Makefile.in: Regenerate.
722 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
723 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
724 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
725 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
726 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
727 dummy types and functions instead of using #error.
728 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
729 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
730 in terms of stat.
731 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
732 (do_copy_file, do_space): Move definitions here from std-ops.cc.
733 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
734 to account for new namespace.
735 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
736 -lstdc++fs from dg-options.
737 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
738 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
739 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
740 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
741 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
742 Likewise.
743 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
744 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
745 Likewise.
746 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
747 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
748 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
749 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
750 * testsuite/27_io/filesystem/operations/create_directories.cc:
751 Likewise.
752 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
753 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
754 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
755 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
756 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
757 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
758 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
759 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
760 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
761 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
762 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
763 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
764 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
765 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
766 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
767 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
768 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
769 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
770 Likewise.
771 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
772
773
774 PR libstdc++/86756
775 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
776 typeinfo and vtables less greedy.
777 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
778 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
779 * src/c++17/Makefile.in: Regenerate.
780 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
781 here, and change name of included file.
782 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
783 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
784 from sources.
785 * src/filesystem/Makefile.in: Regenerate.
786 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
787 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
788 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
789 from dg-options and remove dg-require-filesystem-ts.
790 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
791 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
792 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
793 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
794 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
795 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
796 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
797 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
798 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
799 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
800 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
801 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
802 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
803 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
804 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
805 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
806 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
807 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
808 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
809 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
810 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
811 Likewise.
812 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
813 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
814 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
815 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
816 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
817 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
818 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
819 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
820 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
821 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
822 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
823 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
824 Likewise.
825 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
826 Likewise.
827 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
828 Likewise.
829 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
830 Likewise.
831 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
832 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
833 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
834 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
835 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
836 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
837 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
838 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
839 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
840 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
841 Likewise.
842 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
843 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
844 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
845 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
846 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
847
848 PR libstdc++/87431
849 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
850 Check is_trivially_copyable instead of is_scalar.
851 (variant::emplace<N, Args>(Args&&...)): If construction of the new
852 contained value can throw and its type is trivially copyable then
853 construct into a temporary variant and move from it, to provide the
854 strong exception safety guarantee.
855 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
856 Likewise.
857 * testsuite/20_util/variant/87431.cc: New test.
858 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
859 conversion causes valueless state.
860
861 PR libstdc++/88607
862 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
863 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
864 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
865 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
866 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
867
868 2019-01-05 Jonathan Wakely <jwakely@redhat.com>
869
870 * include/bits/fs_fwd.h (__file_clock): Define new clock.
871 (file_time_type): Redefine in terms of __file_clock.
872 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
873 overflow.
874 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
875 internal linkage.
876 (internal_file_lock): New helper type for accessing __file_clock.
877 (do_copy_file): Use internal_file_lock to convert system time to
878 file_time_type.
879 (last_write_time(const path&, error_code&)): Likewise.
880 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
881
882 2019-01-04 Jonathan Wakely <jwakely@redhat.com>
883
884 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
885 for const member functions of std::basic_string.
886 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
887 in C++17.
888 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
889 Make non-standard constructor private.
890 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
891 Likewise.
892 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
893 explicit instantiations for C++17 as well as earlier dialects.
894 * src/c++17/Makefile.am: Add new source files.
895 * src/c++17/Makefile.in: Regenerate.
896 * src/c++17/cow-string-inst.cc: New file defining explicit
897 instantiations for basic_string member functions added in C++17.
898 * src/c++17/string-inst.cc: Likewise.
899
900 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
901 copy/move constructors for old std::basic_string.
902 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
903 (basic_string::reference, basic_string::const_reference): Define
904 as plain references for C++11 and later.
905 (basic_string::basic_string()): Put constructor body outside
906 preprocessor conditional groups.
907 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
908 instead of copying it.
909 (basic_string::basic_string(const basic_string&, const _Alloc&)):
910 Define.
911 (basic_string::basic_string(basic_string&&, const _Alloc&)):
912 Define.
913 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
914 cases for old basic_string.
915 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
916 allocator-extended constructors unconditionally. Add extra members to
917 allocator type when using old string ABI.
918 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
919 for old string ABI.
920 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
921
922 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
923 -fno-inline added to test flags.
924
925 * testsuite/21_strings/basic_string/requirements/
926 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
927
928 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
929 assertion failures with old std::string ABI.
930
931 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
932 with ...
933 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
934 functions that will only erase elements at the end.
935 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
936 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
937 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
938 of erase(p, end()).
939 (path::_List::pop_back()): Define.
940 (path::_List::_M_erase_from(const_iterator)): Define.
941 (path::operator/=(const path&)): Use pop_back to remove last component
942 and _M_erase_from to remove multiple components.
943 (path::_M_append(basic_string_view<value_type>)): Likewise.
944 (path::operator+=(const path&)): Likewise.
945 (path::_M_concat(basic_string_view<value_type>)): Likewise.
946 (path::remove_filename()): Likewise.
947 (path::lexically_normal()): Use _List::_Impl iterators instead of
948 path::iterator. Use pop_back to remove components from the end. Clear
949 trailing filename, instead of using erase(const_iterator) to remove
950 a non-final component.
951 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
952 additional cases.
953 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
954
955 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
956 incorrect treatment of empty filename after trailing slash.
957 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
958
959 * testsuite/21_strings/basic_string/modifiers/assign/char/
960 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
961 to test flags.
962 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
963 move_assign_optim.cc: Likewise.
964
965 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
966 Jakub Jelinek <jakub@redhat.com>
967
968 PR libstdc++/88607
969 * include/experimental/memory: Replace UTF-8 quote characters.
970 * include/std/future: Replace UTF-8 "em dash" characters.
971
972 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
973
974 PR libstdc++/88607
975 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
976 * include/debug/forward_list: Likewise.
977 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
978 character.
979 * include/experimental/chrono: Likewise.
980 * include/experimental/functional: Likewise.
981 * include/experimental/ratio: Likewise.
982 * include/experimental/system_error: Likewise.
983 * include/experimental/tuple: Likewise.
984 * include/experimental/type_traits: Likewise.
985 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
986 * include/parallel/multiseq_selection.h: Likewise.
987
988 PR libstdc++/88681
989 * config/abi/pre/gnu.ver: Add missing exports.
990 * testsuite/22_locale/collate_byname/88681.cc: New test.
991 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
992 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
993
994 2019-01-02 Jonathan Wakely <jwakely@redhat.com>
995
996 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
997 initializer_list<value_type> and from input iterator ranges.
998 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
999
1000 * testsuite/experimental/string_view/element_access/char/empty.cc:
1001 Fix year range in copyright header.
1002
1003 2019-01-02 Joel Brobecker <brobecker@adacore.com>
1004
1005 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
1006 Fix year range in copyright header.
1007
1008 2019-01-01 Jakub Jelinek <jakub@redhat.com>
1009
1010 Update copyright years.
1011 \f
1012 Copyright (C) 2019 Free Software Foundation, Inc.
1013
1014 Copying and distribution of this file, with or without modification,
1015 are permitted in any medium without royalty provided the copyright
1016 notice and this notice are preserved.