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