]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
2019-04-08 Chenghua Xu <paul.hua.gm@gmail.com>
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
781cb64d 12019-04-05 Jonathan Wakely <jwakely@redhat.com>
2
bfbd20f7 3 * doc/xml/manual/status_cxx2020.xml: Update status.
4 * include/std/variant (visit<R>): Define for C++2a (P0655R1).
5 * testsuite/20_util/variant/visit_r.cc: New test.
6
83bd31bf 7 * include/bits/fs_dir.h (directory_iterator::operator*)
8 (directory_iterator::operator->): Add noexcept.
9 (operator==, operator!=): Replace namespace-scope equality operators
10 for directory iterators with hidden friends.
11
0067a809 12 PR libstdc++/89986
13 * config/abi/pre/gnu.ver: Add missing exports.
14 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
15 increment member.
16
7d0ae205 17 * config/abi/pre/gnu.ver: Export new symbols.
18 * include/bits/fs_dir.h (recursive_directory_iterator::options())
19 (recursive_directory_iterator::recursion_pending())
20 (recursive_directory_iterator::disable_recursion_pending()): Remove
21 inline definitions. Make noexcept.
22 (recursive_directory_iterator::depth())
23 (recursive_directory_iterator::operator*())
24 (recursive_directory_iterator::operator->()): Make noexcept.
25 (recursive_directory_iterator::_M_options)
26 (recursive_directory_iterator::_M_pending): Remove data members.
27 * src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
28 (recursive_directory_iterator::recursive_directory_iterator): Remove
29 ctor-initializer. Use new constructor for _Dir_stack.
30 (recursive_directory_iterator::options())
31 (recursive_directory_iterator::recursion_pending())
32 (recursive_directory_iterator::disable_recursion_pending()): Add
33 non-inline definitions.
34 (recursive_directory_iterator::depth()): Make noexcept.
35 (recursive_directory_iterator::increment(error_code&))
36 (recursive_directory_iterator::pop(error_code&)): Adjust to new
37 location of options and recursion_pending members.
38 * testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
39 * testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
40 user-declared move constructor and assignment operator, to make the
41 type move-only.
42
5a6e0b73 43 * src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
44 d_type == DT_UNKNOWN immediately.
45 (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
46 handling here.
47 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
48
aa9c570e 49 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
50 assignment.
51 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
52 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
53 assignment.
54
781cb64d 55 PR libstdc++/87431 (again)
56 * include/bits/basic_string.h (__variant::_Never_valueless_alt):
57 Define partial specialization for basic_string.
58 * include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
59 shared_ptr and weak_ptr.
60 * include/bits/std_function.h (_Never_valueless_alt): Likewise for
61 function.
62 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
63 vector.
64 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
65 unique_ptr.
66 * include/debug/vector (_Never_valueless_alt): Likewise for debug
67 vector.
68 * include/std/any (_Never_valueless_alt): Define explicit
69 specialization for any.
70 * include/std/variant (_Never_valueless_alt): Define primary template.
71 (__never_valueless): Use _Never_valueless_alt instead of
72 is_trivially_copyable.
73 (variant::emplace<N>(Args&&...)): Add special case for non-throwing
74 initializations to avoid try-catch overhead. Add special case for
75 scalars produced by potentially-throwing conversions. Use
76 _Never_valueless_alt instead of is_trivially_copyable for the
77 remaining strong exception-safety cases.
78 (variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
79 * testsuite/20_util/variant/87431.cc: Run both test functions.
80 * testsuite/20_util/variant/exception_safety.cc: New test.
81 * testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
82 so the variant becomes valueless.
83
62fd39e8 842019-04-03 Jonathan Wakely <jwakely@redhat.com>
85
e1d699b8 86 PR libstdc++/85184
87 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
88 Remove assertions.
72be2bb7 89 (variant::emplace<_Tp>): Return result of emplace<N> directly.
e1d699b8 90
62fd39e8 91 * include/std/string (__hash_string_base): New class template defining
92 operator() for hashing strings.
93 (hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
94 (hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
95 * testsuite/21_strings/basic_string/hash/hash.cc: New test.
96 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.
97
4f3e024d 982019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
99
100 Use single-visitation in variant assignment and swap and relops.
101 Also use indices instead of types when checking whether
102 variants hold the same thing.
103 * include/std/variant (__do_visit): Add a template parameter
104 for index visitation, invoke with indices if index visitation
105 is used.
106 (__variant_idx_cookie): New.
107 (__visit_with_index): Likewise.
108 (_Copy_assign_base::operator=): Do single-visitation with
109 an index visitor.
110 (_Move_assign_base::operator=): Likewise.
111 (_Extra_visit_slot_needed): Adjust.
112 (__visit_invoke): Call with indices if it's an index visitor.
113 (relops): Do single-visitation with an index visitor.
114 (swap): Likewise.
115 (__visitor_result_type): New.
116
106979b7 1172019-03-30 Eric Botcazou <ebotcazou@adacore.com>
118
119 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
120
225ca87b 1212019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
122
123 Don't revisit a variant we are already visiting.
124 * include/std/variant (__variant_construct_single): New.
125 (__variant_construct): Use it.
126 (_M_destructive_move): Likewise.
127 (_M_destructive_copy): Likewise.
128 (_Copy_assign_base::operator=): Adjust.
129 (_Move_assign_base::operator=): Likewise.
130 (swap): Likewise.
131
7237dce7 1322019-03-26 Jonathan Wakely <jwakely@redhat.com>
133
134 PR libstdc++/85965
135 * include/bits/hashtable.h (_Hashtable): Move static assertions to
136 destructor so they are not evaluated until the _Key type is complete.
137 * include/bits/stl_tree.h (_Rb_tree): Likewise.
138 * testsuite/23_containers/set/85965.cc: New test.
139 * testsuite/23_containers/unordered_set/85965.cc: New test.
140 * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
141 with regexp matching the corresponding _Rb_tree specialization.
142 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
143 * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
144 * testsuite/23_containers/set/48101_neg.cc: Likewise.
145 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
146 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
147 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
148 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
149
4c0ef551 1502019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
151
152 PR libstdc++/89825
153 Fix based on a suggestion by Antony Polukhin.
154 * include/std/variant (__never_valueless): New.
155 (_M_valid): Use it.
156 (_Extra_visit_slot_needed): New.
157 (_Multi_array): Use it.
158 (_S_apply_all_alts): Likewise.
159
28b460dd 1602019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
161
162 PR libstdc++/89824
163 Fix based on a suggestion by Antony Polukhin.
164 * include/std/variant (__gen_vtable): Don't reserve an
165 additional table slot, _Multi_array already does that.
166
4d235dc5 1672019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
168
169 PR libstdc++/89816
170 Fix based on a suggestion by Antony Polukhin.
171 * include/std/variant (__variant_construct): Capture a pointer
172 to the storage and visit just one variant.
173
d0595c7e 1742019-03-22 Jonathan Wakely <jwakely@redhat.com>
175
5c34f7ca 176 * doc/xml/manual/backwards_compatibility.xml: Remove link to
177 Doxygen-generated pages with unstable URL.
178 * doc/xml/manual/concurrency_extensions.xml: Likewise.
179 * doc/xml/manual/extensions.xml: Likewise.
180 * doc/xml/manual/parallel_mode.xml: Likewise.
181 * doc/xml/manual/support.xml: Likewise.
182
d0595c7e 183 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
184 avoid -Wconversion warnings.
185
7e155e54 1862019-03-21 Thomas Rodgers <trodgers@redhat.com>
187
188 * include/Makefile.am (std_header): Add ${std_srcdir}/execution.
189 (pstl_srcdir, pstl_builddir, pstl_headers): New variables.
190 (allstamped): Add stamp-pstl.
191 (install-headers): Add ptsl_builddir.
192 * include/Makefile.in: Regenerate.
193 * include/bits/c++config: Add pstl configuration.
194 * include/pstl/LICENSE.txt: New file.
195 * include/pstl/algorithm_fwd.h: New file.
196 * include/pstl/algorithm_impl.h: New file.
197 * include/pstl/execution_defs.h: New file.
198 * include/pstl/execution_impl.h: New file.
199 * include/pstl/glue_algorithm_defs.h: New file.
200 * include/pstl/glue_algorithm_impl.h: New file.
201 * include/pstl/glue_execution_defs.h: New file.
202 * include/pstl/glue_memory_defs.h: New file.
203 * include/pstl/glue_memory_impl.h: New file.
204 * include/pstl/glue_numeric_defs.h: New file.
205 * include/pstl/glue_numeric_impl.h: New file.
206 * include/pstl/memory_impl.h: New file.
207 * include/pstl/numeric_fwd.h: New file.
208 * include/pstl/numeric_impl.h: New file.
209 * include/pstl/parallel_backend.h: New file.
210 * include/pstl/parallel_backend_tbb.h: New file.
211 * include/pstl/parallel_backend_utils.h: New file.
212 * include/pstl/parallel_impl.h: New file.
213 * include/pstl/pstl_config.h: New file.
214 * include/pstl/unseq_backend_simd.h: New file.
215 * include/pstl/utils.h: New file.
216 * include/std/algorithm: Include parallel algorithm implementations.
217 * include/std/execution: New file.
218 * include/std/memory: Include parallel algorithm implementations.
219 * include/std/numeric: Include parallel algorithm implementations.
220 * include/std/version: Add parallel algorithms feature test macro.
221 * testsuite/util/pstl/pstl_test_config.h: New file.
222 * testsuite/util/pstl/test_utils.h: New file.
223 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
224 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
225 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
226 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
227 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
228 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
229 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
230 * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
231 * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
232 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
233 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
234 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
235 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
236 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
237 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
238 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
239 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
240 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
241 * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
242 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
243 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
244 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
245 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
246 * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
247 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
248 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
249 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
250 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
251 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
252 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
253 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
254 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
255 * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
256 * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
257 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
258 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
259 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
260 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
261 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
262 * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
263 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
264 * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
265 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
266 * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
267 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
268 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
269 * testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
270 * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
271 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
272 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
273 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
274 * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
275 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
276 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
277 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
278 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
279 * testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
280 * testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
281 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
282 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
283 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
284 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
285 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
286 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
287 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
288 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
289 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
290 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
291 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
292 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
293 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
294 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
295 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
296 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
297 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
298 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
299 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
300 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
301 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
302 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
303 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
304 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
305 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
306 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
307 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
308 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
309 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
310 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
311 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
312 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
313 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
314 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
315 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
316 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
317 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
318 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
319 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
320 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
321 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
322 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
323 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
324 * testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
325 * testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
326 * testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
327 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
328 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
329
480b3b75 3302019-03-21 Jonathan Wakely <jwakely@redhat.com>
331
0a4390ac 332 * include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
333 (assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
334 (assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
335 (comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
336 (comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
337 (cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
338 (cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
339 (cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
340 (ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
341 (ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
342 (hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
343 (legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
344 (sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
345 (sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
346 when the special functions IS is enabled, not for C++17.
347 * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
348 Replace with ...
349 * testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
350 without checks for special functions in C++17.
351 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
352 New test.
353
480b3b75 354 PR libstdc++/88066
355 * include/backward/hash_map: Use <> for includes not "".
356 * include/backward/hash_set: Likewise.
357 * include/backward/strstream: Likewise.
358 * include/tr1/bessel_function.tcc: Likewise.
359 * include/tr1/exp_integral.tcc: Likewise.
360 * include/tr1/legendre_function.tcc: Likewise.
361 * include/tr1/modified_bessel_func.tcc: Likewise.
362 * include/tr1/riemann_zeta.tcc: Likewise.
363
ed360d55 3642019-03-19 Jonathan Wakely <jwakely@redhat.com>
365
366 * doc/xml/manual/allocator.xml: Link to table documenting evolution
367 of extension allocators.
368 * doc/xml/manual/evolution.xml: Use angle brackets for header names.
369 Document new headers in 7.2, 8.1 and 9.1 releases.
370 * doc/xml/manual/using.xml: Adjust link target for new_allocator.
371 * doc/html/*: Regenerate.
372
8f9d7eb1 3732019-03-12 John David Anglin <dave.anglin@bell.net>
374
375 PR libstdc++/89461
376 * testsuite/lib/libstdc++.exp: Locate libatomic.
377 * testsuite/lib/dg-options.exp (add_options_for_libatomic): New.
378 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
379 libatomic options.
380 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
381 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
382 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
383 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
384
0bd005b6 3852019-03-11 Jonathan Wakely <jwakely@redhat.com>
386
5995ba3a 387 PR libstdc++/89460
388 * configure.ac: Check for sockatmark.
389 * crossconfig.m4: Check for sockatmark.
390 * config.h.in: Regenerate.
391 * configure: Regenerate.
392 * include/experimental/internet (address_v4::_S_hton): Rename
393 overloaded functions to _S_hton_16 and _S_ntoh_16.
394 (address_v4::_S_ntoh): Rename to _S_ntoh_16 and _S_ntoh_32.
395 (basic_endpoint): Adjust calls to _S_hton and _S_ntoh.
396 * include/experimental/socket (basic_socket::at_mark): Check
397 _GLIBCXX_HAVE_SOCKATMARK.
398
5aa8571a 399 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
400 const variables instead of macros.
401
0bd005b6 402 PR libstdc++/89629
403 * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
404 Use correct type for len_aligned.
405 * testsuite/20_util/hash/89629.cc: New test.
406
bc204227 4072019-03-11 Jakub Jelinek <jakub@redhat.com>
408
409 PR libstdc++/89641
410 * include/std/atomic (atomic<T>::store, atomic<T>::load,
411 atomic<T>::exchange, atomic<T>::compare_exchange_weak,
412 atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
413 * include/bits/atomic_base.h (__atomic_base<T>::operator++,
414 __atomic_base<T>::operator--, __atomic_base<T>::operator+=,
415 __atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
416 __atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
417 __atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
418 __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
419 memory_order_seq_cst to int.
420
fc557c2b 4212019-03-08 Jonathan Wakely <jwakely@redhat.com>
422
59b5e890 423 * doc/xml/manual/using.xml: Use link element instead of xref.
424 * doc/html/*: Regenerate.
425
fc557c2b 426 * include/bits/fs_path.h (path::format): Add fixed underlying type.
427
66c6ff9e 4282019-03-08 François Dumont <fdumont@gcc.gnu.org>
429
448338d0 430 PR libstdc++/89477
431 * include/debug/map.h (map): Use _RequireNotAllocator to constrain
432 parameters in deduction guides.
433 * include/debug/multimap.h (multimap): Likewise.
434 * include/debug/set.h (multimap): Likewise.
435 * include/debug/multiset.h (multimap): Likewise.
436 * include/debug/unordered_map (unordered_map): Likewise.
437 (unordered_multimap): Likewise.
438 * include/debug/unordered_set (unordered_set): Likewise.
439 (unordered_multiset): Likewise.
440
66c6ff9e 441 PR libstdc++/89608
442 * include/debug/unordered_map (unordered_map<>::_M_check_rehashed):
443 Invalidate all iterators in case of rehash.
444 (unordered_multimap<>::_M_check_rehashed): Likewise.
445 * include/debug/unordered_set
446 (unordered_set<>::_M_check_rehashed): Likewise.
447 (unordered_multiset<>::_M_check_rehashed): Likewise.
448 * testsuite/23_containers/unordered_set/debug/89608_neg.cc: New.
449
32e92dc2 4502019-03-07 Andreas Schwab <schwab@suse.de>
451
452 * config/abi/post/riscv64-linux-gnu: New directory.
453 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
454
61dcf2e1 4552019-03-07 Jonathan Wakely <jwakely@redhat.com>
456
682ee94e 457 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
458 compile test to run. Fix typo.
459
f24442bd 460 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
461 * doc/html/*: Regenerate.
462
61dcf2e1 463 P0356R5 Simplified partial function application
464 * include/std/functional [C++20] (_Bind_front, _Bind_front_t): Define
465 helpers for bind_front.
466 (bind_front, __cpp_lib_bind_front): Define.
467 * testsuite/20_util/function_objects/bind_front/1.cc: New test.
468
b4af2395 4692019-03-06 Jonathan Wakely <jwakely@redhat.com>
470
471 * include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
472 * include/std/version (__cpp_lib_bounded_array_traits): Likewise.
473 * testsuite/20_util/is_bounded_array/value.cc: Check for macro.
474 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
475
f1857b8b 4762019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
477
478 PR libstdc++/86655 - std::assoc_legendre should not constrain
479 the value of m (or x).
480 * include/tr1/legendre_function.tcc (__assoc_legendre_p,
481 __sph_legendre): If degree > order Don't throw, return 0.
482 (__legendre_p, __assoc_legendre_p): Don't constrain x either.
483 * testsuite/special_functions/02_assoc_legendre/pr86655.cc: New test.
484 * testsuite/special_functions/20_sph_legendre/pr86655.cc: New test.
485 * testsuite/tr1/5_numerical_facilities/special_functions/
486 02_assoc_legendre/pr86655.cc: New test.
487 * testsuite/tr1/5_numerical_facilities/special_functions/
488 22_sph_legendre/pr86655.cc: New test.
489
49c83dca 4902019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
491
492 Rewrite variant.
493 Also PR libstdc++/85517
494 * include/std/variant (__do_visit): New.
495 (__variant_cast): Likewise.
496 (__variant_cookie): Likewise.
497 (__erased_*): Remove.
498 (_Variant_storage::_S_vtable): Likewise.
499 (_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
500 (_Variant_storage::__M_reset): Adjust.
501 (__variant_construct): New.
502 (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
503 __variant_construct.
504 (_Move_ctor_base(_Move_ctor_base&&)): Likewise.
505 (_Move_ctor_base::__M_destructive_copy): New.
506 (_Move_ctor_base::__M_destructive_move): Adjust to use
507 __variant_construct.
508 (_Copy_assign_base::operator=): Adjust to use __do_visit.
509 (_Copy_assign_alias): Adjust to check both copy assignment
510 and copy construction for triviality.
511 (_Move_assign_base::operator=): Adjust to use __do_visit.
512 (_Multi_array): Add support for visitors that accept and return
513 a __variant_cookie.
514 (__gen_vtable_impl::_S_apply_all_alts): Likewise.
515 (__gen_vtable_impl::_S_apply_single_alt): Likewise.
516 (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
517 a __variant_cookie temporary for a variant that is valueless and..
518 (__gen_vtable_impl::__visit_invoke): ..adjust here.
519 (__gen_vtable::_Array_type): Conditionally make space for
520 the __variant_cookie visitor case.
521 (__variant_construct_by_index): New.
522 (get_if): Adjust to use std::addressof.
523 (relops): Adjust to use __do_visit.
524 (variant): Add __variant_cast and __variant_construct_by_index
525 as friends.
526 (variant::emplace): Use _M_reset() and __variant_construct_by_index
527 instead of self-destruction.
528 (variant::swap): Adjust to use __do_visit.
529 (visit): Reimplement in terms of __do_visit.
530 (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
531 * testsuite/20_util/variant/compile.cc: Adjust.
532 * testsuite/20_util/variant/run.cc: Likewise.
533
13825fb2 5342019-03-06 Jonathan Wakely <jwakely@redhat.com>
535
2613fa6b 536 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
537 constant.
538 * testsuite/experimental/feat-char8_t.cc: Likewise.
539
a17f06b3 540 * include/std/type_traits [C++20] (is_bounded_array)
541 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
542 Define.
543 * testsuite/20_util/is_bounded_array/requirements/
544 explicit_instantiation.cc: New test.
545 * testsuite/20_util/is_bounded_array/requirements/typedefs.cc: New
546 test.
547 * testsuite/20_util/is_bounded_array/value.cc: New test.
548 * testsuite/20_util/is_unbounded_array/requirements/
549 explicit_instantiation.cc: New test.
550 * testsuite/20_util/is_unbounded_array/requirements/typedefs.cc: New
551 * test.
552 * testsuite/20_util/is_unbounded_array/value.cc: New test.
553
13825fb2 554 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
555 Add constexpr.
556 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
557
2e73e63a 5582019-03-05 Jonathan Wakely <jwakely@redhat.com>
559
560 * include/c_compatibility/math.h [C++20] (lerp): Add using
561 declaration.
562 * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define.
563 (__lerp): Define function template to implement lerp.
564 (lerp(float, float, float), lerp(double, double, double))
565 (lerp(long double, long double, long double)): Define for C++20.
566 * include/std/numeric [C++20] (__cpp_lib_interpolate): Define.
567 (midpoint(T, T), midpoint(T*, T*)): Define.
568 * include/std::version [C++20] (__cpp_lib_interpolate): Define.
569 * testsuite/26_numerics/lerp.cc: New test.
570 * testsuite/26_numerics/midpoint/floating.cc: New test.
571 * testsuite/26_numerics/midpoint/integral.cc: New test.
572 * testsuite/26_numerics/midpoint/pointer.cc: New test.
573
08d3ce5b 5742019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
575
576 PR libstdc++/88996 Implement P0439R0
577 Make std::memory_order a scoped enumeration.
578 * include/bits/atomic_base.h: For C++20 make memory_order a scoped enum,
579 add variables for the old enumerators. Adjust calls.
580 * testsuite/29_atomics/headers/atomic/types_std_c++2a.cc: New test.
581 * testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc: New test.
582
ad29ad75 5832019-03-04 Jonathan Wakely <jwakely@redhat.com>
584
4233f2a8 585 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
586 directive.
587
ad29ad75 588 * include/std/memory_resource (polymorphic_allocator): Add default
589 template argument for C++20.
590 (polymorphic_allocator::allocate_bytes)
591 (polymorphic_allocator::deallocate_bytes)
592 (polymorphic_allocator::allocate_object)
593 (polymorphic_allocator::deallocate_object)
594 (polymorphic_allocator::new_object)
595 (polymorphic_allocator::delete_object): New member functions for
596 C++20.
597 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
598 test.
599
d4c27c4a 6002019-03-03 Jonathan Wakely <jwakely@redhat.com>
601
602 PR libstdc++/89562
603 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
604 mode for mingw.
605
6a9c77f1 6062019-03-01 Jonathan Wakely <jwakely@redhat.com>
607
5b313df9 608 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
609 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
610
6a9c77f1 611 * include/std/memory (uses_allocator_construction_args): New set of
612 overloaded functions.
613 (make_obj_using_allocator, uninitialized_construct_using_allocator):
614 New functions.
615 * include/std/memory_resource (polymorphic_allocator::construct)
616 [__cplusplus > 201703l]: Replace all overloads with a single function
617 using uses_allocator_construction_args.
618 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: New
619 test.
620 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
621
53ea0887 6222019-02-27 Jonathan Wakely <jwakely@redhat.com>
623
624 PR libstdc++/89466
625 * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
626 stylesheet directories before check for xsltproc. Try to use
627 xmlcatalog to find local stylesheet directory before trying hardcoded
628 paths. Add path used by suse to hardcoded paths. Adjust xsltproc
629 check to look for the same stylesheet as doc/Makefile.am uses. Don't
630 use xsltproc if xmlcatalog fails to find a local stylesheet.
631 * configure.ac: Check for xmlcatalog.
632 * Makefile.in: Regenerate.
633 * configure: Likewise.
634 * doc/Makefile.in: Likewise.
635 * include/Makefile.in: Likewise.
636 * libsupc++/Makefile.in: Likewise.
637 * po/Makefile.in: Likewise.
638 * python/Makefile.in: Likewise.
639 * src/Makefile.in: Likewise.
640 * src/c++11/Makefile.in: Likewise.
641 * src/c++17/Makefile.in: Likewise.
642 * src/c++98/Makefile.in: Likewise.
643 * src/filesystem/Makefile.in: Likewise.
644 * testsuite/Makefile.in: Likewise.
645
72ebb7e8 6462019-02-26 Jonathan Wakely <jwakely@redhat.com>
647
a7f2f1b1 648 PR libstdc++/89477
649 * include/bits/alloc_traits.h (_RequireNotAllocator): New helper for
650 container deduction guides.
651 * include/bits/hashtable.h (_RequireNotAllocatorOrIntegral): Likewise.
652 * include/bits/stl_map.h (map): Use _RequireNotAllocator to constrain
653 parameters in deduction guides.
654 * include/bits/stl_multimap.h (multimap): Likewise.
655 * include/bits/stl_multiset.h (multiset): Likewise.
656 * include/bits/stl_queue.h (queue, priority_queue): Likewise.
657 * include/bits/stl_set.h (set): Likewise.
658 * include/bits/stl_stack.h (stack): Likewise.
659 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
660 use _RequireNotAllocator and _RequireNotAllocatorOrIntegral to
661 constrain parameters in deduction guides.
662 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
663 Likewise.
664 * testsuite/23_containers/map/cons/deduction.cc: Test additional
665 deduction cases.
666 * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
667 * testsuite/23_containers/set/cons/deduction.cc: Likewise.
668 * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
669 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
670 Likewise.
671 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
672 Likewise.
673 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
674
72ebb7e8 675 PR libstdc++/89416
676 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Change
677 to class template and partial specialization using void_t.
678 (__is_copy_insertable, __is_move_insertable): Adjust base class.
679
c9f61a64 6802019-02-24 Jonathan Wakely <jwakely@redhat.com>
681
682 PR libstdc++/89416
683 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
684 copy and move members public.
685
61e2d6f7 6862019-02-23 Jonathan Wakely <jwakely@redhat.com>
687
87798f3f 688 * include/std/type_traits (__underlying_type_impl): New helper to
689 make underlying_type SFINAE-friendly.
690 (underlying_type): Derive from __underlying_type_impl.
691 * testsuite/20_util/underlying_type/requirements/typedefs-3.cc: New
692 test.
693
61e2d6f7 694 PR libstdc++/89446
695 * include/bits/char_traits.h (__constant_char_array): Check index is
696 in range before dereferencing.
697 (char_traits<char>::compare, char_traits<char>::find)
698 (char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
699 immediately if n is zero.
700 (char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
701 Remove workarounds for PR 67026.
702 * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
703 New test.
704 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
705 New test.
706
90a443b3 7072019-02-22 Eric Botcazou <ebotcazou@adacore.com>
708
709 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
710 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
711
98485ce3 7122019-02-22 Jakub Jelinek <jakub@redhat.com>
713
714 PR libstdc++/89402
715 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
716 type to std::size_t and argument to type to long double.
717
26b4fc38 7182019-02-22 Eric Botcazou <ebotcazou@adacore.com>
719
720 * configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
721 * config/abi/post/sparc64-linux-gnu: New directory.
722 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
723 * config/abi/post/sparc64-linux-gnu/32: New directory.
724 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.
725
4f847a8e 7262019-02-21 Jonathan Wakely <jwakely@redhat.com>
727
728 * testsuite/29_atomics/headers/atomic/types_std_c++20.cc: New test.
729 * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: New
730 test.
731
aad651b3 7322019-02-22 Tom Honermann <tom@honermann.net>
733
734 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
735 printers for u8string and u8string_view.
736
c783b3cc 7372019-02-22 Tom Honermann <tom@honermann.net>
738
739 * testsuite/18_support/byte/ops.cc: Validate
740 std::to_integer<char8_t>, std::to_integer<char16_t>, and
741 std::to_integer<char32_t>.
742 * testsuite/18_support/numeric_limits/dr559.cc: Validate
743 std::numeric_limits<char8_t>.
744 * testsuite/18_support/numeric_limits/lowest.cc: Validate
745 std::numeric_limits<char8_t>::lowest().
746 * testsuite/18_support/numeric_limits/max_digits10.cc: Validate
747 std::numeric_limits<char8_t>::max_digits10.
748 * testsuite/18_support/type_info/fundamental.cc: Validate
749 typeinfo for char8_t.
750 * testsuite/20_util/from_chars/1_c++20_neg.cc: New test, validating
751 std::from_chars with char8_t.
752 * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
753 Validate explicit instantiation of std::hash<char8_t>.
754 * testsuite/20_util/is_integral/value.cc: Validate
755 std::is_integral<char8_t>.
756 * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
757 Validate std::make_signed<char8_t>.
758 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
759 Validate u8string construction from char8_t sources.
760 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Validate
761 std::pmr::u8string.
762 * testsuite/21_strings/basic_string_view/operations/compare/
763 char/70483.cc: Validate substr operations on u8string_view.
764 * testsuite/21_strings/basic_string_view/typedefs.cc: Validate that
765 the u8string_view typedef is defined.
766 * testsuite/21_strings/char_traits/requirements/
767 constexpr_functions.cc: Validate char_traits<char8_t> constexpr
768 member functions.
769 * testsuite/21_strings/char_traits/requirements/
770 constexpr_functions_c++17.cc: Validate char_traits<char8_t> C++17
771 constexpr member functions.
772 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Validate
773 that the u8string typedef is defined.
774 * testsuite/22_locale/locale/cons/unicode.cc: Validate the presence
775 of the std::codecvt<char16_t, char8_t, std::mbstate_t> and
776 std::codecvt<char32_t, char8_t, std::mbstate_t> facets.
777 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Update line
778 numbers.
779 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
780 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
781 Likewise.
782 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
783 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
784 Validate std::atomic<char8_t>::is_always_lock_free
785 * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
786 Update line numbers.
787 * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
788 Likewise.
789 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
790 Likewise.
791 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
792 Validate std::experimental::pmr::u8string.
793 * testsuite/experimental/string_view/typedefs.cc: Validate that the
794 u8string_view typedef is defined.
795 * testsuite/util/testsuite_common_types.h: Add char8_t, char16_t and
796 char32_t to the typelists.
797
ef96a935 7982019-02-22 Tom Honermann <tom@honermann.net>
799
800 * include/ext/typelist.h: Constrain a partial specialization of
801 typelist::detail::append_ to only match chain<T1,T2>.
802
d373b606 8032019-02-21 Jonathan Wakely <jwakely@redhat.com>
804
805 PR libstdc++/89416
806 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace
807 class template with class. Replace move and copy member types with
808 member alias templates, so they are only instantiated when needed.
809 (__is_copy_insertable, __is_move_insertable): Adjust base class.
810 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable
811 test for C++11/14/17 as well.
812 * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New
813 test.
814
25395ee8 8152019-02-20 Jakub Jelinek <jakub@redhat.com>
816
817 PR libstdc++/89402
818 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
819 _GLIBCXX_PURE to the alias declaration.
820
affcb65b 8212019-02-19 Jonathan Wakely <jwakely@redhat.com>
822
823 * testsuite/21_strings/basic_string/literals/types.cc
824 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
825 * testsuite/21_strings/basic_string/literals/values.cc
826 [_GLIBCXX_USE_CHAR8_T]: Likewise.
827 * testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
828 potentially having different type.
829 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
830 * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
831 to char.
832 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
833 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
834 * testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
835 string literals only using basic character set.
836 * testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
837 u8 literals to char.
838 * testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
839 Test ATOMIC_CHAR8_T_LOCK_FREE.
840 Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
841 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
842 [_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
843 * testsuite/experimental/string_view/literals/types.cc
844 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
845 literal.
846 * testsuite/experimental/string_view/literals/values.cc
847 [_GLIBCXX_USE_CHAR8_T]: Likewise.
848
4acc5060 8492019-02-19 Tom Honermann <tom@honermann.net>
850
851 * testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
852 from char16_32_t.cc; validates numeric_limits<char8_t>.
853 * testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
854 test cloned from types.cc; validates operator""s for char8_t
855 returns u8string.
856 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
857 test cloned from values.cc; validates construction and comparison
858 of u8string values.
859 * testsuite/21_strings/basic_string/requirements/
860 /explicit_instantiation/char8_t/1.cc: New test cloned from
861 char16_t/1.cc; validates explicit instantiation of
862 basic_string<char8_t>.
863 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
864 New test cloned from types.cc; validates operator""sv for char8_t
865 returns u8string_view.
866 * testsuite/21_strings/basic_string_view/literals/
867 values-char8_t.cc: New test cloned from values.cc; validates
868 construction and comparison of u8string_view values.
869 * testsuite/21_strings/basic_string_view/requirements/
870 explicit_instantiation/char8_t/1.cc: New test cloned from
871 char16_t/1.cc; validates explicit instantiation of
872 basic_string_view<char8_t>.
873 * testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
874 New test cloned from char16_t/65049.cc; validates that
875 char_traits<char8_t> is not vulnerable to the concerns in PR65049.
876 * testsuite/21_strings/char_traits/requirements/char8_t/
877 typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
878 that char_traits<char8_t> member typedefs are present and correct.
879 * testsuite/21_strings/char_traits/requirements/
880 explicit_instantiation/char8_t/1.cc: New test cloned from
881 char16_t/1.cc; validates explicit instantiation of
882 char_traits<char8_t>.
883 * testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
884 from char16_t.cc: validates
885 codecvt<char16_t, char8_t, mbstate_t>.
886 * testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
887 from char32_t.cc: validates
888 codecvt<char32_t, char8_t, mbstate_t>.
889 * testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
890 utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
891 codecvt<char32_t, char8_t, std::mbstate_t>.
892 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
893 test cloned from string.cc; validates filesystem::path construction
894 from char8_t input.
895 * testsuite/experimental/feat-char8_t.cc: New test; validates that
896 the __cpp_lib_char8_t feature test macro is defined with the
897 correct value.
898 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
899 New test cloned from string.cc; validates filesystem::path
900 construction from char8_t input.
901 * testsuite/experimental/string_view/literals/types-char8_t.cc: New
902 test cloned from types.cc; validates operator""sv for char8_t
903 returns u8string_view.
904 * testsuite/experimental/string_view/literals/values-char8_t.cc:
905 New test cloned from values.cc; validates construction and
906 comparison of u8string_view values.
907 * testsuite/experimental/string_view/requirements/
908 explicit_instantiation/char8_t/1.cc: New test cloned from
909 char16_t/1.cc; validates explicit instantiation of
910 basic_string_view<char8_t>.
911 * testsuite/ext/char8_t/atomic-1.cc: New test; validates that
912 ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
913 enabled.
914
25694c85 9152019-02-19 Tom Honermann <tom@honermann.net>
916
917 P0482R5 char8_t: Standard library support
918 * config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
919 typeinfo symbols for char8_t.
920 * config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
921 (GLIBCXX_3.4.26): Add symbols for specializations of
922 numeric_limits and codecvt that involve char8_t.
923 (CXXABI_1.3.12): Add typeinfo symbols for char8_t.
924 * include/bits/atomic_base.h: Add atomic_char8_t.
925 * include/bits/basic_string.h: Add std::hash<u8string> and
926 operator""s(const char8_t*, size_t).
927 * include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
928 __cpp_lib_char8_t.
929 * include/bits/char_traits.h: Add char_traits<char8_t>.
930 * include/bits/codecvt.h: Add
931 codecvt<char16_t, char8_t, mbstate_t>,
932 codecvt<char32_t, char8_t, mbstate_t>,
933 codecvt_byname<char16_t, char8_t, mbstate_t>, and
934 codecvt_byname<char32_t, char8_t, mbstate_t>.
935 * include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
936 recognize char8_t as an integral type.
937 * include/bits/fs_path.h: (path::__is_encoded_char): Recognize
938 char8_t.
939 (path::u8string): Return std::u8string when char8_t support is
940 enabled.
941 (path::generic_u8string): Likewise.
942 (path::_S_convert): Handle conversion from char8_t input.
943 (path::_S_str_convert): Likewise.
944 * include/bits/functional_hash.h: Add hash<char8_t>.
945 * include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
946 char8_t.
947 * include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
948 for new char8_t specializations.
949 * include/bits/localefwd.h: Add missing declarations of
950 codecvt<char16_t, char, mbstate_t> and
951 codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
952 codecvt<char16_t, char8_t, mbstate_t> and
953 codecvt<char32_t, char8_t, mbstate_t>.
954 * include/bits/postypes.h: Add u8streampos
955 * include/bits/stringfwd.h: Add declarations of
956 char_traits<char8_t> and u8string.
957 * include/c_global/cstddef: Add __byte_operand<char8_t>.
958 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
959 Recognize char8_t.
960 (path::u8string): Return std::u8string when char8_t support is
961 enabled.
962 (path::generic_u8string): Likewise.
963 (path::_S_convert): Handle conversion from char8_t input.
964 (path::_S_str_convert): Likewise.
965 * include/experimental/string: Add u8string.
966 * include/experimental/string_view: Add u8string_view,
967 hash<experimental::u8string_view>, and
968 operator""sv(const char8_t*, size_t).
969 * include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
970 * include/std/charconv (__is_int_to_chars_type): Recognize char8_t
971 as a character type.
972 * include/std/limits: Add numeric_limits<char8_t>.
973 * include/std/string_view: Add u8string_view,
974 hash<experimental::u8string_view>, and
975 operator""sv(const char8_t*, size_t).
976 * include/std/type_traits: Add __is_integral_helper<char8_t>,
977 __make_unsigned<char8_t>, and __make_signed<char8_t>.
978 * libsupc++/atomic_lockfree_defines.h: Define
979 ATOMIC_CHAR8_T_LOCK_FREE.
980 * src/c++11/Makefile.am: Compile with -fchar8_t when compiling
981 codecvt.cc and limits.cc so that char8_t specializations of
982 numeric_limits and codecvt and emitted.
983 * src/c++11/Makefile.in: Likewise.
984 * src/c++11/codecvt.cc: Define members of
985 codecvt<char16_t, char8_t, mbstate_t>,
986 codecvt<char32_t, char8_t, mbstate_t>,
987 codecvt_byname<char16_t, char8_t, mbstate_t>, and
988 codecvt_byname<char32_t, char8_t, mbstate_t>.
989 * src/c++11/limits.cc: Define members of
990 numeric_limits<char8_t>.
991 * src/c++98/Makefile.am: Compile with -fchar8_t when compiling
992 locale_init.cc and localename.cc.
993 * src/c++98/Makefile.in: Likewise.
994 * src/c++98/locale_init.cc: Add initialization for the
995 codecvt<char16_t, char8_t, mbstate_t> and
996 codecvt<char32_t, char8_t, mbstate_t> facets.
997 * src/c++98/localename.cc: Likewise.
998 * testsuite/util/testsuite_abi.cc: Validate ABI bump.
999
140615bb 10002019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
1001
1002 * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
1003 * 27_io/filesystem/operations/resize_file.cc: Likewise.
1004 * 27_io/filesystem/path/generation/normal2.cc: Likewise.
1005
c677a9d7 10062019-02-14 Jonathan Wakely <jwakely@redhat.com>
1007
1bbfe9f8 1008 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
1009 * doc/html/*: Regenerate.
1010
b24f00b1 1011 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
1012 * doc/html/*: Regenerate.
1013
a3d1baa9 1014 * doc/xml/manual/intro.xml: Document LWG 2586 status.
1015 * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
1016 allocator type in is_constructible checks.
1017 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
1018 * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
1019 * testsuite/20_util/tuple/cons/allocators.cc: Add test using
1020 problematic type from LWG 2586 discussion.
1021 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
1022 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
1023
99d130bf 1024 * configure.ac: Check for C11 timespec_get function.
1025 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
1026 (openbsd): Likewise
1027 * config.h.in: Regenerate.
1028 * configure: Regenerate.
1029 * include/c_global/ctime (timespec, timespec_get): Add to namespace
1030 std for C++17 and up.
1031
48772ec3 1032 * doc/xml/manual/intro.xml: Document LWG 2537 status.
1033 * include/bits/stl_queue.h
1034 (priority_queue(const Compare&, const Container&, const Alloc&))
1035 (priority_queue(const Compare&, Container&&, const Alloc&)): Call
1036 make_heap.
1037 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
1038
ee32dd64 1039 * doc/xml/manual/intro.xml: Document LWG 2566 status.
1040 * include/bits/stl_queue.h (queue, priority_queue): Add static
1041 assertions to enforce LWG 2566 requirement on value_type.
1042 * include/bits/stl_stack.h (stack): Likewise.
1043
9724de38 1044 PR middle-end/89303
1045 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
1046
c677a9d7 1047 * doc/xml/manual/intro.xml: Document LWG 2735 status.
1048 * include/bits/std_abs.h: Add comment about LWG 2735.
1049 * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
1050
4194f872 10512019-02-13 Jonathan Wakely <jwakely@redhat.com>
1052
1053 PR libstdc++/89345
1054 * include/std/version [__cpp_impl_destroying_delete]
1055 (__cpp_lib_destroying_delete): Only define for C++2a and later.
1056 * libsupc++/new [__cpp_impl_destroying_delete]
1057 (__cpp_lib_destroying_delete): Likewise.
1058 (destroying_delete_t, destroying_delete): Likewise, but define even
1059 when __cpp_impl_destroying_delete is not defined.
1060 * testsuite/18_support/destroying_delete.cc: New test.
1061
aaacaee2 10622019-02-11 Jonathan Wakely <jwakely@redhat.com>
1063
1064 PR libstdc++/89023
1065 * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
1066 * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
1067 * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
1068 * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
1069
5256b0dd 10702019-02-09 Jonathan Wakely <jwakely@redhat.com>
1071
1072 PR libstdc++/71044
1073 * include/bits/fs_path.h (path::has_root_name)
1074 (path::has_root_directory, path::has_root_path)
1075 (path::has_relative_path, path::has_parent_path)
1076 (path::has_filename, path::has_stem, path::has_extension)
1077 (path::is_absolute, path::is_relative, path::_M_find_extension): Add
1078 noexcept.
1079 * src/c++17/fs_path.cc (path::has_root_name)
1080 (path::has_root_directory, path::has_root_path)
1081 (path::has_relative_path, path::has_parent_path)
1082 (path::has_filename, path::_M_find_extension): Add noexcept.
1083
e32f625e 10842019-02-06 Jonathan Wakely <jwakely@redhat.com>
1085
1086 PR libstdc++/89102 (partial)
1087 * include/std/type_traits (common_type<>): Define.
1088 (common_type<T>): Derive from common_type<T, T>.
1089 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
1090 Test zero-length template argument list.
1091 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
1092 Test additional single argument cases.
1093 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
1094 Adjust expected error.
1095
b03489db 10962019-02-05 Jonathan Wakely <jwakely@redhat.com>
1097
e89e4fec 1098 PR libstdc++/89128
1099 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
1100 guides.
1101 * include/bits/stl_stack.h (stack): Likewise.
1102 * testsuite/23_containers/priority_queue/deduction.cc: New test.
1103 * testsuite/23_containers/queue/deduction.cc: New test.
1104 * testsuite/23_containers/stack/deduction.cc: New test.
1105
b640dd11 1106 PR libstdc++/89194
1107 * include/std/type_traits (__is_convertible_helper)
1108 (__is_convertible_helper<_From, _To, false>): Revert changes to
1109 support is_nothrow_convertible.
1110 (__is_nt_convertible_helper): New helper.
1111 (is_nothrow_convertible): Use __is_nt_convertible_helper.
1112
74c88c5f 1113 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
1114 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
1115
eca5e8d4 1116 PR libstdc++/89130
1117 * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
1118 __is_alloc_insertable_impl. Replace single type member with two
1119 members, one for each of copy and move insertable.
1120 (__is_move_insertable): New trait for internal use.
1121 * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
1122 (vector::_S_nothrow_relocate(true_type)): New functions to
1123 conditionally check if __relocate_a can throw.
1124 (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
1125 on __is_move_insertable.
1126 (vector::_S_do_relocate): New overloaded functions to conditionally
1127 call __relocate_a.
1128 (vector::_S_relocate): New function that dispatches to _S_do_relocate
1129 based on _S_use_relocate.
1130 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
1131 (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
1132 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
1133
b03489db 1134 PR libstdc++/89090
1135 * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
1136 parameter unnamed. Add message to static assertion.
1137 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
1138 (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
1139 in C++11 code.
1140
71625a15 11412019-02-05 Marc Glisse <marc.glisse@inria.fr>
1142
1143 PR libstdc++/87106
1144 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
1145 Rename...
1146 (__is_bitwise_relocatable): ... to this.
1147 (__relocate_a_1): Adapt.
1148 * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
1149 (__is_bitwise_relocatable): ... to this.
1150
e7b22e58 11512019-01-30 Jonathan Wakely <jwakely@redhat.com>
1152
1153 PR libstdc++/89117
1154 * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
1155 final component as well as from _M_pathname. Append the dot using
1156 operator+= instead of only to _M_pathname.
1157 (path::_M_find_extension): Reformat slightly.
1158 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
1159 Add more test cases.
1160
dae923a7 11612019-01-30 Ulrich Drepper <drepper@redhat.com>
1162
1163 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
1164
710397ad 11652019-01-29 Jonathan Wakely <jwakely@redhat.com>
1166
5efc4356 1167 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
1168 constexpr specifiers from arg and proj.
1169
5f15e718 1170 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
1171 __shared_ptr instantiations used by gcc4-compatible ABI.
1172
307e86fc 1173 * include/experimental/forward_list (experimental::erase): Qualify
1174 call to erase_if.
1175 * include/experimental/list (experimental::erase): Likewise.
1176 * include/std/forward_list (std::erase): Likewise.
1177 * include/std/list (std::erase): Likewise.
1178
38129d1a 1179 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
1180 C++2a.
1181 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
1182 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
1183 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
1184 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
1185 * testsuite/ext/array_allocator/26875.cc: Likewise.
1186 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
1187 * testsuite/util/replacement_memory_operators.h: Likewise.
1188 * testsuite/util/testsuite_allocator.h: Likewise.
1189
710397ad 1190 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
1191 normal mode vector, even for debug mode.
1192 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
1193 Define alias template for normal mode vector.
1194
70f71249 11952019-01-28 Jonathan Wakely <jwakely@redhat.com>
1196
1197 PR libstdc++/68737
1198 * config/locale/generic/c_locale.h (__convert_from_v)
1199 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
1200 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
1201 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
1202 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
1203
f1074115 12042019-01-24 Jonathan Wakely <jwakely@redhat.com>
1205
4bc4fd90 1206 PR libstdc++/88840
1207 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
1208 data member with static member function _S_use_relocate().
1209 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
1210 (vector::_M_default_append): Use _S_use_relocate() instead of
1211 __use_relocate.
1212
f1074115 1213 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
1214 sign of results.
1215
1c4657a3 12162019-01-22 Jonathan Wakely <jwakely@redhat.com>
1217
1218 PR libstdc++/88740
1219 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
1220 write to stderr instead of using printf.
1221
dafe8c59 12222019-01-21 Jakub Jelinek <jakub@redhat.com>
1223
1224 PR libstdc++/86590
1225 * include/bits/char_traits.h (__constant_string_p,
1226 __constant_char_array_p): Use __builtin_is_constant_evaluated if
1227 available.
1228
eaf966f3 12292019-01-20 Ulrich Drepper <drepper@redhat.com>
1230
1231 Implement C++20 P0600r1.
1232 * include/backward/hash_map: Add nodiscard attribute to empty.
1233 * include/backward/hash_set: Likewise.
1234 * backward/hashtable.h: Likewise.
1235 * include/bits/basic_string.h: Likewise.
1236 * include/bits/forward_list.h: Likewise.
1237 * include/bits/hashtable.h: Likewise.
1238 * include/bits/regex.h: Likewise.
1239 * include/bits/stl_deque.h: Likewise.
1240 * include/bits/stl_list.h: Likewise.
1241 * include/bits/stl_map.h: Likewise.
1242 * include/bits/stl_multimap.h: Likewise.
1243 * include/bits/stl_multiset.h: Likewise.
1244 * include/bits/stl_queue.h: Likewise.
1245 * include/bits/stl_set.h: Likewise.
1246 * include/bits/stl_stack.h: Likewise.
1247 * include/bits/stl_tree.h: Likewise.
1248 * include/bits/stl_vector.h: Likewise.
1249 * include/bits/unordered_map.h: Likewise.
1250 * include/bits/unordered_set.h: Likewise.
1251 * include/debug/array: Likewise.
1252 * include/experimental/any: Likewise.
1253 * include/experimental/bits/fs_path.h: Likewise.
1254 * include/experimental/internet: Likewise.
1255 * include/experimental/string_view: Likewise.
1256 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
1257 Likewise.
1258 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
1259 Likewise.
1260 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
1261 Likewise.
1262 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
1263 Likewise.
1264 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
1265 Likewise.
1266 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
1267 Likewise.
1268 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
1269 Likewise.
1270 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
1271 Likewise.
1272 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
1273 info_fn_imps.hpp: Likewise.
1274 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
1275 left_child_next_sibling_heap_.hpp: Likewise.
1276 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
1277 Likewise.
1278 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
1279 Likewise.
1280 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
1281 Likewise.
1282 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
1283 Likewise.
1284 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
1285 Likewise.
1286 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
1287 Likewise.
1288 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
1289 Likewise.
1290 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
1291 * include/ext/pb_ds/trie_policy.hpp: Likewise.
1292 * include/ext/rope: Likewise.
1293 * include/ext/slist: Likewise.
1294 * include/ext/vstring.h: Likewise.
1295 * include/profile/array: Likewise.
1296 * include/std/array: Likewise.
1297 * include/tr1/array: Likewise.
1298 * include/tr1/hashtable.h: Likewise.
1299 * include/tr1/regex: Likewise.
1300 * include/tr2/dynamic_bitset: Likewise.
1301 * include/bits/alloc_traits.h: Add nodiscard attribute to
1302 allocate.
1303 * include/experimental/memory_resource: Likewise.
1304 * include/ext/alloc_traits.h: Likewise.
1305 * include/ext/array_allocator.h: Likewise.
1306 * include/ext/bitmap_allocator.h: Likewise.
1307 * include/ext/debug_allocator.h: Likewise.
1308 * include/ext/extptr_allocator.h: Likewise.
1309 * include/ext/mt_allocator.h: Likewise.
1310 * include/ext/new_allocator.h: Likewise.
1311 * include/ext/pool_allocator.h: Likewise.
1312 * include/ext/throw_allocator.h: Likewise.
1313 * include/std/scoped_allocator: Likewise.
1314 * libsupc++/eh_alloc.cc: Likewise.
1315 * include/std/future: Add nodiscard attribute to async.
1316 * libsupc++/new: Add nodiscard attribute to new.
1317
3c1c2a8c 13182019-01-18 Jonathan Wakely <jwakely@redhat.com>
1319
1320 PR libstdc++/87514
1321 PR libstdc++/87520
1322 PR libstdc++/88782
1323 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
1324 * include/bits/shared_ptr.h
1325 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
1326 (allocate_shared): Change to use new tag type.
1327 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
1328 Declare new member function.
1329 (_Sp_alloc_shared_tag): Define new type.
1330 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
1331 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
1332 _Sp_make_shared_tag::_S_eq to check type_info.
1333 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
1334 Constrain to prevent being called with _Sp_alloc_shared_tag.
1335 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
1336 Replace constructor with ...
1337 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
1338 reference parameter so address of the new object can be returned to
1339 the caller. Obtain the allocator from the tag type.
1340 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
1341 constructor with ...
1342 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
1343 to the __shared_count constructor.
1344 (__allocate_shared): Change to use new tag type.
1345 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
1346
21a962b2 13472019-01-17 Jonathan Wakely <jwakely@redhat.com>
1348
464ac146 1349 * src/c++17/fs_ops.cc
1350 (equivalent(const path&, const path&, error_code&))
1351 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
1352 compare files instead of relying on incomplete info returned by stat.
1353
2987a93d 1354 PR libstdc++/88884
1355 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
1356 if the path is already absolute.
1357 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
1358 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
1359
21a962b2 1360 PR libstdc++/88881
1361 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
1362 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
1363 of filesystem::exists.
1364 (create_directories(const path&, error_code&)): Add assertions.
1365 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
1366 Add workaround for bug in _wstat for paths with trailing slash.
1367 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
1368 for expected behaviour on mingw.
1369 * testsuite/experimental/filesystem/operations/create_directories.cc:
1370 Likewise.
1371 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
1372 "TMP" instead of "TMPDIR" and clean environment before each test. Do
1373 not test permissions on mingw targets.
1374
93478c9f 13752019-01-16 Jonathan Wakely <jwakely@redhat.com>
1376
1377 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
1378 constructors and open members taking wide strings. Fix patterns for
1379 filesystem::path members to match wstring_view parameters. Add
1380 exports for shared_ptr members used by directory iterators.
1381 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
1382 error code parameter if the file doesn't exist.
1383 * src/filesystem/ops.cc (remove(const path&, error_code&)):
1384 Likewise.
1385 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
1386 values for mingw targets, where "/" is not an absolute path. Do not
1387 test symlinks on mingw targets.
1388 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
1389 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
1390 on mingw targets.
1391 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
1392 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
1393 that each component of the path is created.
1394 * testsuite/experimental/filesystem/operations/create_directories.cc:
1395 Likewise.
1396 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
1397 permissions on mingw targets.
1398 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
1399 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
1400 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
1401 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
1402 mingw targets.
1403 * testsuite/experimental/filesystem/operations/permissions.cc:
1404 Likewise.
1405 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
1406 symlinks or permissions on mingw targets.
1407 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
1408 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
1409 symlinks on mingw targets.
1410 * testsuite/experimental/filesystem/operations/remove_all.cc:
1411 Likewise.
1412 * testsuite/27_io/filesystem/operations/status.cc: Do not test
1413 permissions on mingw targets.
1414 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
1415 test symlinks on mingw targets.
1416 * testsuite/experimental/filesystem/operations/space.cc: Fix test
1417 for mingw targets.
1418
af93b844 14192019-02-14 Ulrich Drepper <drepper@redhat.com>
1420
1421 PR libstdc++/88738
1422 Warn about unused comparisons of shared_ptr/unique_ptr
1423 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
1424 * include/bits/shared_ptr.h: Use it for operator ==, !=,
1425 <, <=, >, >= for shared_ptr.
1426 * include/bits/unique_ptr.h: Likewise for unique_ptr.
1427
8793c0de 14282019-01-15 Jonathan Wakely <jwakely@redhat.com>
1429
afa61572 1430 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
1431 as 201611L, because P0497R0 changes are supported.
1432 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
1433
feb89906 1434 * include/bits/erase_if.h [__cplusplus > 201703L]
1435 (__cpp_lib_erase_if): Only define for C++2a.
1436 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
1437 (__cpp_lib_null_iterators): Define.
1438 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
1439 (__cpp_lib_null_iterators): Define.
1440 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
1441
d253bcb1 1442 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
1443 status.
1444 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
1445 Define.
1446 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
1447 changes are supported.
1448 * include/std/optional (__cpp_lib_optional): Likewise.
1449 * include/std/variant (__cpp_lib_variant): Likewise.
1450 * include/std/version [!__STRICT_ANSI__]
1451 (__cpp_lib_uncaught_exceptions): Define as long integer.
1452 [__cplusplus >= 201703L] (__cpp_lib_any)
1453 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
1454 (__cpp_lib_variant): Define for C++17.
1455 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
1456 as long integer.
1457 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
1458 integer.
1459
8793c0de 1460 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
1461
a8cd4b2b 14622019-01-12 Jonathan Wakely <jwakely@redhat.com>
1463
1464 PR libstdc++/88811
1465 PR libstdc++/83306
1466 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
1467 before second path.
1468 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
1469 test.
1470
a5b1332c 14712019-01-11 Jonathan Wakely <jwakely@redhat.com>
1472
656ac8b7 1473 * doc/xml/manual/intro.xml: Include new section.
1474 * doc/xml/manual/status_cxx2017.xml: Document more
1475 implementation-defined properties of the library.
1476 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
1477 * doc/html/*: Regenerate.
1478
f5480b8c 1479 * include/bits/refwrap.h [__cplusplus > 201703L]
1480 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
1481 (_Reference_wrapper_base_memfun): Do not define for C++2a.
1482 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
1483 for C++2a.
1484 (reference_wrapper::operator()): Add static assertion.
1485 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
1486
36496c4d 1487 * include/std/chrono (duration_values::zero(), duration_values::min())
1488 (duration_values::max()): Add noexcept.
1489 (duration::zero(), duration::min(), duration::max()): Likewise.
1490 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
1491 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
1492 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
1493
a5b1332c 1494 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
1495
d9de68bc 14962019-01-11 Jakub Jelinek <jakub@redhat.com>
1497
1498 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
1499 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
1500
beb370cb 15012019-01-11 Jonathan Wakely <jwakely@redhat.com>
1502
1d628fd4 1503 PR libstdc++/88802
1504 * include/bits/functional_hash.h (hash<nullptr_t>): Define
1505 specialization for C++17 (P0513R0, LWG 2817).
1506 * testsuite/20_util/hash/nullptr.cc: New test.
1507
a18b3766 1508 PR libstdc++/88125
1509 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
1510 pattern for std::basic_stringbuf::str().
1511
beb370cb 1512 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
1513 basic_ostream::operator<< patterns.
1514
cbbb35ec 15152019-01-10 Jonathan Wakely <jwakely@redhat.com>
1516
1715824b 1517 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
1518 test failures on targets with 32-bit time_t.
1519
f5529091 1520 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
1521 * include/std/deque: Likewise.
1522 * include/std/forward_list: Likewise.
1523 * include/std/list: Likewise.
1524 * include/std/string: Likewise.
1525 * include/std/vector: Likewise.
1526 * include/std/version: Likewise.
1527 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
1528 * testsuite/23_containers/deque/erasure.cc: Likewise.
1529 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
1530 * testsuite/23_containers/list/erasure.cc: Likewise.
1531 * testsuite/23_containers/map/erasure.cc: Likewise.
1532 * testsuite/23_containers/set/erasure.cc: Likewise.
1533 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
1534 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
1535 * testsuite/23_containers/vector/erasure.cc: Likewise.
1536
cbbb35ec 1537 * include/experimental/internet [AI_NUMERICSERV]
1538 (resolver_base::numeric_service): Define conditionally.
1539 * testsuite/experimental/net/internet/resolver/base.cc: Test it
1540 conditionally.
1541 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
1542 Likewise.
1543
ac9a8436 15442019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
1545 Jonathan Wakely <jwakely@redhat.com>
1546
1547 Implement LWG 2221
1548 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
1549 (GLIBCXX_3.4.26): Add new exports.
1550 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
1551 correct list of sources.
1552 * include/Makefile.in: Regenerate.
1553 * include/std/ostream (operator<<(nullptr_t)): New member function.
1554 * src/c++17/ostream-inst.cc: New file.
1555 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
1556 test.
1557
5f027941 15582019-01-10 Jonathan Wakely <jwakely@redhat.com>
1559
1560 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
1561 of the source file containing the caller.
1562 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
1563 directories created by test.
1564 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
1565 Likewise.
1566 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
1567 Likewise.
1568 * testsuite/experimental/filesystem/iterators/
1569 recursive_directory_iterator.cc: Likewise.
1570
3273d2e6 15712019-01-10 Jakub Jelinek <jakub@redhat.com>
1572
1573 PR tree-optimization/88775
1574 * include/bits/stl_function.h (greater<_Tp*>::operator(),
1575 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
1576 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
1577 instead of __builtin_constant_p if available. Don't bother with
1578 the pointer comparison in C++11 and earlier.
1579
f4d3c071 15802019-01-09 Sandra Loosemore <sandra@codesourcery.com>
1581
1582 PR other/16615
1583
1584 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
1585 with "cannot".
1586
8eba10af 15872019-01-09 Jonathan Wakely <jwakely@redhat.com>
1588
6a6ade9f 1589 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
1590 for filesystem::path. Give variables more distinctive names.
1591
41cda271 1592 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
1593 member function to perform non-trivial assignment.
1594 (_Optional_payload_base::_M_move_assign): Likewise.
1595 (_Optional_payload<T, true, false, true>::operator=)
1596 (_Optional_payload<T, true, true, false>::operator=)
1597 (_Optional_payload<T, true, false, false>::operator=): Call
1598 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
1599
8eba10af 1600 PR libstdc++/88204
1601 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
1602 test std::complex<long double> if long double format is IBM128.
1603 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
1604 Likewise.
1605
64a50f48 16062019-01-08 Jonathan Wakely <jwakely@redhat.com>
1607
73f3ad16 1608 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
1609 for old std::unique_ptr layout.
1610 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
1611 to become valueless. Add filesystem::path tests.
1612
58e897da 1613 PR libstdc++/87855
1614 * include/std/optional (_Optional_payload_base): New class template
1615 for common code hoisted from _Optional_payload specializations. Use
1616 a template for the union, to allow a partial specialization for
1617 types with non-trivial destructors. Add constructors for in-place
1618 initialization to the union.
1619 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
1620 to perform non-trivial copy construction, instead of relying on
1621 non-standard copy elision in a delegating constructor.
1622 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
1623 non-trivial move construction.
1624 (_Optional_payload): Derive from _Optional_payload_base and use it
1625 for everything except the non-trivial assignment operators, which are
1626 defined as needed.
1627 (_Optional_payload<false, C, M>): Derive from the specialization
1628 _Optional_payload<true, false, false> and add a destructor.
1629 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
1630 Forward to corresponding members of _Optional_payload.
1631 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
1632 Hoist common members from _Optional_base.
1633 (_Optional_base): Make all members and base class public.
1634 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
1635 _Optional_base_impl.
1636 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
1637 support for new std::optional layout.
1638 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
1639
64a50f48 1640 PR libstdc++/88066
1641 * include/bits/locale_conv.h: Use <> for includes not "".
1642 * include/ext/random: Likewise.
1643 * include/ext/vstring.h: Likewise.
1644
95b40931 16452019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1646
1647 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
1648 (GLIBCXX_3.4.21): Likewise.
1649
fa00ec77 16502019-01-08 Jonathan Wakely <jwakely@redhat.com>
1651
1652 PR libstdc++/88749
1653 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
1654 to match the one that controls whether utimbuf and utime are declared.
1655
3f304b2d 16562019-01-07 Jonathan Wakely <jwakely@redhat.com>
1657
fc6ac813 1658 PR libstdc++/87787
1659 * include/bits/char_traits.h (char_traits::move): Do not pass null
1660 pointers to memmove.
1661 * include/bits/locale_facets.h
1662 (ctype<char>::widen(const char*, const char*, char*)): Do not
1663 pass null pointers to memcpy.
1664 (ctype<char>::narrow(const char*, const char*, char, char*)):
1665 Likewise.
1666 (ctype<char>::do_widen(const char*, const char*, char*)):
1667 Likewise.
1668 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
1669 Likewise.
1670
bbc66c45 1671 * doc/xml/manual/spine.xml: Update copyright years.
1672 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
1673 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
1674 for C++17 filesystem library.
1675 * doc/html/*: Regenerate.
1676
3f304b2d 1677 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
1678 * config.h.in: Regenerate.
1679 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
1680 alphabetically and add missing entries for copy_symlink,
1681 hard_link_count, rename, and resize_file.
1682 * configure: Regenerate.
1683 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
1684 used unconditionally.
1685 * src/filesystem/ops-common.h (__gnu_posix::truncate)
1686 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
1687 supports truncating to zero length.
1688 * testsuite/27_io/filesystem/operations/all.cc: New test.
1689 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
1690
0ebb0980 16912019-01-06 Jonathan Wakely <jwakely@redhat.com>
1692
3935f409 1693 PR libstdc++/86756
1694 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
1695 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
1696 * config.h.in: Regenerate.
1697 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
1698 remaining std::filesystem types and functions.
1699 * configure: Regenerate.
1700 * src/c++17/Makefile.am: Add C++17 filesystem sources.
1701 * src/c++17/Makefile.in: Regenerate.
1702 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
1703 here, and change name of included file.
1704 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
1705 here, and change name of included file.
1706 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
1707 path to dir-common.h.
1708 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
1709 path to ops-common.h. Disable -Wunused-parameter warnings.
1710 (internal_file_clock): Define unconditionally.
1711 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
1712 define.
1713 (do_copy_file, do_space): Move definitions to ops.common.h.
1714 (copy, file_size, hard_link_count, last_write_time, space): Only
1715 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
1716 report an error.
1717 (last_write_time, read_symlink): Remove unused attributes from
1718 parameters.
1719 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
1720 * src/filesystem/Makefile.in: Regenerate.
1721 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
1722 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
1723 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
1724 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
1725 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
1726 dummy types and functions instead of using #error.
1727 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
1728 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
1729 in terms of stat.
1730 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
1731 (do_copy_file, do_space): Move definitions here from std-ops.cc.
1732 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
1733 to account for new namespace.
1734 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
1735 -lstdc++fs from dg-options.
1736 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
1737 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
1738 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
1739 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
1740 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
1741 Likewise.
1742 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
1743 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
1744 Likewise.
1745 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
1746 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
1747 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
1748 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
1749 * testsuite/27_io/filesystem/operations/create_directories.cc:
1750 Likewise.
1751 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
1752 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
1753 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
1754 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
1755 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
1756 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
1757 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
1758 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
1759 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
1760 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
1761 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
1762 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
1763 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
1764 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
1765 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
1766 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
1767 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
1768 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
1769 Likewise.
1770 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
1771
1772
c6e37a9f 1773 PR libstdc++/86756
1774 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
1775 typeinfo and vtables less greedy.
1776 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
1777 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
1778 * src/c++17/Makefile.in: Regenerate.
1779 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
1780 here, and change name of included file.
1781 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
1782 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
1783 from sources.
1784 * src/filesystem/Makefile.in: Regenerate.
1785 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
1786 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
1787 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
1788 from dg-options and remove dg-require-filesystem-ts.
1789 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
1790 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
1791 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
1792 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
1793 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
1794 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
1795 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
1796 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
1797 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
1798 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
1799 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
1800 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
1801 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
1802 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
1803 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
1804 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
1805 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
1806 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
1807 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
1808 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
1809 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
1810 Likewise.
1811 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
1812 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
1813 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
1814 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
1815 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
1816 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
1817 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
1818 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
1819 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
1820 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
1821 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
1822 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
1823 Likewise.
1824 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
1825 Likewise.
1826 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
1827 Likewise.
1828 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
1829 Likewise.
1830 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
1831 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
1832 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
1833 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
1834 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
1835 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
1836 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
1837 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
1838 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
1839 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
1840 Likewise.
1841 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
1842 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
1843 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
1844 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
1845 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
1846
8815ac91 1847 PR libstdc++/87431
1848 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
1849 Check is_trivially_copyable instead of is_scalar.
1850 (variant::emplace<N, Args>(Args&&...)): If construction of the new
1851 contained value can throw and its type is trivially copyable then
1852 construct into a temporary variant and move from it, to provide the
1853 strong exception safety guarantee.
1854 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
1855 Likewise.
1856 * testsuite/20_util/variant/87431.cc: New test.
1857 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
1858 conversion causes valueless state.
1859
0ebb0980 1860 PR libstdc++/88607
1861 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
1862 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
1863 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
1864 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
1865 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
1866
adc6beee 18672019-01-05 Jonathan Wakely <jwakely@redhat.com>
1868
1869 * include/bits/fs_fwd.h (__file_clock): Define new clock.
1870 (file_time_type): Redefine in terms of __file_clock.
1871 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
1872 overflow.
1873 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
1874 internal linkage.
1875 (internal_file_lock): New helper type for accessing __file_clock.
1876 (do_copy_file): Use internal_file_lock to convert system time to
1877 file_time_type.
1878 (last_write_time(const path&, error_code&)): Likewise.
1879 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
1880
6b4a77f2 18812019-01-04 Jonathan Wakely <jwakely@redhat.com>
1882
98185b9f 1883 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
1884 for const member functions of std::basic_string.
1885 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
1886 in C++17.
1887 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
1888 Make non-standard constructor private.
1889 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
1890 Likewise.
1891 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
1892 explicit instantiations for C++17 as well as earlier dialects.
1893 * src/c++17/Makefile.am: Add new source files.
1894 * src/c++17/Makefile.in: Regenerate.
1895 * src/c++17/cow-string-inst.cc: New file defining explicit
1896 instantiations for basic_string member functions added in C++17.
1897 * src/c++17/string-inst.cc: Likewise.
1898
859e6fed 1899 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
1900 copy/move constructors for old std::basic_string.
1901 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1902 (basic_string::reference, basic_string::const_reference): Define
1903 as plain references for C++11 and later.
1904 (basic_string::basic_string()): Put constructor body outside
1905 preprocessor conditional groups.
1906 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
1907 instead of copying it.
1908 (basic_string::basic_string(const basic_string&, const _Alloc&)):
1909 Define.
1910 (basic_string::basic_string(basic_string&&, const _Alloc&)):
1911 Define.
1912 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
1913 cases for old basic_string.
1914 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
1915 allocator-extended constructors unconditionally. Add extra members to
1916 allocator type when using old string ABI.
1917 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
1918 for old string ABI.
1919 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
1920
e13f6a7f 1921 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
1922 -fno-inline added to test flags.
1923
a18fccd0 1924 * testsuite/21_strings/basic_string/requirements/
1925 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
1926
7f77ca07 1927 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
1928 assertion failures with old std::string ABI.
1929
9346fb0e 1930 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
1931 with ...
1932 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
1933 functions that will only erase elements at the end.
1934 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
1935 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
1936 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
1937 of erase(p, end()).
1938 (path::_List::pop_back()): Define.
1939 (path::_List::_M_erase_from(const_iterator)): Define.
1940 (path::operator/=(const path&)): Use pop_back to remove last component
1941 and _M_erase_from to remove multiple components.
1942 (path::_M_append(basic_string_view<value_type>)): Likewise.
1943 (path::operator+=(const path&)): Likewise.
1944 (path::_M_concat(basic_string_view<value_type>)): Likewise.
1945 (path::remove_filename()): Likewise.
1946 (path::lexically_normal()): Use _List::_Impl iterators instead of
1947 path::iterator. Use pop_back to remove components from the end. Clear
1948 trailing filename, instead of using erase(const_iterator) to remove
1949 a non-final component.
1950 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
1951 additional cases.
1952 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
1953
24230cab 1954 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
1955 incorrect treatment of empty filename after trailing slash.
1956 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
1957
6b4a77f2 1958 * testsuite/21_strings/basic_string/modifiers/assign/char/
1959 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
1960 to test flags.
1961 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
1962 move_assign_optim.cc: Likewise.
1963
02df5941 19642019-01-03 Jonathan Wakely <jwakely@redhat.com>
1965 Jakub Jelinek <jakub@redhat.com>
1966
1967 PR libstdc++/88607
1968 * include/experimental/memory: Replace UTF-8 quote characters.
1969 * include/std/future: Replace UTF-8 "em dash" characters.
1970
f8ad40d8 19712019-01-03 Jonathan Wakely <jwakely@redhat.com>
1972
9013258b 1973 PR libstdc++/88607
1974 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
1975 * include/debug/forward_list: Likewise.
1976 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
1977 character.
1978 * include/experimental/chrono: Likewise.
1979 * include/experimental/functional: Likewise.
1980 * include/experimental/ratio: Likewise.
1981 * include/experimental/system_error: Likewise.
1982 * include/experimental/tuple: Likewise.
1983 * include/experimental/type_traits: Likewise.
1984 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
1985 * include/parallel/multiseq_selection.h: Likewise.
1986
f8ad40d8 1987 PR libstdc++/88681
1988 * config/abi/pre/gnu.ver: Add missing exports.
1989 * testsuite/22_locale/collate_byname/88681.cc: New test.
1990 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
1991 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
1992
138292f4 19932019-01-02 Jonathan Wakely <jwakely@redhat.com>
1994
553d41a8 1995 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
1996 initializer_list<value_type> and from input iterator ranges.
1997 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
1998
138292f4 1999 * testsuite/experimental/string_view/element_access/char/empty.cc:
2000 Fix year range in copyright header.
2001
963c0125 20022019-01-02 Joel Brobecker <brobecker@adacore.com>
2003
2004 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
2005 Fix year range in copyright header.
2006
fbd26352 20072019-01-01 Jakub Jelinek <jakub@redhat.com>
d353bf18 2008
2009 Update copyright years.
fb96fbb3 2010\f
fbd26352 2011Copyright (C) 2019 Free Software Foundation, Inc.
fb96fbb3 2012
2013Copying and distribution of this file, with or without modification,
2014are permitted in any medium without royalty provided the copyright
2015notice and this notice are preserved.