]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
Simplify std::scoped_lock destructor
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
00f08bc3 12019-06-12 Jonathan Wakely <jwakely@redhat.com>
2
7445abf1 3 * include/std/mutex (scoped_lock::~scoped_lock()): Use fold
4 expression.
5
00f08bc3 6 * include/Makefile.am: Add new <bits/charconv.h> header.
7 * include/Makefile.in: Regenerate.
8 * include/bits/basic_string.h (to_string(int), to_string(unsigned))
9 (to_string(long), to_string(unsigned long), to_string(long long))
10 (to_string(unsigned long long)): Rewrite to use __to_chars_10_impl.
11 * include/bits/charconv.h: New header.
12 (__detail::__to_chars_len): Move here from <charconv>.
13 (__detail::__to_chars_10_impl): New function extracted from
14 __detail::__to_chars_10.
15 * include/std/charconv (__cpp_lib_to_chars): Add, but comment out.
16 (__to_chars_unsigned_type): New class template that reuses
17 __make_unsigned_selector_base::__select to pick a type.
18 (__unsigned_least_t): Redefine as __to_chars_unsigned_type<T>::type.
19 (__detail::__to_chars_len): Move to new header.
20 (__detail::__to_chars_10): Add inline specifier. Move code doing the
21 output to __detail::__to_chars_10_impl and call that.
22 * include/std/version (__cpp_lib_to_chars): Add, but comment out.
23 * testsuite/21_strings/basic_string/numeric_conversions/char/
24 to_string.cc: Fix reference in comment. Remove unused variable.
25 * testsuite/21_strings/basic_string/numeric_conversions/char/
26 to_string_int.cc: New test.
27
9a75566e 282019-06-09 Edward Smith-Rowland <3dw4rd@verizon.net>
29
30 Fix ConstexprIterator requirements tests - No constexpr algorithms!
31 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
32 Replace copy with hand-rolled loop.
33 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
34 Ditto.
35
1fe150d1 362019-06-08 Edward Smith-Rowland <3dw4rd@verizon.net>
37
38 Test for C++20 p0858 - ConstexprIterator requirements.
39 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
40 New test.
41 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
42 New test.
43
58dcf1e2 442019-06-07 Thomas Rodgers <trodgers@redhat.com>
45
46 Rename PSTL macro's consistent with libstdc++ (and llvm upstream
47 project) standards.
48 * include/bits/c++config: Rename all macros of the form __PSTL* to
49 _PSTL*.
50 * include/std/algorithm: Likewise.
51 * include/std/execution: Likewise.
52 * include/std/numeric: Likewise.
53 * include/std/memory: Likewise.
54 * include/pstl/glue_memory_impl.h: Likewise.
55 * include/pstl/numeric_impl.h: Likewise.
56 * include/pstl/glue_memory_defs.h: Likewise.
57 * include/pstl/execution_defs.h: Likewise.
58 * include/pstl/utils.h: Likewise.
59 * include/pstl/algorithm_fwd.h: Likewise.
60 * include/pstl/unseq_backend_simd.h: Likewise.
61 * include/pstl/glue_execution_defs.h: Likewise.
62 * include/pstl/algorithm_impl.h: Likewise.
63 * include/pstl/parallel_impl.h: Likewise.
64 * include/pstl/memory_impl.h: Likewise.
65 * include/pstl/glue_numeric_defs.h: Likewise.
66 * include/pstl/parallel_backend_utils.h: Likewise.
67 * include/pstl/glue_algorithm_defs.h: Likewise.
68 * include/pstl/parallel_backend.h: Likewise.
69 * include/pstl/glue_numeric_impl.h: Likewise.
70 * include/pstl/parallel_backend_tbb.h: Likewise.
71 * include/pstl/numeric_fwd.h: Likewise.
72 * include/pstl/glue_algorithm_impl.h: Likewise.
73 * include/pstl/execution_impl.h: Likewise.
74 * include/pstl/pstl_config.h: Likewise.
75 * testsuite/util/pstl/pstl_test_config.h: Likewise.
76 * testsuite/util/pstl/test_utils.h: Likewise.
77 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
78 Likewise.
79 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
80 Likewise.
81 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
82 Likewise.
83 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
84 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: Likewise.
85 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
86 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: Likewise.
87 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
88 Likewise.
89 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Likewise.
90 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: Likewise.
91 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: Likewise.
92 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: Likewise.
93 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
94 Likewise.
95 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: Likewise.
96 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Likewise.
97 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: Likewise.
98 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: Likewise.
99 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
100 Likewise.
101 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
102 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: Likewise.
103 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
104 Likewise.
105 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
106 Likewise.
107 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Likewise.
108 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
109 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
110 Likewise.
111 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
112 Likewise.
113 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
114 Likewise.
115 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
116 Likewise.
117 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
118 Likewise.
119 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
120 Likewise.
121 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
122 Likewise.
123 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
124 Likewise.
125 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
126 Likewise.
127 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
128 Likewise.
129 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
130 Likewise.
131 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.
132
133 Rename header guards to be consistent with upstream project's
134 conventions.
135 * include/pstl/glue_memory_impl.h: Rename all macros of the form
136 _PSTL_(.*)_H to _PSTL_\U\1_H.
137 * include/pstl/numeric_impl.h: Likewise.
138 * include/pstl/glue_memory_defs.h: Likewise.
139 * include/pstl/execution_defs.h: Likewise.
140 * include/pstl/utils.h: Likewise.
141 * include/pstl/algorithm_fwd.h: Likewise.
142 * include/pstl/unseq_backend_simd.h: Likewise.
143 * include/pstl/glue_execution_defs.h: Likewise.
144 * include/pstl/algorithm_impl.h: Likewise.
145 * include/pstl/parallel_impl.h: Likewise.
146 * include/pstl/memory_impl.h: Likewise.
147 * include/pstl/glue_numeric_defs.h: Likewise.
148 * include/pstl/parallel_backend_utils.h: Likewise.
149 * include/pstl/glue_algorithm_defs.h: Likewise.
150 * include/pstl/parallel_backend.h: Likewise.
151 * include/pstl/glue_numeric_impl.h: Likewise.
152 * include/pstl/parallel_backend_tbb.h: Likewise.
153 * include/pstl/numeric_fwd.h: Likewise.
154 * include/pstl/glue_algorithm_impl.h: Likewise.
155 * include/pstl/execution_impl.h: Likewise.
156 * include/pstl/pstl_config.h: Likewise.
157 * testsuite/util/pstl/pstl_test_config.h: Likewise.
158
159 Synchronize libstdc++ parallel algorithms with upstream
160 project.
161 * include/pstl/algorithm_fwd.h: Synchronize with
162 upstream PSTL project.
163 * include/pstl/algorithm_impl.h: Likewise.
164 * include/pstl/execution_defs.h: Likewise.
165 * include/pstl/execution_impl.h: Likewise.
166 * include/pstl/glue_algorithm_impl.h: Likewise.
167 * include/pstl/glue_execution_defs.h: Likewise.
168 * include/pstl/numeric_fwd.h: Likewise.
169 * include/pstl/numeric_impl.h: Likewise.
170 * include/pstl/parallel_backend.h: Likewise.
171 * include/pstl/pstl_config.h: Likewise.
172 * include/pstl/unseq_backend_simd.h: Likewise.
173 * include/pstl/parallel_backend_serial.h: New file.
174 * include/Makefile.am (pstl_headers): Add
175 parallel_backend_serial.h.
176 * include/Makefile.in: Regenerate.
177
178 Clean up non-conforming names
179 * include/pstl/algorithm_impl.h (__parallel_set_union_op):
180 Uglfiy copy_range1 and copy_range2
181 (__pattern_walk2_n): Rename local n to __n
182 * include/pstl/parallel_backend_tbb.h (struct __binary_no_op):
183 Rename parameter _T to _Tp.
184
185 Integrate non-TBB serial backend support
186 * include/bits/c++config: Adjust TBB detection logic to select serial
187 PSTL backend if no TBB present.
188 * testsuite/utils/pstl/test_utils.h: Remove check for
189 _PSTL_USE_PAR_POLICIES
190
756e59b0 1912019-06-07 Jonathan Wakely <jwakely@redhat.com>
192
92964728 193 * testsuite/24_iterators/container_access.cc: Move dg-options before
194 dg-do directive so the target check uses the -std option.
195
756e59b0 196 PR libstdc++/90770
197 * configure: Regenerate.
198 * src/Makefile.am (stamp-debug): Also test for missing makefile.
199 * src/Makefile.in: Regenerate.
200
42c1dacd 2012019-06-06 Jonathan Wakely <jwakely@redhat.com>
202
9eb6db53 203 * include/std/array: Do not include <stdexcept>.
204 * include/std/optional: Include <exception> and
205 <bits/exception_defines.h> instead of <stdexcept>.
206 * testsuite/20_util/function_objects/searchers.cc: Include <cctype>
207 for std::isalnum.
208 * testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
209 std::allocator.
210 * testsuite/23_containers/map/erasure.cc: Include <string>.
211 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
212
2bc51486 213 * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add
214 dg-prune-output for different C++98 diagnostic.
215 * testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
216 Likewise.
217 * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
218 Likewise.
219 * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
220 Likewise.
221 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
222 Likewise.
223 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
224 Likewise.
225 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
226 Likewise.
227 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
228 Likewise.
229 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
230 Likewise.
231 * testsuite/23_containers/vector/requirements/dr438/
232 constructor_1_neg.cc: Likewise.
233 * testsuite/23_containers/vector/requirements/dr438/
234 constructor_2_neg.cc: Likewise.
235 * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
236 Likewise.
237 * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
238
191c4715 239 * testsuite/23_containers/unordered_map/requirements/debug_container.cc:
240 Do not test allocator rebinding extension for C++2a.
241 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
242 dg-do directive for C++17 and C++2a.
243
19516e33 244 * testsuite/23_containers/deque/requirements/explicit_instantiation/
245 1_c++0x.cc: Remove redundant test.
246 * testsuite/23_containers/deque/requirements/explicit_instantiation/
247 2.cc: Use target selector instead of preprocessor condition.
248 * testsuite/23_containers/deque/requirements/explicit_instantiation/
249 3.cc: Do not run test for C++2a.
250 * testsuite/23_containers/forward_list/requirements/
251 explicit_instantiation/3.cc: Likewise.
252 * testsuite/23_containers/forward_list/requirements/
253 explicit_instantiation/5.cc: Do not test allocator rebinding extension
254 for C++2a.
255 * testsuite/23_containers/list/requirements/explicit_instantiation/
256 1_c++0x.cc: Remove redundant test.
257 * testsuite/23_containers/list/requirements/explicit_instantiation/
258 2.cc: Use target selector instead of preprocessor condition.
259 * testsuite/23_containers/list/requirements/explicit_instantiation/
260 3.cc: Do not run test for C++2a.
261 * testsuite/23_containers/list/requirements/explicit_instantiation/
262 5.cc: Do not test allocator rebinding extension for C++2a.
263 * testsuite/23_containers/map/requirements/explicit_instantiation/
264 1_c++0x.cc: Remove redundant test.
265 * testsuite/23_containers/map/requirements/explicit_instantiation/
266 2.cc: Adjust comment.
267 * testsuite/23_containers/map/requirements/explicit_instantiation/
268 3.cc: Do not run test for C++2a.
269 * testsuite/23_containers/map/requirements/explicit_instantiation/
270 5.cc: Do not test allocator rebinding extension for C++2a.
271 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
272 1_c++0x.cc: Remove redundant test.
273 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
274 3.cc: Do not run test for C++2a.
275 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
276 5.cc: Do not test allocator rebinding extension for C++2a.
277 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
278 3.cc: Do not run test for C++2a.
279 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
280 5.cc: Do not test allocator rebinding extension for C++2a.
281 * testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
282 Do not run test for C++2a.
283 * testsuite/23_containers/set/requirements/explicit_instantiation/
284 1_c++0x.cc: Remove redundant test.
285 * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
286 Do not test allocator rebinding extension for C++2a.
287 * testsuite/23_containers/unordered_map/requirements/
288 explicit_instantiation/3.cc: Likewise.
289 * testsuite/23_containers/unordered_map/requirements/
290 explicit_instantiation/5.cc: Do not test allocator rebinding extension
291 for C++2a.
292 * testsuite/23_containers/unordered_multimap/requirements/
293 explicit_instantiation/3.cc: Do not run test for C++2a.
294 * testsuite/23_containers/unordered_multimap/requirements/
295 explicit_instantiation/5.cc: Do not test allocator rebinding extension
296 for C++2a.
297 * testsuite/23_containers/unordered_multiset/requirements/
298 explicit_instantiation/3.cc: Do not run test for C++2a.
299 * testsuite/23_containers/unordered_multiset/requirements/
300 explicit_instantiation/5.cc: Do not test allocator rebinding extension
301 for C++2a.
302 * testsuite/23_containers/unordered_set/requirements/
303 explicit_instantiation/3.cc: Do not run test for C++2a.
304 * testsuite/23_containers/unordered_set/requirements/
305 explicit_instantiation/5.cc: Do not test allocator rebinding extension
306 for C++2a.
307 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
308 2.cc: Remove redundant test.
309 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
310 3.cc: Do not run test for C++2a.
311 * testsuite/23_containers/vector/requirements/explicit_instantiation/
312 3.cc: Likewise.
313
6ffe4cf3 314 * include/std/type_traits (is_empty, is_polymorphic, is_final)
315 (is_abstract, is_aggregate): Remove static_assert.
316 * testsuite/20_util/is_abstract/incomplete_neg.cc: Check for error
317 from builtin only.
318 * testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise. Add
319 missing -std=gnu++17 option.
320 * testsuite/20_util/is_empty/incomplete_neg.cc: New test.
321 * testsuite/20_util/is_final/incomplete_neg.cc: New test.
322 * testsuite/20_util/is_polymorphic/incomplete_neg.cc: Check for error
323 from builtin only.
324
186ade93 325 * testsuite/18_support/set_terminate.cc: Do not run for C++98 mode.
326 * testsuite/18_support/set_unexpected.cc: Likewise.
327 * testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
328 void.
329 * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix constexpr
330 function to be valid in C++11.
331 * testsuite/26_numerics/complex/proj.cc: Do not run for C++98 mode.
332 * testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
333 include Library Fundamentals or Networking headers in C++11 mode.
334 * testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode.
335
42c1dacd 336 * include/std/tuple (_TC): Replace with _TupleConstraints.
337 (_TupleConstraints): New helper for SFINAE constraints, with more
338 expressive member functions to reduce duplication when used.
339 (tuple::_TC2, tuple::_TMC, tuple::_TNTC): Remove.
340 (tuple::_TCC): Replace dummy type parameter with bool non-type
341 parameter that can be used to check the pack size.
342 (tuple::_ImplicitDefaultCtor, tuple::_ExplicitDefaultCtor)
343 (tuple::_ImplicitCtor, tuple::_ExplicitCtor): New alias templates for
344 checking constraints in constructors.
345 (tuple::__valid_args, tuple::_UseOtherCtor, tuple::__use_other_ctor):
346 New SFINAE helpers.
347 (tuple::tuple): Use new helpers to reduce repitition in constraints.
348 (tuple::tuple(allocator_arg_t, const Alloc&)): Constrain.
349 (tuple<T1, T2>::_TCC, tuple<T1, T2>::_ImplicitDefaultCtor)
350 (tuple<T1, T2>::_ExplicitDefaultCtor, tuple<T1, T2>::_ImplicitCtor)
351 (tuple<T1, T2>::_ExplicitCtor): New alias templates for checking
352 constraints in constructors.
353 (tuple::__is_alloc_arg()): New SFINAE helpers.
354 (tuple<T1, T2>::tuple): Use new helpers to reduce repitition in
355 constraints.
356 (tuple<T1, T2>::tuple(allocator_arg_t, const Alloc&)): Constrain.
357 * testsuite/20_util/tuple/cons/90700.cc: New test.
358 * testsuite/20_util/tuple/cons/allocators.cc: Add default constructor
359 to meet new constraint on allocator-extended default constructor.
360
d0226ba4 3612019-06-03 Jonathan Wakely <jwakely@redhat.com>
362
363 * include/bits/stl_map.h (map): Disable static assert for C++98 mode.
364 * include/bits/stl_multimap.h (multimap): Likewise.
365
046bb3cb 3662019-06-03 François Dumont <fdumont@gcc.gnu.org>
367
368 Rename variables and cleanup comments.
369 * include/bits/hashtable_policy.h
370 * include/bits/hashtable.h
371
5c70715f 3722019-06-03 Jonathan Wakely <jwakely@redhat.com>
373
2b018df4 374 * doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
375 Fix bgcolor for P0340R3.
376 * doc/html/*: Regenerate.
377
fbf62452 378 PR libstdc++/90686
379 * doc/xml/manual/status_cxx2014.xml: Document what's missing from
380 <experimental/memory_resource>.
381 * doc/xml/manual/status_cxx2020.xml: Document status of P1285R0,
382 P0339R6, P0340R3, P1164R1 and P1357R1.
383 * doc/html/*: Regenerate.
384
5c70715f 385 * doc/xml/manual/status_cxx2020.xml: Document P1463R1 status.
386 * include/bits/forward_list.h [__cplusplus > 201703]: Enable
387 allocator::value_type assertion for C++2a.
388 * include/bits/hashtable.h: Likewise.
389 * include/bits/stl_deque.h: Likewise.
390 * include/bits/stl_list.h: Likewise.
391 * include/bits/stl_map.h: Likewise.
392 * include/bits/stl_multimap.h: Likewise.
393 * include/bits/stl_multiset.h: Likewise.
394 * include/bits/stl_set.h: Likewise.
395 * include/bits/stl_vector.h: Likewise.
396 * testsuite/23_containers/deque/48101-3_neg.cc: New test.
397 * testsuite/23_containers/forward_list/48101-3_neg.cc: New test.
398 * testsuite/23_containers/list/48101-3_neg.cc: New test.
399 * testsuite/23_containers/map/48101-3_neg.cc: New test.
400 * testsuite/23_containers/multimap/48101-3_neg.cc: New test.
401 * testsuite/23_containers/multiset/48101-3_neg.cc: New test.
402 * testsuite/23_containers/set/48101-3_neg.cc: New test.
403 * testsuite/23_containers/unordered_map/48101-3_neg.cc: New test.
404 * testsuite/23_containers/unordered_multimap/48101-3_neg.cc: New test.
405 * testsuite/23_containers/unordered_multiset/48101-3_neg.cc: New test.
406 * testsuite/23_containers/unordered_set/48101-3_neg.cc: New test.
407 * testsuite/23_containers/vector/48101-3_neg.cc: New test.
408
3e2001db 4092019-05-31 Gerald Pfeifer <gerald@pfeifer.com>
410
411 * doc/xml/manual/allocator.xml: Move hoard.org back to http.
412
065a9dd4 4132019-05-31 Jonathan Wakely <jwakely@redhat.com>
414
415 * include/std/tuple (tuple<>): Add noexcept to allocator-extended
416 constructors.
417 (tuple<T1, T2>::__nothrow_default_constructible()): New helper
418 function.
419 (tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.
420
1ff189c5 4212019-05-31 Jonathan Wakely <jwakely@redhat.com>
422
698373bc 423 * src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.
424
b74a9c1a 425 PR libstdc++/90682
426 * libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
427 definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
428 * libsupc++/eh_term_handler.h: New header defining
429 _GLIBCXX_DEFAULT_TERM_HANDLER.
430 * libsupc++/eh_terminate.cc: Include eh_term_handler.h.
431 (set_terminate): Restore default handler when argument is null.
432 (set_unexpected): Likewise.
433 * testsuite/18_support/set_terminate.cc: New test.
434 * testsuite/18_support/set_unexpected.cc: New test.
435
1ff189c5 436 * include/backward/hashtable.h (size_t, ptrdiff_t)
437 (forward_iterator_tag, input_iterator_tag, _Construct, _Destroy)
438 (distance, vector, pair, __iterator_category): Remove
439 using-declarations that add these names to namespace __gnu_cxx.
440 * include/ext/bitmap_allocator.h (size_t, ptrdiff_t): Likewise.
441 * include/ext/debug_allocator.h (size_t): Likewise.
442 * include/ext/functional (size_t, unary_function, binary_function)
443 (mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t, const_mem_fun1_ref_t):
444 Likewise.
445 * include/ext/malloc_allocator.h (size_t, ptrdiff_t): Likewise.
446 * include/ext/memory (ptrdiff_t, pair, __iterator_category): Likewise.
447 * include/ext/mt_allocator.h (size_t, ptrdiff_t): Likewise.
448 * include/ext/new_allocator.h (size_t, ptrdiff_t): Likewise.
449 * include/ext/numeric (iota): Fix outdated comment.
450 * include/ext/pool_allocator.h (size_t, ptrdiff_t): Likewise.
451 * include/ext/rb_tree (_Rb_tree, allocator): Likewise.
452 * include/ext/rope (size_t, ptrdiff_t, allocator, _Destroy): Likewise.
453 * include/ext/ropeimpl.h (size_t, printf, basic_ostream)
454 (__throw_length_error, _Destroy, std::__uninitialized_fill_n_a):
455 Likewise.
456 * include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
457 (allocator, __true_type, __false_type): Likewise.
458
c12402f6 4592019-05-31 Antony Polukhin <antoshkka@gmail.com>
460
461 PR libstdc++/71579
462 * include/std/type_traits __type_identity, __is_complete_or_unbounded):
463 New helpers for checking preconditions in traits.
464 (is_trivial, is_trivially_copyable, is_standard_layout, is_pod)
465 (is_literal_type, is_empty, is_polymorphic, is_final, is_abstract)
466 (is_destructible, is_nothrow_destructible, is_constructible)
467 (is_default_constructible, is_copy_constructible)
468 (is_move_constructible, is_nothrow_default_constructible)
469 (is_nothrow_constructible, is_nothrow_copy_constructible)
470 (is_nothrow_move_constructible, is_copy_assignable, is_move_assignable)
471 (is_nothrow_assignable, is_nothrow_copy_assignable)
472 (is_nothrow_move_assignable, is_trivially_constructible)
473 (is_trivially_copy_constructible, is_trivially_move_constructible)
474 is_trivially_assignable, is_trivially_copy_assignable)
475 (is_trivially_move_assignable, is_trivially_destructible)
476 (alignment_of, is_swappable, is_nothrow_swappable, is_invocable)
477 (is_invocable_r, is_nothrow_invocable)
478 (has_unique_object_representations, is_aggregate): Add static_asserts
479 to make sure that type traits are not misused with incomplete types.
480 (__is_constructible_impl, __is_nothrow_default_constructible_impl)
481 (__is_nothrow_constructible_impl, __is_nothrow_assignable_impl): New
482 base characteristics without assertions that can be reused in other
483 traits.
484 * testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
485 * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
486 test.
487 * testsuite/20_util/is_complete_or_unbounded/value.cc: New test.
488 * testsuite/20_util/is_abstract/incomplete_neg.cc: New test.
489 * testsuite/20_util/is_aggregate/incomplete_neg.cc: New test.
490 * testsuite/20_util/is_class/value.cc: Check incomplete type.
491 * testsuite/20_util/is_function/value.cc: Likewise.
492 * testsuite/20_util/is_move_constructible/incomplete_neg.cc: New test.
493 * testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc: New
494 test.
495 * testsuite/20_util/is_polymorphic/incomplete_neg.cc: New test.
496 * testsuite/20_util/is_reference/value.cc: Check incomplete types.
497 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
498 * testsuite/20_util/is_union/value.cc: Likewise.
499 * testsuite/20_util/is_void/value.cc: Likewise.
500 * testsuite/util/testsuite_tr1.h: Add incomplete union type.
501
84121f8a 5022019-05-31 Jonathan Wakely <jwakely@redhat.com>
503
504 * include/bits/random.h (random_device::_M_init(const char*, size_t)):
505 Add new private member function.
506 * src/c++11/cow-string-inst.cc (random_device::_M_init(const string&))
507 (random_device::_M_init_pretr1(const string&)): Call new private
508 member with string data.
509 * src/c++11/random.cc (random_device::_M_init(const char*, size_t)):
510 Define.
511 * testsuite/26_numerics/random/random_device/cons/default-cow.cc: New
512 test using COW strings.
513 * testsuite/26_numerics/random/random_device/cons/default.cc: Generate
514 a value from the device.
515 * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
516 Fix typo in token string.
517
01cad9ee 5182019-05-30 Nina Dinka Ranns <dinka.ranns@gmail.com>
519
520 LWG2788 basic_string spurious use of a default constructible allocator
521 * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
522 (basic_string::_M_replace_dispatch): Construct temporary string with
523 the current allocator.
524 * testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New.
525 * testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New.
526
aa4108cd 5272019-05-30 Jonathan Wakely <jwakely@redhat.com>
528
d1e7b14b 529 * doc/xml/manual/diagnostics.xml: Update list of headers that define
530 exception classes.
531 * doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
532 section about new/delete overloads. Improve section on verbose
533 terminate handler.
534 * doc/html/*: Regenerate.
535
2a9eab7c 536 * doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
537 P0811R3. Change status of P1353R0.
538 * doc/html/*: Regenerate.
539
aa4108cd 540 * doc/xml/manual/status_cxx2011.xml: Use <variablelist> for
541 documentation of implementation-defined types for [thread.req.native].
542 * doc/xml/manual/status_cxx2017.xml: Update documentation of
543 implementation-defined strings for [variant.bad.access]. Fix typo in
544 documentation of implementation-defined support for [fs.conform.9945].
545 * doc/html/*: Regenerate.
546
91df033f 5472019-05-29 Jonathan Wakely <jwakely@redhat.com>
548
745ff931 549 PR libstdc++/85494
550 * testsuite/26_numerics/random/random_device/cons/token.cc: Fix test
551 that fails on mingw-w64.
552
34bfd0d6 553 PR libstdc++/88881
554 * src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
555 (status(const path&, error_code&)): Use parent_path() to remove
556 trailing slash.
557 (symlink_status(const path&, error_code&)): Duplicate workaround for
558 bug in _wstat for paths with trailing slash.
559 * testsuite/27_io/filesystem/operations/remove_all.cc: Check path
560 with trailing slash.
561 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
562 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
563
5e115b34 564 * src/c++17/fs_path.cc (path::parent_path()): Create whole path at
565 once instead of building it iteratively.
566
913f5ef9 567 * testsuite/util/testsuite_api.h: Remove names of unused parameters.
568
91df033f 569 PR libstdc++/85494 use rdseed and rand_s in std::random_device
570 * acinclude.m4 (GLIBCXX_CHECK_X86_RDSEED): Define macro to check if
571 the assembler supports rdseed.
572 * config.h.in: Regenerate.
573 * configure: Regenerate.
574 * configure.ac: Use GLIBCXX_CHECK_X86_RDSEED.
575 * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_CRT_RAND_S): Define.
576 * doc/html/*: Regenerate.
577 * doc/xml/manual/status_cxx2011.xml: Document new tokens.
578 * include/bits/random.h (random_device::random_device()): Always call
579 _M_init rather than _M_init_pretr1.
580 (random_device::random_device(const string&)): Likewise.
581 (random_device::operator()()): Always call _M_getval().
582 (random_device::_M_file): Replace first member of union with an
583 anonymous struct, with _M_file as its first member.
584 * src/c++11/random.cc [_GLIBCXX_X86_RDRAND] (USE_RDRAND): Define.
585 [_GLIBCXX_X86_RDSEED] (USE_RDSEED): Define.
586 (USE_MT19937): Define if none of the above are defined.
587 (USE_POSIX_FILE_IO): Define.
588 (_M_strtoul): Remove.
589 [USE_RDSEED] (__x86_rdseed): Define new function.
590 [_GLIBCXX_USE_CRT_RAND_S] (__winxp_rand_s): Define new function.
591 (random_device::_M_init(const string&)): Initialize new union members.
592 Add support for "rdseed" and "rand_s" tokens. Decide what the
593 "default" token does according to which USE_* macros are defined.
594 [USE_POSIX_FILE_IO]: Store a file descriptor.
595 [USE_MT19937]: Forward to _M_init_pretr1 instead.
596 (random_device::_M_init_pretr1(const string&)) [USE_MT19937]: Inline
597 code from _M_strtoul.
598 [!USE_MT19937]: Call _M_init, transforming the old default token or
599 numeric tokens to "default".
600 (random_device::_M_fini()) [USE_POSIX_FILE_IO]: Use close not fclose.
601 (random_device::_M_getval()): Use new union members to obtain a
602 random number from the stored function pointer or file descriptor.
603 [USE_MT19937]: Obtain a value from the mt19937 engine.
604 (random_device::_M_getval_pretr1()): Call _M_getval().
605 (random_device::_M_getentropy()) [USE_POSIX_FILE_IO]: Use _M_fd
606 instead of fileno.
607 [!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
608 * testsuite/26_numerics/random/random_device/85494.cc: New test.
609
88c39923 6102019-05-28 Jonathan Wakely <jwakely@redhat.com>
611
28d9dbe9 612 PR libstdc++/90634
613 * include/experimental/bits/fs_path.h (path::path(path&&)): Only call
614 _M_split_cmpts() for a path with multiple components.
615 (path::_S_is_dir_sep()): Add missing 'static' keyword to function.
616 * src/filesystem/path.cc (path::_M_split_cmpts()): Count number of
617 components and reserve space in vector. Return early when there is
618 only one component.
619 * testsuite/27_io/filesystem/path/construct/90634.cc: New test.
620 * testsuite/experimental/filesystem/path/construct/90634.cc: New test.
621
88c39923 622 * testsuite/util/testsuite_fs.h (compare_paths): Use three-argument
623 form of std::equals for C++11 compatibility.
624
ba475497 6252019-05-26 Gerald Pfeifer <gerald@pfeifer.com>
626
627 * doc/xml/manual/appendix_contributing.xml: Update pointer to
628 C++ standard at ansi.org.
629
6c35f2e2 6302019-05-24 Jonathan Wakely <jwakely@redhat.com>
631
62ff07d4 632 * include/std/numeric (midpoint(T*, T*)): Fix incorrect result.
633 * testsuite/26_numerics/midpoint/pointer.cc: Change "compile" test
634 to "run".
635
6c35f2e2 636 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Fix test.
637 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused function.
638
e0a966c0 6392019-05-23 Jonathan Wakely <jwakely@redhat.com>
640
2b16b231 641 * testsuite/20_util/function_objects/invoke/1.cc: Move C++17-specific
642 tests to ...
643 * testsuite/20_util/function_objects/invoke/3.cc: New test.
644 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
645 "compile" test to "run".
646
a00d36cd 647 * doc/xml/manual/intro.xml: Document LWG DR 2996 change.
648 * doc/html/*: Regenerate.
649 * include/bits/shared_ptr.h (shared_ptr(shared_ptr&&, T*)): Add
650 rvalue aliasing constructor.
651 (static_pointer_cast, const_pointer, dynamic_pointer_cast)
652 (reinterpret_pointer_cast): Add overloads taking rvalues.
653 * include/bits/shared_ptr_base.h (__shared_ptr(__shared_ptr&&, T*)):
654 Add rvalue aliasing constructor.
655 * testsuite/20_util/shared_ptr/casts/1.cc: Change "compile" test to
656 "run" and check return values as well as types.
657 * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
658 * testsuite/20_util/shared_ptr/casts/rval.cc: New test.
659 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: New test.
660 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused return
661 values.
662
e0a966c0 663 * doc/xml/manual/evolution.xml: Document LWG DR 2921 change.
664 * doc/xml/manual/intro.xml: Likewise.
665 * include/std/future (__create_task_state): Add default arguments
666 to make providing an allocator optional.
667 (packaged_task::packaged_task(F&&)): Call __create_task_state directly
668 instead of delegating to another constructor.
669 (packaged_task::packaged_task(allocator_arg_t, const A&, ...)): Do not
670 define allocator-extended constructors for C++17 and later.
671 * testsuite/30_threads/packaged_task/cons/alloc.cc: Only run test for
672 C++11 and C++14.
673 * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
674 * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
675 * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
676
8e2a1096 6772019-05-23 Hans-Peter Nilsson <hp@axis.com>
678
679 * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
680 Don't run the libstdc++/83237 part on simulator targets.
681
1db1e5cc 6822019-05-23 Jonathan Wakely <jwakely@redhat.com>
683
01e2f379 684 * doc/xml/manual/status_cxx2017.xml: Add feature test macro for
685 P0040R3.
686 * doc/html/*: Regenerate.
687
683f9728 688 * include/experimental/any (__any_caster): Use RTTI if comparing
689 addresses fails, to support non-unique addresses in shared libraries.
690 * include/std/any (__any_caster): Likewise.
691
1db1e5cc 692 PR libstdc++/90220
693 * include/experimental/any (__any_caster): Constrain to only be
694 callable for object types. Use remove_cv_t instead of decay_t.
695 If the type decays or isn't copy constructible, compare the manager
696 function to a dummy specialization.
697 (__any_caster): Add overload constrained for non-object types.
698 (any::_Manager_internal<_Op>): Add dummy specialization.
699 * testsuite/experimental/any/misc/any_cast.cc: Test function types
700 and array types.
701
0fd64d4b 7022019-05-22 Jonathan Wakely <jwakely@redhat.com>
703
f92c002f 704 PR libstdc++/90557
705 * src/c++17/fs_path.cc (path::_List::operator=(const _List&)): Fix
706 reversed arguments to uninitialized_copy_n.
707 * testsuite/27_io/filesystem/path/assign/copy.cc: Check that source
708 is unchanged by copy assignment.
709 * testsuite/util/testsuite_fs.h (compare_paths): Use std::equal to
710 compare path components.
711
0fd64d4b 712 PR libstdc++/77691
713 * include/experimental/memory_resource: Add system header pragma and
714 do not define anything unless compiled as C++14 or later.
715 (__resource_adaptor_common::__guaranteed_alignment): Remove.
716 (__resource_adaptor_imp::do_allocate): If the requested alignment
717 is a fundamental alignment then either allocate directly from _M_alloc
718 or call the new _M_allocate function.
719 (__resource_adaptor_imp::do_deallocate): Likewise for deallocation.
720 (__resource_adaptor_imp::_M_allocate): New function that uses a copy
721 of the allocator rebound to a POD type with the specified alignment.
722 (__resource_adaptor_imp::_M_deallocate): Likewise for deallocation.
723 * testsuite/experimental/memory_resource/new_delete_resource.cc:
724 Adjust expected allocation sizes.
725 * testsuite/experimental/memory_resource/resource_adaptor.cc: Remove
726 xfail for Solaris x86.
727
71835cce 7282019-05-21 Thomas Rodgers <trodgers@redhat.com>
729
730 LWG 3062 - Unnecessary decay_t in is_execution_policy_v
731 * include/pstl/execution_defs.h (__enable_if_execution_policy):
732 Use std::__remove_cvref_t when building with GCC.
733
28ceb89c 7342019-05-21 Jonathan Wakely <jwakely@redhat.com>
735
f6baa5a2 736 PR libstdc++/90252
737 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
738 Use "additional_flags" to pass -ltbb to v3_target_compile command.
739 Use check_v3_target_prop_cached to cache the result of the test.
740
28ceb89c 741 * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants.
742
4573584f 7432019-05-20 Thomas Rodgers <trodgers@redhat.com>
744
745 PR libstdc++/90252
746 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
747 Changed v3_target_compile check from preprocess to executable.
748 Added "-ltbb" to v3_target_compile flags.
749
c40bd82f 7502019-05-20 Thomas Rodgers <trodgers@redhat.com>
751
752 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
753 Add check for Thread Building Blocks 2018 or later.
754
4b6650e5 7552019-05-20 Jonathan Wakely <jwakely@redhat.com>
756
757 * testsuite/experimental/names.cc: Only include Networking TS headers
758 on targets with the necessary Gthreads support.
759
31d01c8b 7602019-05-20 Marek Polacek <polacek@redhat.com>
761
762 CWG 2094 - volatile scalars are trivially copyable.
763 PR c++/85679
764 * testsuite/20_util/is_trivially_copyable/value.cc: Change the expected
765 result for volatile int.
766
48328bff 7672019-05-20 Jonathan Wakely <jwakely@redhat.com>
768
120050c3 769 * testsuite/17_intro/names.cc: Do not check 'ptr' on Solaris.
770 * testsuite/experimental/names.cc: Include <experimental/filesystem>
771 conditionally.
772
48328bff 773 PR c++/90532 Ensure __is_constructible(T[]) is false
774 * include/std/type_traits (__do_is_default_constructible_impl)
775 (__is_default_constructible_atom, __is_default_constructible_safe):
776 Remove.
777 (is_default_constructible): Use is_constructible.
778 * testsuite/20_util/is_constructible/value.cc: Check int[] case.
779 * testsuite/20_util/is_default_constructible/value.cc: Likewise.
780 * testsuite/20_util/is_trivially_constructible/value.cc: Likewise.
781 * testsuite/20_util/is_trivially_default_constructible/value.cc:
782 Likewise.
783
d07edb65 7842019-05-20 Pádraig Brady <pbrady@fb.com>
785
786 * libstdc++-v3/include/ext/new_allocator.h (deallocate): Pass the size
787 to the deallocator with -fsized-deallocation.
788
ca32b3df 7892019-05-20 Jonathan Wakely <jwakely@redhat.com>
790
791 * testsuite/experimental/memory_resource/new_delete_resource.cc: Fix
792 test by passing correct alignment to deallocate function.
793
83454be6 7942019-05-18 Jonathan Wakely <jwakely@redhat.com>
795
796 PR libstdc++/90520
797 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
798 Raise exception if unique_ptr tuple member has unknown structure.
799 * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker.__call__):
800 Adjust worker to support new __uniq_ptr_data base class. Do not
801 assume field called _M_head_impl is the first tuple element.
802
18788b25 8032019-05-17 François Dumont <fdumont@gcc.gnu.org>
804
805 * include/bits/stl_deque.h
806 (_Deque_iterator<>::__ptr_to): Remove, use std::__ptr_rebind.
807 (_Deque_base(_Deque_base&&, const allocator_type&)): New.
808 (_Deque_base::_Deque_impl_data): New.
809 (_Deque_base::_Deque_impl): Inherit latter.
810 (_Deque_base::_Deque_impl::_M_swap_data): Move...
811 (_Deque_base::_Deque_impl_data::_M_swap_data): ... here.
812 (_Deque_base::_Deque_impl()): Add noexcept qualification.
813 (_Deque_base::_Deque_impl(_Deque_impl&&, _Tp_alloc_type&&)): New.
814 (_Deque_base::_Deque_impl::_M_get_Tp_allocator()): Remove static_cast.
815 (deque<>::deque()): Default.
816 (deque<>::deque(deque&&)): Default.
817 (deque<>::deque(deque&&, const allocator_type&, false_type)): New.
818 (deque<>::deque(deque&&, const allocator_type&, true_type)): New.
819 (deque<>::deque(deque&&, const allocator_type&)): Delegate to latters.
820 (deque<>::deque<_It>(_It, _It, const allocator_type&)): Use
821 _M_range_initialize.
822 (deque<>::assign<_It>(_It, _It)): Use _M_assign_aux.
823 (deque<>::resize(size_type, const value_type&)): Share a single
824 implementation.
825 (deque<>::insert<_It>(const_iterator, _It, _It)): Use
826 _M_range_insert_aux.
827 [__cplusplus >= 201103L](_M_initialize_dispatch): Remove.
828 [__cplusplus >= 201103L](_M_assign_dispatch): Remove.
829 [__cplusplus >= 201103L](_M_insert_dispatch): Remove.
830 * testsuite/23_containers/deque/allocator/default_init.cc: New.
831
f02e0f08 8322019-05-17 Jonathan Wakely <jwakely@redhat.com>
833
9bf46b60 834 PR libstdc++/90246
835 * include/std/variant (holds_alternative, get, get_if): Improve
836 static assertion messages.
837 (bad_variant_access::bad_variant_access()): Change default message.
838 (__throw_bad_variant_access(bool)): New overload.
839 (get): Use new overload.
840 (visit, visit<R>): Improve exception message.
841
ac93735b 842 * testsuite/20_util/variant/compile.cc: Fix narrowing test for ILP32
843 targets. Add more cases from P0608R3.
844 * testsuite/20_util/variant/run.cc: Add more cases from P0608R3.
845
8d58624a 846 * include/bits/random.h (seed_seq::param): Fix non-reserved name.
847 * include/experimental/type_traits (is_detected_exact)
848 (is_detected_exact_v): Likewise.
849 * include/pstl/execution_defs.h (is_execution_policy)
850 (is_execution_policy_v, __enable_if_execution_policy): Likewise.
851 * include/pstl/execution_impl.h (__policy_traits): Likewise.
852 * testsuite/17_intro/names.cc: Check for more non-reserved names.
853 * testsuite/experimental/names.cc: New test.
854
5d3695d0 855 PR libstdc++/85965
856 * include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static
857 assertions from the destructor.
858 * include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code):
859 Move static_assert for hash function to here.
860 (_Hash_table_base::_M_equals): Move static_assert for equality
861 predicate to here.
862 * include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)):
863 Remove.
864 (_Rb_tree::_S_key(_Const_Link_type)): Move assertions here. Access
865 the value directly instead of calling _S_value.
866 (_Rb_tree::_S_value(_Const_Base_ptr)): Remove.
867 (_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to
868 _S_key(_Const_Link_type).
869 * testsuite/23_containers/set/85965.cc: Check construction,
870 destruction, assignment and size() do not trigger the assertions.
871 * testsuite/23_containers/unordered_set/85965.cc: Likewise.
872 * testsuite/23_containers/map/48101_neg.cc: Call find and adjust
873 expected errors.
874 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
875 * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
876 * testsuite/23_containers/set/48101_neg.cc: Likewise.
877 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
878 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
879 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
880 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
881
2e431291 882 * include/bits/invoke.h [__cplusplus < 201703L] (__invoke_r<void>):
883 Use _GLIBCXX14_CONSTEXPR because void functions cannot be constexpr
884 in C++11.
885
f02e0f08 886 * doc/xml/manual/status_cxx2020.xml: Update P0608R3, P0777R1, and
887 P1165R1 entries.
888 * doc/html/*: Regenerate.
889 * include/std/tuple (make_from_tuple): Use remove_reference_t instead
890 of decay_t (P0777R1).
891
0cde8d2e 8922019-05-17 François Dumont <fdumont@gcc.gnu.org>
893
894 Move from state of allocators (LWG2593)
895 * include/bits/stl_deque.h
896 (_Deque_base(_Deque_base&&, false_type)): Remove.
897 (_Deque_base(_Deque_base&&, true_type)): Remove.
898 (_Deque_base(_Deque_base&&)): Adapt.
899 (_Deque_base::_M_move_impl()): Remove.
900 * testsuite/util/testsuite_allocator.h
901 (propagating_allocator(propagating_allocator&&)): Preserve move from
902 state.
903 * testsuite/23_containers/deque/allocator/move_assign.cc (test02):
904 Adapt.
905 * testsuite/23_containers/forward_list/allocator/move_assign.cc (test02):
906 Adapt.
907 * testsuite/23_containers/list/allocator/move_assign.cc (test02): Adapt.
908 * testsuite/23_containers/map/allocator/move_assign.cc (test02): Adapt.
909 * testsuite/23_containers/multimap/allocator/move_assign.cc (test02):
910 Adapt.
911 * testsuite/23_containers/multiset/allocator/move_assign.cc (test02):
912 Adapt.
913 * testsuite/23_containers/set/allocator/move_assign.cc (test02): Adapt.
914 * testsuite/23_containers/unordered_map/allocator/move_assign.cc
915 (test02): Adapt.
916 * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
917 (test02): Adapt.
918 * testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
919 (test02): Adapt.
920 * testsuite/23_containers/unordered_set/allocator/move_assign.cc
921 (test02): Adapt.
922 * testsuite/23_containers/vector/allocator/move_assign.cc (test02):
923 Adapt.
924 * testsuite/23_containers/vector/bool/allocator/move_assign.cc (test02):
925 Adapt.
926 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc
927 (test02): Adapt.
928 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
929 (test02): Adapt.
930
68605c77 9312019-05-16 Jonathan Wakely <jwakely@redhat.com>
932
4a0707ea 933 * src/c++17/fs_ops.cc (absolute(const path&, error_code&))
934 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
935
a8a0d164 936 * include/std/variant (__overload_set): Remove.
937 (_Arr): New helper.
938 (_Build_FUN): New class template to define a single FUN overload,
939 with specializations to prevent unwanted conversions, as per P0608R3.
940 (_Build_FUNs): New class template to build an overload set of FUN.
941 (_FUN_type): New alias template to perform overload resolution.
942 (__accepted_type): Use integer_constant base for failure case. Use
943 _FUN_type for successful case.
944 (variant::__accepted_index): Use _Tp instead of _Tp&&.
945 (variant::variant(_Tp&&)): Likewise.
946 (variant::operator=(_Tp&&)): Likewise.
947
facad3f4 948 * include/std/variant (_Variant_storage<false, _Types...>::_M_reset):
949 Replace raw visitation with a runtime check for the valueless state
950 and a non-raw visitor.
951 (_Variant_storage<false, _Types...>::_M_reset_impl): Remove.
952 (variant::index()): Remove branch.
953 (variant::swap(variant&)): Use valueless_by_exception() instead of
954 comparing the index to variant_npos, and add likelihood attribute.
955
47376ba0 956 * include/bits/hashtable_policy.h (_Equal_helper): Remove.
957 (_Hashtable_base::_Equal_hash_code): Define new class template.
958 (_Hashtable_base::_M_equals): Use _Equal_hash_code instead of
959 _Equal_helper.
960
81262974 961 * include/bits/hashtable_policy.h (_Hashtable_ebo_helper::_S_get):
962 Replace with _M_get non-static member function.
963 (_Hashtable_ebo_helper::_S_cget): Replace with _M_cget non-static
964 member function.
965 (_Hash_code_base, _Local_iterator_base, _Hashtable_base):
966 (_Hashtable_alloc): Adjust to use non-static members of EBO helper.
967
68605c77 968 * include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
969 _S_get accessors for members in EBO helpers.
970 (_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
971 (_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
972 overloads.
973 (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
974 helpers.
975 (_Hashtable_base::_M_eq()): Remove non-const overload.
976
970ec9ab 9772019-05-15 Jonathan Wakely <jwakely@redhat.com>
978
979 * include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
980
54f34abb 9812019-05-14 Jonathan Wakely <jwakely@redhat.com>
982
983 * testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
984 Fix return value.
985
0fd03648 9862019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
987
988 * config/os/solaris/solaris2.10: Move to ...
989 * config/os/solaris: ... this.
990 * configure.host (os_include_dir): Adapt.
991 (abi_baseline_pair): Remove Solaris 10 handling.
992 * config/abi/post/i386-solaris2.10: Remove.
993 * config/abi/post/sparc-solaris2.10: Remove.
994 * config/abi/post/i386-solaris2.11: Rename to ...
995 * config/abi/post/i386-solaris: ... this.
996 * config/abi/post/sparc-solaris2.11: Rename to ...
997 * config/abi/post/sparc-solaris: ... this.
998
999 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
1000 workaround.
1001
1002 * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
1003 xfail.
1004
f03f26fa 10052019-05-14 Jonathan Wakely <jwakely@redhat.com>
1006
1007 * include/std/variant (__visit_with_index): Remove typedef.
1008 (__deduce_visit_result): New tag type.
1009 (__raw_visit, __raw_idx_visit): New helper functions for "raw"
1010 visitation of possibly-valueless variants, forwarding to __do_visit
1011 with the relevant tag type.
1012 (_Variant_storage<false, _Types...>::_M_reset_impl): Use __raw_visit
1013 and make lambda return void.
1014 (__variant_construct): Likewise.
1015 (_Copy_assign_base::operator=, _Move_assign_base::operator=): Use
1016 __raw_idx_visit and make lambda return void.
1017 (_Multi_array::__untag_result): Add metafunction to check the function
1018 pointer type for a tag type that dictates the kind of visitation.
1019 (_Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>):
1020 Use decltype(auto) instead of tagged function pointer type.
1021 (__gen_vtable_impl): Remove bool non-type parameter and unused
1022 _Variant_tuple parameter.
1023 (__gen_vtable_impl::__visit_invoke_impl): Remove.
1024 (__gen_vtable_impl::__do_visit_invoke): Remove.
1025 (__gen_vtable_impl::__do_visit_invoke_r): Remove.
1026 (__gen_vtable_impl::__visit_invoke): Use if-constexpr and __invoke_r
1027 for the visit<R> case, rather than dispatching to separate functions.
1028 (_VARIANT_RELATION_FUNCTION_TEMPLATE): Use __raw_idx_visit and make
1029 lambda return void.
1030 (variant::swap): Likewise.
1031 (__do_visit): Replace two non-type template parameters with a single
1032 type parameter, so that the caller must specify the visitor's return
1033 type (or one of the tag types).
1034 (visit): Deduce a return type from the visitor and use the
1035 __deduce_visit_result tag to enforce that all overloads return the
1036 same type.
1037 (visit<R>): Call __do_visit<R> with explicit result type.
1038 (__variant_hash_call_base_impl::operator()): Use __raw_visit and make
1039 lambda return void.
1040
b8dcd41e 10412019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
1042
1043 nonesuch is insufficiently useless (lwg2996)
1044 * include/std/type_traits (struct __nonesuch): Added private base
1045 class to make __nonesuch not an aggregate and removed deleted default
1046 constructor.
1047 * include/bits/stl_pair.h (struct __nonesuch_no_braces): Removed.
1048 (operator=(const pair&)): Use __nonesuch instead of
1049 __nonesuch_no_braces.
1050 (operator=(pair&&)): Likewise
1051 * include/std/tuple (operator=(const tuple&)): Use __nonesuch instead
1052 of __nonesuch_no_braces.
1053 (operator=(tuple&&)): Likewise
1054 * include/experimental/type_traits (struct nonesuch): Added private
1055 base class to make nonesuch not an aggregate and removed deleted
1056 default constructor.
1057 * testsuite/20_util/nonesuch/nonesuch.cc: New.
1058 * testsuite/experimental/type_traits/nonesuch.cc: New.
1059
e0bcd31d 10602019-05-14 Jonathan Wakely <jwakely@redhat.com>
1061
3ff2b640 1062 * include/bits/std_function.h (_Simple_type_wrapper): Remove.
1063 (_Function_handler): Remove partial specializations for void return
1064 types and pointers to member.
1065 (_Function_handler::_M_manager): Adapt to removal of
1066 _Simple_type_wrapper.
1067 (_Function_handler::_M_invoke): Use __invoke_r instead of __invoke.
1068 * include/std/functional (_Bind_result::__enable_if_void)
1069 (_Bind_result::__disable_if_void): Remove sfinae helpers.
1070 (_Bind_result::__call): Use __invoke_r and remove overloads for void
1071 return types.
1072 * include/std/future (__future_base::_Task_state::_M_run)
1073 (__future_base::_Task_state::_M_run_delayed): Use __invoke_r and
1074 change return type of lambda expressions.
1075
a858e2a4 1076 * include/bits/invoke.h (__invoke_r): Define new function implementing
1077 the INVOKE<R> pseudo-function.
1078 * testsuite/20_util/function_objects/invoke/1.cc: Add more tests.
1079 * testsuite/20_util/function_objects/invoke/2.cc: New test.
1080
2cfc6a76 1081 * include/std/type_traits (__is_nt_convertible_helper): Define it
1082 unconditionally, not only for C++20.
1083 (__is_nothrow_convertible): Define internal trait for use in C++11.
1084 (__is_nt_invocable_impl: Fix by using __is_nothrow_convertible.
1085 (is_invocable_r_v, is_nothrow_invocable_r_v): Add missing parameter.
1086 * testsuite/20_util/is_nothrow_convertible/value_ext.cc: New test.
1087 * testsuite/20_util/is_nothrow_convertible/value.cc: Check with type
1088 that has nothrow explicit conversion but potentially-throwing implicit
1089 conversion.
1090 * testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
1091 * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix helper
1092 function to only consider implicit conversions.
1093 * testsuite/20_util/tuple/cons/noexcept_specs.cc: Add comment.
1094
e0d65374 1095 * include/std/iterator: Include <iosfwd> instead of <istream> and
1096 <ostream>.
1097
4a182e12 1098 * include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
1099 Remove unused, non-standard function.
1100
d4a9b293 1101 * include/bits/regex.h (match_results::max_size()): Adjust return
1102 value to account for prefix/suffix/unmatched subs.
1103 (match_results::_M_resize(unsigned int)): Use _Base_type::assign to
1104 reset the contained sub matches.
1105 (match_results::_M_establish_failed_match(_Bi_iter)): Add new member
1106 function to set result state following a failed match.
1107 * include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
1108 sub_match states after _M_resize. Use _M_establish_failed_match.
1109
e0bcd31d 1110 PR libstdc++/69724
1111 * include/std/thread (thread::_State_impl, thread::_S_make_state):
1112 Replace single _Callable parameter with variadic _Args pack, to
1113 forward them directly to the tuple of decayed copies.
1114 * testsuite/30_threads/thread/cons/69724.cc: New test.
1115
872d7a1f 11162019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
1117
1118 Inconsistency wrt Allocators in basic_string assignment (LWG2579)
1119 * include/bits/basic_string.h: (operator=(const basic_string&):
1120 Move allocator decision to assign.
1121 (assign(const basic_string&)): Move allocator decision here.
1122 * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
1123 Add tests.
1124 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
1125 Add tests.
1126
67dff8a4 11272019-05-14 Jonathan Wakely <jwakely@redhat.com>
1128
155856f9 1129 * testsuite/util/testsuite_allocator.h (memory_resource)
1130 (default_resource_mgr): Fix indentation.
1131
94e98eda 1132 * testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
1133 Use operator-> to access raw pointer member.
1134 * testsuite/23_containers/vector/59829.cc: Likewise.
1135 * testsuite/23_containers/vector/bool/80893.cc: Likewise.
1136 * testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
1137 * testsuite/util/testsuite_allocator.h (NullablePointer): New utility
1138 for tests.
1139 (PointerBase, PointerBase_void): Derive from NullablePointer and use
1140 its constructors and equality operators. Change converting
1141 constructors to use operator-> to access private member of the other
1142 pointer type.
1143 (PointerBase_void::operator->()): Add, for access to private member.
1144 (operator-(PointerBase, PointerBase)): Change to hidden friend.
1145 (operator==(PointerBase, PointerBase)): Remove.
1146 (operator!=(PointerBase, PointerBase)): Remove.
1147
8ac285f1 1148 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
1149 not assume field called _M_head_impl is the first tuple element.
1150 * testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
1151 implementation more accurate.
1152 * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
1153 empty pointer type and non-empty deleter.
1154
67dff8a4 1155 LWG 2899 - Make is_move_constructible correct for unique_ptr
1156 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
1157 move assignment operator.
1158 (__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
1159 (__uniq_ptr_data): New class template with conditionally deleted
1160 special members.
1161 (unique_ptr, unique_ptr<T[], D>): Change type of data member from
1162 __uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
1163 constructor and move assignment operator as defaulted.
1164 (unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
1165 __uniq_ptr_impl::release().
1166 (unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
1167 to __uniq_ptr_impl::reset(pointer).
1168 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
1169 Check for new __uniq_ptr_data type.
1170 * testsuite/20_util/unique_ptr/dr2899.cc: New test.
1171
6818ab51 11722019-05-13 Jonathan Wakely <jwakely@redhat.com>
1173
fecfaafd 1174 PR libstdc++/90454.cc path construction from void*
1175 * include/bits/fs_path.h (path::_Path): Use remove_pointer so that
1176 pointers to void are rejected as well as void.
1177 * include/experimental/bits/fs_path.h (path::_Path): Likewise.
1178 * testsuite/27_io/filesystem/path/construct/80762.cc: Also check
1179 pointers to void.
1180 * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
1181
6818ab51 1182 * doc/xml/manual/policy_data_structures.xml: Comment out stray
1183 <remark> elements. Fix formatting of bibliography references.
1184
8967657e 11852019-05-13 Edward Smith-Rowland <3dw4rd@verizon.net>
1186
1187 * doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.
1188
8dd55415 11892019-05-13 Jonathan Wakely <jwakely@redhat.com>
ca8ead92 1190
b6cabd65 1191 Remove Profile Mode, deprecated since 7.1.0
1192 * doc/Makefile.am: Remove XML file for profile mode docs.
1193 * doc/Makefile.in: Regenerate.
1194 * doc/xml/authors.xml: Remove authors of profile mode docs.
1195 * doc/xml/manual/appendix_contributing.xml: Remove mention of profile
1196 mode.
1197 * doc/xml/manual/debug.xml: Likewise.
1198 * doc/xml/manual/evolution.xml: Document removal of profile mode.
1199 * doc/xml/manual/profile_mode.xml: Remove profile mode docs.
1200 * doc/xml/manual/spine.xml: Remove profile mode author credit.
1201 * doc/xml/manual/test.xml: Remove docs for dg-require-profile-mode
1202 directive.
1203 * doc/xml/manual/using.xml: Remove docs for profile mode headers and
1204 macro.
1205 * doc/html/*: Regenerate.
1206 * include/Makefile.am: Remove profile mode headers.
1207 * include/Makefile.in: Regenerate.
1208 * include/bits/c++config (std::__profile): Remove namespace.
1209 [_GLIBCXX_PROFILE]: Remove checks for macro.
1210 * include/profile/array: Remove.
1211 * include/profile/base.h: Remove.
1212 * include/profile/bitset: Remove.
1213 * include/profile/deque: Remove.
1214 * include/profile/forward_list: Remove.
1215 * include/profile/impl/profiler.h: Remove.
1216 * include/profile/impl/profiler_algos.h: Remove.
1217 * include/profile/impl/profiler_container_size.h: Remove.
1218 * include/profile/impl/profiler_hash_func.h: Remove.
1219 * include/profile/impl/profiler_hashtable_size.h: Remove.
1220 * include/profile/impl/profiler_list_to_slist.h: Remove.
1221 * include/profile/impl/profiler_list_to_vector.h: Remove.
1222 * include/profile/impl/profiler_map_to_unordered_map.h: Remove.
1223 * include/profile/impl/profiler_node.h: Remove.
1224 * include/profile/impl/profiler_state.h: Remove.
1225 * include/profile/impl/profiler_trace.h: Remove.
1226 * include/profile/impl/profiler_vector_size.h: Remove.
1227 * include/profile/impl/profiler_vector_to_list.h: Remove.
1228 * include/profile/iterator_tracker.h: Remove.
1229 * include/profile/list: Remove.
1230 * include/profile/map: Remove.
1231 * include/profile/map.h: Remove.
1232 * include/profile/multimap.h: Remove.
1233 * include/profile/multiset.h: Remove.
1234 * include/profile/ordered_base.h: Remove.
1235 * include/profile/set: Remove.
1236 * include/profile/set.h: Remove.
1237 * include/profile/unordered_base.h: Remove.
1238 * include/profile/unordered_map: Remove.
1239 * include/profile/unordered_set: Remove.
1240 * include/profile/vector: Remove.
1241 * scripts/run_doxygen: Do not process profile mode headers.
1242 * testsuite/23_containers/array/element_access/60497.cc: Don't use
1243 profile mode type.
1244 * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
1245 Remove dg-skip-if for profile mode.
1246 * testsuite/23_containers/forward_list/capacity/1.cc: Remove
1247 preprocessor check for profile mode.
1248 * testsuite/23_containers/list/capacity/29134.cc: Likewise.
1249 * testsuite/23_containers/map/modifiers/extract.cc: Remove dg-skip-if
1250 for profile mode.
1251 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
1252 Likewise.
1253 * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
1254 * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
1255 * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
1256 * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
1257 * testsuite/23_containers/unordered_map/modifiers/extract.cc:
1258 Likewise.
1259 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
1260 Likewise.
1261 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
1262 Likewise.
1263 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
1264 Likewise.
1265 * testsuite/23_containers/vector/bool/capacity/29134.cc: Remove
1266 preprocessor check for profile mode.
1267 * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
1268 Likewise.
1269 * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
1270 Remove dg-skip-if for profile mode.
1271 * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
1272 * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
1273 * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
1274 * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
1275 * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
1276 * testsuite/Makefile.am: Remove profile_flags variable and
1277 * testsuite/Makefile.am: Remove profile_flags variable and
1278 check-profile target.
1279 * testsuite/Makefile.in: Regenerate.
1280 * testsuite/ext/profile/all.cc: Remove.
1281 * testsuite/ext/profile/mutex_extensions_neg.cc: Remove.
1282 * testsuite/ext/profile/profiler_algos.cc: Remove.
1283 * testsuite/ext/profile/replace_new.cc: Remove.
1284 * testsuite/ext/throw_allocator/deallocate_global.cc: Remove
1285 preprocessor check for profile mode.
1286 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
1287 * testsuite/lib/libstdc++.exp (check_v3_target_profile_mode): Remove.
1288 (check_v3_target_normal_mode): Do not check for profile mode macro.
1289 * testsuite/libstdc++-prettyprinters/80276.cc: Remove dg-skip-if for
1290 profile mode.
1291 * testsuite/libstdc++-prettyprinters/compat.cc: Likewise.
1292 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
1293 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
1294 * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
1295 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
1296 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
1297 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
1298 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1299 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
1300 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
1301
ca8ead92 1302 Remove array_allocator extension, deprecated since 4.9.0
1303 * doc/xml/manual/allocator.xml: Remove documentation for
1304 array_allocator.
1305 * doc/xml/manual/evolution.xml: Document array_allocator removal.
1306 * doc/xml/manual/using.xml: Remove header from documentation.
1307 * include/Makefile.am: Remove <ext/array_allocator.h> header.
1308 * include/Makefile.in: Regenerate.
1309 * include/ext/array_allocator.h: Remove.
1310 * include/precompiled/extc++.h: Do not include removed header.
1311 * testsuite/ext/array_allocator/1.cc: Remove.
1312 * testsuite/ext/array_allocator/2.cc: Remove.
1313 * testsuite/ext/array_allocator/26875.cc: Remove.
1314 * testsuite/ext/array_allocator/3.cc: Remove.
1315 * testsuite/ext/array_allocator/check_deallocate_null.cc: Remove.
1316 * testsuite/ext/array_allocator/check_delete.cc: Remove.
1317 * testsuite/ext/array_allocator/check_new.cc: Remove.
1318 * testsuite/ext/array_allocator/variadic_construct.cc: Remove.
1319 * testsuite/ext/headers.cc: Do not include removed header.
1320
64b2700c 13212019-05-11 François Dumont <fdumont@gcc.gnu.org>
1322
1323 * include/bits/stl_bvector.h
1324 (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1325 Make hidden friend.
1326 (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1327 Likewise.
1328 (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1329 Likewise.
1330 (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1331 Likewise.
1332 (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1333 Likewise.
1334 (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1335 Likewise.
1336 (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1337 Likewise.
1338 (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
1339 copy elision.
1340 (_Bit_iterator::operator-(difference_type)): Likewise.
1341 (operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
1342 (_Bit_const_iterator::operator+(difference_type)): Likewise and allow
1343 NRVO copy elision.
1344 (_Bit_const_iterator::operator-(difference_type)): Likewise.
1345 (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
1346
de3f1d9a 13472019-05-10 Jonathan Wakely <jwakely@redhat.com>
1348
eb1be9e7 1349 PR libstdc++/81266
1350 * testsuite/util/thread/all.h: Do not use remove_pointer for
1351 std::thread::native_handle_type.
1352
5c6334a5 1353 PR libstdc++/90397
1354 * include/std/variant (_Variant_storage<false, Types...>::_M_storage())
1355 (_Variant_storage<true, Types...>::_M_reset()))
1356 (_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
1357 (__get_storage): Likewise.
1358 (variant): Add noexcept to friend declarations for __get and
1359 __get_storage.
1360
3e5c91bd 1361 PR libstdc++/90388
1362 * include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
1363 Use _Require for constraints.
1364 (operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
1365 per the standard.
1366 (__uniq_ptr_hash): New base class with conditionally-disabled call
1367 operator.
1368 (hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
1369 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
1370 * testsuite/20_util/unique_ptr/hash/90388.cc: New test.
1371
de3f1d9a 1372 * include/bits/shared_ptr.h: Improve docs.
1373 * include/bits/shared_ptr_base.h: Likewise.
1374 * include/bits/stl_uninitialized.h: Likewise.
1375 * include/bits/unique_ptr.h: Likewise.
1376 * libsupc++/new: Likewise.
1377
d084c5ba 13782019-05-09 François Dumont <fdumont@gcc.gnu.org>
1379
1380 * include/bits/stl_deque.h
1381 (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1382 Make hidden friend.
1383 (operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1384 Likewise.
1385 (operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1386 Likewise.
1387 (operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1388 Likewise.
1389 (operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1390 Likewise.
1391 (operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1392 Likewise.
1393 (_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
1394 copy elision.
1395 (_Deque_iterator<>::operator-(difference_type)): Likewise.
1396
0f61cb49 13972019-05-08 François Dumont <fdumont@gcc.gnu.org>
1398
1399 PR libstdc++/90277
1400 * testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
1401 (test01): Reserve for number of insertions to avoid rehash during test.
1402 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
1403 (test01): Likewise.
1404 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
1405 (test01): Likewise.
1406 (test02): Likewise.
1407 (test03): Likewise.
1408
c800ee48 14092019-05-08 Jonathan Wakely <jwakely@redhat.com>
1410
1411 * include/experimental/bits/fs_path.h: Improve docs.
1412 * include/experimental/bits/net.h: Fix wrong header name in comment.
1413 Do not document implementation details.
1414 * include/experimental/netfwd: Fix doxygen grouping.
1415
b103d23d 14162019-05-07 Jonathan Wakely <jwakely@redhat.com>
1417
aa371af3 1418 * include/bits/stl_pair.h: Improve docs.
1419 * include/std/tuple: Likewise.
1420
dceea60f 1421 * doc/doxygen/doxygroups.cc (std::literals): Add documentation for
1422 inline namespace.
1423 * include/std/chrono: Improve docs.
1424 * include/std/ratio: Do not document implementation details.
1425 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
1426 line numbers.
1427 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
1428
a9ae69b5 1429 PR libstdc++/89102
1430 * doc/xml/manual/intro.xml: Document DR 2408 and 2465 changes.
1431 * include/std/chrono (__duration_common_type_wrapper): Replace with ...
1432 (__duration_common_type): New helper.
1433 (common_type<chrono::duration<R1, P2>, chrono::duration<R2, P2>>): Use
1434 __duration_common_type.
1435 (__timepoint_common_type_wrapper): Replace with ...
1436 (__timepoint_common_type): New helper.
1437 (common_type<chrono::time_point<C, D2>, chrono::time_point<C, D2>>):
1438 Use __time_point_common_type.
1439 * include/std/type_traits (common_type<>): Define, as per LWG 2408.
1440 (__common_type_impl): If either argument is transformed by decay,
1441 use the common_type of the decayed types.
1442 (__common_type_impl<_Tp, _Up, _Tp, _Up>): If the types are already
1443 decayed, use __do_common_type_impl to get the common_type.
1444 (common_type<_Tp>): Use common_type<_Tp, _Tp>.
1445 (__do_member_type_wrapper, __member_type_wrapper)
1446 (__expanded_common_type_wrapper): Remove.
1447 (__common_type_pack, __common_type_fold): New helpers.
1448 (common_type<_Tp, _Up, _Vp...>): Use new helpers instead of
1449 __member_type_wrapper and __expanded_common_type_wrapper.
1450 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
1451 Test zero-length template argument list.
1452 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
1453 Test single argument cases and argument types that should decay.
1454 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
1455 Adjust expected error.
1456 * testsuite/20_util/duration/literals/range_neg.cc: Use zero for
1457 dg-error lineno.
1458 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1459 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1460 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1461
b103d23d 1462 * doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
1463
69be6ea5 14642019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
1465
1466 Make allocator propagation more consistent for
1467 operator+(basic_string) (P1165R1)
1468 * include/bits/basic_string.h
1469 (operator+(basic_string&&, basic_string&&): Changed resulting
1470 allocator to always be the one from the first parameter.
1471 * include/bits/basic_string.tcc
1472 (operator+(const _CharT*, const basic_string&)): Changed
1473 resulting allocator to be SOCCC on the second parameter's allocator.
1474 (operator+(_CharT, const basic_string&)): Likewise.
1475 * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
1476 New.
1477 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
1478 New.
1479
845d0fd6 14802019-05-07 Jonathan Wakely <jwakely@redhat.com>
1481
29499715 1482 * include/bits/regex.h: Improve docs.
1483 * include/bits/regex.tcc: Do not document implementation details.
1484
845d0fd6 1485 * testsuite/19_diagnostics/error_code/hash.cc: New test.
1486
3eec8b67 14872019-05-06 François Dumont <fdumont@gcc.gnu.org>
1488
1489 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
1490 Add type printer for container types in std::__debug namespace.
1491 * testsuite/lib/gdb-test.exp (whatis-regexp-test): New.
1492 (gdb-tests): Use distinct parameters for the type of test and use of
1493 regex.
1494 (gdb-test): Check for regex test even if 'whatis' test.
1495 * testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
1496 mode.
1497 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
1498 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
1499 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
1500 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
1501 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1502 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
1503 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
1504
80175534 15052019-05-04 Jonathan Wakely <jwakely@redhat.com>
1506
2d527eb0 1507 * include/std/system_error (error_category): Fix comment.
1508
84eda927 1509 PR libstdc++/90299
1510 * src/c++17/fs_ops.cc (absolute(const path&)): Report an error if the
1511 argument is an empty path.
1512 (absolute(const path&, error_code&)): Use invalid_argument as error
1513 code instead of no_such_file_or_directory.
1514 * testsuite/27_io/filesystem/operations/absolute.cc: Check handling
1515 of non-existent paths and empty paths with both overloads of absolute.
1516
98a3d630 1517 * include/std/system_error (error_category, error_code)
1518 (error_condition): Improve docs.
1519 * libsupc++/exception: Add missing @addtogroup Doxygen command.
1520 * libsupc++/exception_ptr.h (exception_ptr): Link equality operators
1521 to class documentation. Suppress documentation for implementation
1522 details.
1523 * libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
1524 Suppress documentation for implementation details.
1525
80175534 1526 * include/std/system_error (error_code): Remove friend declaration
1527 for hash<error_code>.
1528 (hash<error_code>::operator()): Use public member functions to access
1529 value and category.
1530 (hash<error_condition>::operator()): Use address of category, not
1531 its object representation.
1532 * src/c++11/compatibility-c++0x.cc (hash<error_code>::operator()):
1533 Use public member functions to access value and category.
1534 * testsuite/19_diagnostics/error_condition/hash.cc: New test.
1535
476bdccf 15362019-05-04 François Dumont <fdumont@gcc.gnu.org>
1537
1538 * include/bits/hashtable.h (_Hashtable<>::rehash): Review comment.
1539 * include/bits/hashtable_policy.h
1540 (_Prime_rehash_policy::_M_bkt_for_elements): Use __builtin_ceill.
1541 (_Power2_rehash_policy::_M_bkt_for_elements): Likewise.
1542 (_Power2_rehash_policy::_M_next_bkt): Enforce returning a result not
1543 smaller than input value rather than always greater. Preserve
1544 _M_next_resize if called with 0 input. Use __builtin_floorl.
1545 (_Power2_rehash_policy::_M_need_rehash): Rehash only if number of
1546 elements + number of insertions is greater than _M_next_resize. Start
1547 with 11 buckets if not told otherwise. Use __builtin_floorl.
1548 (_Rehash_base<>::reserve): Use rehash policy _M_bkt_for_elements.
1549 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
1550 Preserve _M_next_resize if called with 0 input. Use __builtin_floorl.
1551 (_Prime_rehash_policy::_M_need_rehash): Start with 11 buckets if not
1552 told otherwise. Use __builtin_floorl.
1553 * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt test
1554 to also validate _Power2_rehash_policy.
1555 * testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
1556 Adapt.
1557
2051f7c0 15582019-05-03 Jonathan Wakely <jwakely@redhat.com>
1559
85015e21 1560 PR libstdc++/61761
1561 * testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
1562 std::copysign.
1563
2051f7c0 1564 PR libstdc++/52119
1565 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
1566 overflow warning with -Wpedantic -Wsystem-headers.
1567
c47265a8 15682019-05-02 Jonathan Wakely <jwakely@redhat.com>
1569
9766cefe 1570 PR libstdc++/90314
1571 * include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Use variadic macro.
1572 * include/bits/move.h (swap): Remove extra parentheses.
1573
6bd15da3 1574 * include/experimental/bits/lfts_config.h: Improve doc markup.
1575 * include/experimental/optional: Improve docs.
1576 (_Has_addressof_mem, _Has_addressof_free, _Has_addressof)
1577 (__constexpr_addressof): Remove.
1578 (optional::operator->()): Use std::__addressof().
1579 * include/std/optional (optional::operator->()): Adjust whitespace.
1580 * testsuite/experimental/optional/constexpr/observers/2.cc: Check
1581 that operator-> is still constexpr with overloaded operator&. Change
1582 to compile-only test.
1583 * testsuite/experimental/optional/constexpr/observers/3.cc: Change to
1584 compile-only test.
1585
f4673ac1 1586 * include/bits/shared_ptr.h: Improve docs.
1587 * include/bits/shared_ptr_atomic.h: Likewise.
1588 * include/bits/unique_ptr.h: Likewise. Adjust whitespace.
1589
c88f1c9d 1590 * include/bits/basic_string.h: Fix iterator/index confusion in
1591 Doxygen comments.
1592 * include/bits/range_access.h: Fix Doxygen warnings.
1593 * include/bits/refwrap.h: Do not document implementation details.
1594 (ref, cref): Group docs with reference_wrapper.
1595 * include/std/fstream: Fix Doxygen markup.
1596 * libsupc++/initializer_list (begin, end): Group docs with
1597 initializer_list.
1598
0276ef36 1599 * doc/doxygen/user.cfg.in: Set MARKDOWN_SUPPORT=YES.
1600
5ba27b7d 1601 * include/bits/unique_lock.h: Fix/improve doxygen markup.
1602 * include/std/mutex: Likewise.
1603 * include/std/shared_mutex: Likewise.
1604
c2046340 1605 * include/bits/fs_dir.h: Fix/improve doxygen markup.
1606 * include/bits/fs_fwd.h: Likewise.
1607 * include/bits/fs_ops.h: Likewise.
1608 * include/bits/fs_path.h: Likewise.
1609 * include/std/filesystem: Likewise.
1610
f73340aa 1611 * include/experimental/bits/net.h: Fix/improve doxygen markup.
1612 * include/experimental/buffer: Likewise.
1613 * include/experimental/executor: Likewise.
1614 * include/experimental/internet: Likewise.
1615 * include/experimental/io_context: Likewise.
1616 * include/experimental/net: Likewise.
1617 * include/experimental/netfwd: Likewise.
1618 * include/experimental/socket: Likewise.
1619 * include/experimental/timer: Likewise.
1620
b87d52bd 1621 * doc/doxygen/doxygroups.cc: Move description of experimental group
1622 here.
1623 * include/experimental/algorithm: Add to libfund-ts doc group.
1624 * include/experimental/any: Likewise. Do not document implementation
1625 details.
1626 * include/experimental/array: Add to libfund-ts doc group.
1627 * include/experimental/bits/lfts_config.h: Define libfund-ts doc group
1628 for Library Fundamentals.
1629 * include/experimental/chrono: Add to libfund-ts doc group.
1630 * include/experimental/deque: Likewise.
1631 * include/experimental/forward_list: Likewise.
1632 * include/experimental/functional: Likewise.
1633 * include/experimental/iterator: Likewise.
1634 * include/experimental/list: Likewise.
1635 * include/experimental/map: Likewise.
1636 * include/experimental/memory: Likewise.
1637 * include/experimental/memory_resource: Likewise. Improve docs.
1638 details.
1639 * include/experimental/numeric: Add to libfund-ts doc group.
1640 * include/experimental/optional: Likewise.
1641 * include/experimental/propagate_const: Likewise.
1642 * include/experimental/random: Likewise.
1643 * include/experimental/ratio: Likewise.
1644 * include/experimental/regex: Likewise.
1645 * include/experimental/set: Likewise.
1646 * include/experimental/source_location: Likewise.
1647 * include/experimental/string: Likewise.
1648 * include/experimental/string_view: Likewise.
1649 * include/experimental/system_error: Likewise.
1650 * include/experimental/tuple: Likewise.
1651 * include/experimental/type_traits: Likewise.
1652 * include/experimental/unordered_map: Likewise.
1653 * include/experimental/unordered_set: Likewise.
1654 * include/experimental/utility: Likewise.
1655 * include/experimental/vector: Likewise.
1656 * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
1657 * testsuite/experimental/array/neg.cc: Adjust dg-error.
1658 * testsuite/experimental/propagate_const/assignment/move_neg.cc:
1659 Likewise.
1660 * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
1661 * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
1662 * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
1663 * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
1664 * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
1665
07894d48 1666 * include/experimental/bits/fs_dir.h: Fix Doxygen markup.
1667 * include/experimental/bits/fs_fwd.h: Improve docs.
1668 * include/experimental/bits/fs_ops.h: fix Doxygen markup.
1669 * include/experimental/bits/fs_path.h: Likewise.
1670 (path, filesystem_error, u8path): Improve docs.
1671 * include/experimental/filesystem: Link to docs for TS.
1672
cd877474 1673 * config/allocator/new_allocator_base.h (__allocator_base): Add
1674 workaround for Doxygen bug #6945.
1675 * include/std/memory: Improve docs. Define group for pointer safety.
1676 * include/std/scoped_allocator: Improve docs. Use "undocumented"
1677 conditional to suppress documentation for implementation details.
1678
72e8cf41 1679 * include/bits/specfun.h: Improve docs.
1680 * include/tr1/cmath: Likewise. Fix nesting of preprocessor conditions
1681 and namespaces.
1682
633c66f0 1683 * doc/doxygen/doxygroups.cc (std::tr2, std::__gnu_cxx): Improve docs.
1684 (std::experimental): Add docs.
1685 * doc/doxygen/user.cfg.in (PREDEFINED): Expand macros for __cxx11
1686 namespace to nothing when generating docs.
1687 * include/bits/regex_constants.h (std::regex_constants): Improve docs.
1688 * include/std/chrono (std::chrono): Likewise.
1689 * include/std/functional (std::placeholders): Likewise.
1690 * include/std/thread (std::this_thread): Likewise.
1691
17035a16 1692 * include/parallel/settings.h: Fix Doxygen markup.
1693
6de90d17 1694 * include/ext/pb_ds/detail/bin_search_tree_/*_imps.hpp: Do not define
1695 anything unless PB_DS_CLASS_C_DEC is defined.
1696 * include/ext/pb_ds/detail/binary_heap_/*_imps.hpp: Likewise.
1697 * include/ext/pb_ds/detail/binomial_heap_/*_imps.hpp: Likewise.
1698 * include/ext/pb_ds/detail/binomial_heap_base_/*_imps.hpp: Likewise.
1699 * include/ext/pb_ds/detail/cc_hash_table_map_/*_imps.hpp: Likewise.
1700 * include/ext/pb_ds/detail/gp_hash_table_map_/*_imps.hpp: Likewise.
1701 * include/ext/pb_ds/detail/hash_fn/*_imp.hpp: Likewise.
1702 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/*_imps.hpp:
1703 Likewise.
1704 * include/ext/pb_ds/detail/list_update_map_/*_imps.hpp: Likewise.
1705 * include/ext/pb_ds/detail/ov_tree_map_/*_imps.hpp: Likewise.
1706 * include/ext/pb_ds/detail/pairing_heap_/*_imps.hpp: Likewise.
1707 * include/ext/pb_ds/detail/pat_trie_/*_imps.hpp: Likewise.
1708 * include/ext/pb_ds/detail/rb_tree_map_/*_imps.hpp: Likewise.
1709 * include/ext/pb_ds/detail/rc_binomial_heap_/*_imps.hpp: Likewise.
1710 * include/ext/pb_ds/detail/resize_policy*_imp.hpp: Likewise.
1711 * include/ext/pb_ds/detail/splay_tree_/*_imps.hpp: Likewise.
1712 * include/ext/pb_ds/detail/thin_heap_/*_imps.hpp: Likewise.
1713 * include/ext/pb_ds/detail/trie_policy*_imp.hpp: Likewise.
1714 * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp:
1715 Likewise.
1716 * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
1717 * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
1718 Likewise.
1719 * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
1720 Likewise.
1721
c47265a8 1722 * doc/doxygen/user.cfg.in: Regenerate with Doxygen 1.8.14 and set
1723 GROUP_NESTED_COMPOUNDS=YES and SORT_BY_SCOPE_NAME=NO. Add various
1724 _GLIBCXX_xxx macros and __attribute__(X) to PREDEFINED macros that
1725 Doxygen expands.
1726
269f393a 17272019-05-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1728
1729 * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
1730 * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
1731 * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
1732 * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
1733 * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
1734 * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
1735 Likewise.
1736 * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
1737 * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
1738 Likewise.
1739
c64aa5a2 17402019-05-01 Jonathan Wakely <jwakely@redhat.com>
1741
1742 PR libstdc++/61761
1743 * include/std/complex (__complex_proj): Return parameter unchanged.
1744 [_GLIBCXX_USE_C99_COMPLEX] (__complex_proj): Change overloads for
1745 floating-point types to take std::complex arguments.
1746 [_GLIBCXX_USE_C99_MATH_TR1] (__complex_proj): Add overloads for
1747 floating-point types.
1748 * testsuite/26_numerics/complex/proj.cc: New test.
1749
9d5de90f 17502019-04-30 Jakub Jelinek <jakub@redhat.com>
1751
1752 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Change _Lock_policyE2 exports
1753 to _Lock_policyE[012].
1754 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
1755
612b2ae7 17562019-04-30 Jonathan Wakely <jwakely@redhat.com>
1757
1758 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Remove
1759 macros accidentally left in.
1760 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Remove
1761 unnecessary -lstdc++fs option. Fix test for mingw.
1762 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
1763 Fix test for mingw.
1764
55843567 17652019-04-30 Jakub Jelinek <jakub@redhat.com>
1766
1767 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
1768
c5aaf0af 17692019-04-29 Jonathan Wakely <jwakely@redhat.com>
1770
d9375e49 1771 * include/bits/stl_algo.h (generate_n): Adjust doxygen comment.
1772
744a3010 1773 * include/bits/move.h (swap(T&, T&), swap(T (&)[N], T (&)[N])): Use
1774 _GLIBCXX_NOEXCEPT_IF to simplify declarations.
1775
e3600f25 1776 PR libstdc++/71312
1777 * src/c++11/shared_ptr.cc (get_mutex): Align pool mutexes to 64 bytes.
1778
4b7f4f12 1779 * include/bits/stl_bvector.h (vector<bool>::empty()): Add nodiscard
1780 attribute.
1781
94ed6c0a 1782 * include/bits/stl_iterator_base_types.h (_Iter_base): Remove unused
1783 class template and partial specialization.
1784
c5aaf0af 1785 PR libstdc++/87982
1786 * include/bits/stl_algo.h (generate_n): Convert _Size parameter to
1787 an integral type.
1788 * include/bits/stl_algobase.h (__size_to_integer): New overloaded
1789 functions to convert a value to an integral type.
1790 (__fill_n_a, __fill_n_a): Assert that __n is already an integral type.
1791 (fill_n): Convert _Size parameter to an integral type.
1792 * testsuite/25_algorithms/fill_n/87982.cc: New test.
1793 * testsuite/25_algorithms/fill_n/87982_neg.cc: New test.
1794 * testsuite/25_algorithms/fill_n/dr426.cc: New test.
1795 * testsuite/25_algorithms/generate_n/87982.cc: New test.
1796 * testsuite/25_algorithms/generate_n/87982_neg.cc: New test.
1797 * testsuite/25_algorithms/generate_n/dr426.cc: New test.
1798
ac8f540e 17992019-04-28 Nina Dinka Ranns <dinka.ranns@gmail.com>
a4360611 1800
1801 Adding noexcept-specification on tuple constructors (LWG 2899)
1802 * libstdc++-v3/include/std/tuple:
1803 (tuple()): Add noexcept-specification.
1804 (tuple(const _Elements&...)): Likewise
1805 (tuple(_UElements&&...)): Likewise
1806 (tuple(const tuple<_UElements...>&)): Likewise
1807 (tuple(tuple<_UElements...>&&)): Likewise
1808 (tuple(const _T1&, const _T2&)): Likewise
1809 (tuple(_U1&&, _U2&&)): Likewise
1810 (tuple(const tuple<_U1, _U2>&): Likewise
1811 (tuple(tuple<_U1, _U2>&&): Likewise
1812 (tuple(const pair<_U1, _U2>&): Likewise
1813 (tuple(pair<_U1, _U2>&&): Likewise
1814 * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc: New
1815
b9fe1c54 18162019-04-27 Marc Glisse <marc.glisse@inria.fr>
1817
1818 PR libstdc++/87106
1819 * include/bits/stl_uninitialized.h (__relocate_object_a): Mark the
1820 arguments with __restrict.
1821
a596cded 18222019-04-26 H.J. Lu <hongjiu.lu@intel.com>
1823
1824 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1825
051e444d 18262019-04-26 Jonathan Wakely <jwakely@redhat.com>
1827
3c259ff8 1828 * include/experimental/bits/fs_path.h
1829 (path::_S_convert_loc<_InputIterator>): Create const std::string to
1830 avoid redundant call to _S_convert_loc with non-const pointers.
1831
2f95fa8e 1832 * testsuite/20_util/variant/run.cc: Use a new Hashable type to test
1833 hashing, because pmr::string depends on _GLIBCXX_USE_CXX11_ABI==1.
1834 * testsuite/21_strings/basic_string/hash/hash.cc
1835 [!_GLIBCXX_USE_CXX11_ABI]: Don't test pmr strings.
1836 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc
1837 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
1838
46933618 1839 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace wildcard that matches
1840 wstring::_M_replace_dispatch with more specific patterns.
1841 * include/bits/fs_path.h (path::_S_convert_loc<_InputIterator>):
1842 Create const std::string to avoid redundant call to _S_convert_loc
1843 with non-const pointers.
1844 * include/bits/locale_conv.h (__do_str_codecvt): Use if-constexpr to
1845 avoid unnecessary basic_string::assign instantiations.
1846
051e444d 1847 * include/std/memory (__uses_alloc_args): Add string-literal to
1848 static_assert, to match the one in __uses_alloc.
1849 [__cpp_concepts] (_Std_pair): Use C++2a syntax for concept.
1850 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: Check
1851 for recursive uses-allocator construction of nested pairs.
1852 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc:: Add
1853 comment.
1854
db1349a6 18552019-04-26 Jakub Jelinek <jakub@redhat.com>
1856
dd693c4a 1857 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
1858 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
1859 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
1860 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
1861
db1349a6 1862 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
1863 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
1864 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
1865 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
1866 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
1867 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
1868 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
1869
f0a82465 18702019-04-25 Jonathan Wakely <jwakely@redhat.com>
1871
1872 PR libstdc++/90239
1873 * doc/xml/manual/status_cxx2020.xml: Amend P0591R4 status.
1874 * include/std/scoped_allocator [__cplusplus > 201703L]
1875 (scoped_allocator_adaptor::construct): Define in terms of
1876 uses_allocator_construction_args, as per P0591R4.
1877 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc: New test.
1878 * testsuite/util/testsuite_allocator.h: Remove name of unused
1879 parameter.
1880
fd1863e1 18812019-04-24 Jonathan Wakely <jwakely@redhat.com>
1882
9ed11778 1883 * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
1884 * doc/html/*: Regenerate.
1885
39b59bb9 1886 * include/bits/fs_path.h (operator<, operator<=, operator>)
1887 (operator>=, operator==, operator!=): Make hidden friends, as per
1888 LWG 3065.
1889 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Fix
1890 string type in test.
1891 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
1892
dd3b7006 1893 * include/std/any (any::any(ValueType&&)): Use __and_v.
1894 * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
1895 Likewise.
1896
14710c9d 1897 * include/std/tuple (apply): Use remove_reference_t instead of decay_t
1898 as per P0777R1.
1899 * include/std/type_traits (__result_of_memfun): Use remove_reference
1900 instead of __remove_cvref_t and remove redundant is_same check.
1901 (__inv_unwrap): Use __remove_cvref_t instead of decay_t.
1902
809f1d63 1903 * include/experimental/string_view (basic_string_view::pointer)
1904 (basic_string_view::reference): Fix to refer to non-const value_type.
1905 * include/bits/basic_string.h (basic_string): Use __sv_check and
1906 __sv_limit instead of basic_string_view::_M_check and
1907 basic_string_view::_M_limit.
1908 * include/std/string_view (__sv_check, __sv_limit): New
1909 helper functions to replace basic_string_view::_M_check and
1910 basic_string_view::_M_limit.
1911 (basic_string_view): Add static assertions to enforce ill-formed
1912 requirement for traits_type::char_type from P1148R0, and to enforce
1913 required properties of char-like types.
1914 (basic_string_view::pointer, basic_string_view::reference): Fix to
1915 refer to non-const value_type.
1916 (basic_string_view::operator[], basic_string_view::at)
1917 (basic_string_view::front, basic_string_view::back)
1918 (basic_string_view::data): Use const_reference and const_pointer
1919 typedefs for return types.
1920 (basic_string_view::_M_check, basic_string_view::_M_limit): Remove.
1921 (hash<wstring_view>): Fix argument_type typedef.
1922 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1923 char/1.cc: Fix expected return type of basic_string_view::data().
1924 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1925 wchar_t/1.cc: Likewise.
1926 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1927 char/1.cc: Likewise.
1928 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1929 wchar_t/1.cc: Likewise.
1930 * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
1931 New test.
1932 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
1933 Check reference and pointer typedefs.
1934 * testsuite/experimental/string_view/requirements/typedefs.cc:
1935 Likewise.
1936 * testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc:
1937 Fix expected return type of basic_string_view::data().
1938 * testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/
1939 1.cc: Likewise.
1940 * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
1941 Likewise.
1942 * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
1943 1.cc: Likewise.
1944
37020b0a 1945 PR libstdc++/90220
1946 * include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
1947 Avoid a runtime check for types that can never be stored in std::any.
1948 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
1949 array types.
1950
b8e73341 1951 PR libstdc++/90220 (partial)
1952 * include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
1953 not attempt ill-formed static_cast to pointers to non-object types.
1954 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
1955 function types.
1956
1c9c8e0d 1957 * testsuite/20_util/variant/run.cc: Catch exception by reference to
1958 prevent -Wcatch-value warning.
1959
fd1863e1 1960 * include/std/variant (__variant_construct): Use template parameter
1961 type instead of equivalent decltype-specifier.
1962 (_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
1963 Replace forward with move.
1964 (_Move_ctor_base<false, Types...>::_M_destructive_move)
1965 (_Move_ctor_base<false, Types...>::_M_destructive_copy)
1966 (_Move_ctor_base<true, Types...>::_M_destructive_move)
1967 (_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
1968 index after construction succeeds.
1969 (_Copy_assign_base<false, Types...>::operator=): Remove redundant
1970 if-constexpr checks that are always true. Use __remove_cvref_t instead
1971 of remove_reference so that is_nothrow_move_constructible check
1972 doesn't use a const rvalue parameter. In the potentially-throwing case
1973 construct a temporary and move assign it, as per LWG 2904.
1974 (_Move_assign_base<false, Types...>::operator=): Remove redundant
1975 if-constexpr checks that are always true. Use emplace as per LWG 2904.
1976 (variant::operator=(T&&)): Only use emplace conditionally, otherwise
1977 construct a temporary and move assign from it, as per LWG 2904.
1978 * testsuite/20_util/variant/exception_safety.cc: Check that
1979 assignment operators have strong exception safety guarantee.
1980
55bb4515 19812019-04-23 Thomas Rodgers <trodgers@redhat.com>
1982
1983 Document PSTL linker flags
1984
7f6a1a9c 1985 * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
55bb4515 1986
b48cc8c5 19872019-04-23 Jonathan Wakely <jwakely@redhat.com>
1988
a4265b66 1989 * include/std/variant (__detail::__variant::_Traits): Make
1990 _S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
1991 _S_trivial_move_assign depend on _S_trivial_move_ctor, as per
1992 P0602R4.
1993 (__detail::__variant::_Copy_assign_alias): Only depend on
1994 _S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
1995 * testsuite/20_util/variant/compile.cc: Correct checks for trivial
1996 move assignment operators.
1997
28cc38ec 1998 PR libstdc++/90165
1999 * include/std/variant (variant::__not_self): New helper for the
2000 is_same_v<remove_cvref_t<T>, variant>==false constraints.
2001 (variant::__to_type_impl): Remove.
2002 (variant::__to_type): Add default argument to check pack size, instead
2003 of using __to_type_impl.
2004 (variant::__accepted_type): Add default argument using __not_self.
2005 (variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
2006 for variant(T&&) constructor constraint.
2007 (variant::variant(T&&)): Use __not_in_place_tag in constraints.
2008 Extract __accepted_type into a named template parameter for reuse in
2009 other constraints and in the exception specification.
2010 (variant::variant(in_place_type_t<T>, Args&&...))
2011 (variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
2012 (variant::variant(in_place_index_t<T>, Args&&...))
2013 (variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
2014 (variant::operator=T&&)): Remove redundant && from trait arguments.
2015 * testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
2016 isn't used for in_place_type or in_place_index arguments.
2017
b48cc8c5 2018 * include/std/type_traits (unwrap_reference_t): Define for C++2a.
2019 (unwrap_ref_decay): Remove inheritance from unwrap_reference.
2020 * testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.
2021
9ac9ee83 20222019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2023 Bernd Edlinger <bernd.edlinger@hotmail.de>
2024 Jakub Jelinek <jakub@redhat.com>
2025
2026 PR target/89093
2027 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
2028 general-regs-only target attribute for ARM.
2029
e11f5aed 20302019-04-23 Jonathan Wakely <jwakely@redhat.com>
2031
b9d8292f 2032 PR libstdc++/87431
2033 * include/bits/basic_string.h (_Never_valueless_alt): Make partial
2034 specialization also depend on is_nothrow_move_constructible.
2035 * include/std/variant (__detail::__variant::__never_valueless()):
2036 Only true if the variant would have a move assignment operator.
2037 (__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
2038 Check __never_valueless<T...>().
2039 (variant::emplace): Only perform non-throwing move assignments
2040 for never-valueless alternatives if the variant has a move assignment
2041 operator.
2042 * testsuite/20_util/variant/compile.cc: Check that never-valueless
2043 types can be emplaced into non-assignable variants.
2044 * testsuite/20_util/variant/run.cc: Check that never-valueless types
2045 don't get copied when emplaced into non-assignable variants.
2046
e11f5aed 2047 * include/std/variant (__detail::__variant::__ref_cast): Remove
2048 unused function.
2049 (__detail::__variant::_Uninitialized::_M_get)
2050 (__detail::__variant::__get)
2051 (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
2052
46fbb8aa 20532019-04-21 Iain Sandoe <iain@sandoe.co.uk>
2054
2055 * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
2056 to Darwin10.
2057 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
2058 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
2059 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
2060 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
2061
dff3f73c 20622019-04-20 Thomas Rodgers <trodgers@redhat.com>
2063
2064 Delegate PSTL configuration to pstl/pstl_config.h
2065
2066 * include/bits/c++config: Remove explicit PSTL configuration
2067 macros and use definitions from <pstl/pstl_config.h>.
2068
3dbad48e 20692019-04-20 Thomas Rodgers <trodgers@redhat.com>
2070
2071 Cleanup algorithm implementations
2072 * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
ed42fdb5 2073 execution policy.
3dbad48e 2074 (mismatch): Forward execution policy.
2075 (equal): Qualify call to std::equal().
2076 (partial_sort): Forward execution policy.
2077 (inplace_merge): Forward execution policy.
2078
5d637ddd 20792019-04-19 Thomas Rodgers <trodgers@redhat.com>
2080
2081 Improve implementation of parallel equal()
2082 * include/pstl/algorithm_impl.h
2083 (__internal::__brick_equal): use "4 iterator" version of
2084 std::equal().
2085 (__internal::__brick_equal): use simd for random access
2086 iterators on unsequenced execution policies.
2087 (__internal::__pattern_equal): add "4 iterator" version
2088 (__internal::__pattern_equal): dispatch to simd __brick_equal
2089 for vector-only execution policies.
2090 (__internal::__pattern_equal): dispatch to __parallel_or for
2091 parallel execution policies.
2092 * include/pstl/glue_algorithm_impl.h
2093 (std::equal): dispatch to "4 iterator" version of
2094 __internal::__pattern_equal().
2095
88dbeb04 20962019-04-17 Jonathan Wakely <jwakely@redhat.com>
2097
a0295ab5 2098 PR libstdc++/90105
2099 * include/bits/forward_list.h (operator==): Do not use operator!= to
2100 compare elements.
2101 (forward_list<T, A>::sort(Comp)): When elements are equal take the one
2102 earlier in the list, so that sort is stable.
2103 * testsuite/23_containers/forward_list/operations/90105.cc: New test.
2104 * testsuite/23_containers/forward_list/comparable.cc: Test with
2105 types that meet the minimum EqualityComparable and LessThanComparable
2106 requirements. Remove irrelevant comment.
2107
37a7dbf9 2108 * include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
2109 Do not depend on whether all alternative types are move constructible.
2110 (__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
2111 from the operand when deciding whether to perform the assignment.
2112 * testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
2113 with deleted move constructor and deleted move assignment operator.
2114 (default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
2115 behaviour of variants with DeletedMoves as an alternative.
2116 * testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
2117 (move_ctor, move_assign): Check that moving a variant with a
2118 DeletedMoves alternative falls back to copying instead of moving.
2119
e9a490a4 2120 * testsuite/20_util/variant/compile.cc: Remove empty string literals
2121 from static_assert declarations.
2122
c4495ab1 2123 * testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
2124 actually match its name.
2125 (MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
2126 (test_swap()): Fix result for MoveCtorOnly and check
2127 MoveCtorAndSwapOnly.
2128
88dbeb04 2129 * include/std/optional (optional::value_or(U&&) &&): Add missing
2130 constexpr specifier.
2131 * testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
2132 for disengaged optionals and rvalue optionals.
2133 * testsuite/20_util/optional/observers/4.cc: Likewise.
2134
11deac81 21352019-04-12 Thomas Rodgers <trodgers@redhat.com>
2136
2137 * include/pstl/algorithm_impl.h: Uglify identfiers.
2138 * include/pstl/numeric_impl.h: Uglify identfiers.
2139 * include/pstl/parallel_backend_tbb.h: Uglify identfiers.
2140
34d8d757 21412019-04-11 Thomas Rodgers <trodgers@redhat.com>
2142
2143 * include/bits/c++config:
2144 Add definition for __PSTL_ASSERT.
2145 Add definition for __PSTL_ASSERT_MSG.
2146 * include/pstl/algorithm_impl.h: Replace use of assert().
2147 * include/pstl/numeric_impl.h: Replace use of assert().
2148 * include/pstl/parallel_backend_tbb.h:
2149 Replace use of assert().
2150 Replace use of __TBB_ASSERT().
34d8d757 2151 * include/pstl/parallel_backend_utils.h: Replace use of assert().
2152
629a2d18 21532019-04-11 Jonathan Wakely <jwakely@redhat.com>
2154
2155 PR libstdc++/90046
2156 * src/c++17/memory_resource.cc
2157 (monotonic_buffer_resource::_Chunk::allocate): Increase alignment if
2158 needed to allow placing a _Chunk at the end of the buffer.
2159 (monotonic_buffer_resource::_M_new_buffer): Remove static_assert.
2160
b047c9ae 21612019-04-10 Jonathan Wakely <jwakely@redhat.com>
2162
6a98b075 2163 * doc/xml/faq.xml: Add information about emergency EH pool.
2164 * doc/xml/manual/debug.xml: Update list of memory debugging tools.
2165 Move outdated information on mt_allocator to a separate section.
2166 * doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW
2167 doesn't affect the default allocator.
2168
706bf2a5 2169 * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
2170 typo.
2171
b047c9ae 2172 PR libstdc++/89851
2173 * testsuite/20_util/variant/89851.cc: New test.
2174
faa382bd 21752019-04-09 Jonathan Wakely <jwakely@redhat.com>
2176
492debfa 2177 * include/std/variant: Adjust whitespace. Add comments.
2178 (_Multi_array): Leave primary template undefined.
2179 (_Multi_array<_Tp>): Define partial specialization for base case of
2180 recursion.
2181 (__gen_vtable_impl, __gen_vtable): Remove redundant && from type
2182 which is always a reference.
2183 (__gen_vtable::_S_apply()): Remove function, inline body into
2184 default member initializer.
2185 * testsuite/20_util/variant/visit.cc: Test with noncopyable types.
2186
47cf9c4c 2187 * include/std/variant (__variant_idx_cookie): Add member type.
2188 (__visitor_result_type): Remove.
2189 (__do_visit): Use invoke_result instead of __visitor_result_type.
2190 * testsuite/20_util/variant/visit.cc: New test.
2191
faa382bd 2192 PR libstdc++/90008
2193 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
2194 unused capture.
2195 * testsuite/20_util/variant/90008.cc: New test.
2196
e4da4897 21972019-04-09 Thomas Rodgers <trodgers@redhat.com>
2198
2199 * include/pstl/algorithm_impl.h: Add namespace qualification.
2200 * include/pstl/execution_defs.h: Add namespace qualification.
2201 * include/pstl/execution_impl.h: Add namespace qualification.
2202 * include/pstl/numeric_impl.h: Add namespace qualification.
2203 * include/pstl/parallel_backend_tbb.h: Add namespace qualification.
2204 * include/pstl/unseq_backend_simd.h: Add namespace qualification.
2205 * include/pstl/parallel_backend_utils.h: Include <cassert>.
2206
ff7d433d 22072019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
2208
2209 Fix visit<R> for variant.
2210 * include/std/variant (__do_visit): Add a template parameter
2211 for enforcing same return types for visit.
2212 (__gen_vtable_impl): Likewise.
2213 (_S_apply_single_alt): Adjust.
2214 (__visit_invoke_impl): New. Handle casting to void.
2215 (__do_visit_invoke): New. Enforces same return types.
2216 (__do_visit_invoke_r): New. Converts return types.
2217 (__visit_invoke): Adjust.
2218 (__gen_vtable): Add a template parameter for enforcing
2219 same return types for visit.
2220 * testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
2221 different return types.
2222 * testsuite/20_util/variant/visit_neg.cc: New. Ensures that
2223 visitors with different return types don't accidentally
2224 compile with regular visitation.
2225
d0f56531 22262019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
2227
2228 * testsuite/27_io/filesystem/iterators/caching.cc: Add
2229 dg-require-filesystem-ts.
2230
781cb64d 22312019-04-05 Jonathan Wakely <jwakely@redhat.com>
2232
bfbd20f7 2233 * doc/xml/manual/status_cxx2020.xml: Update status.
2234 * include/std/variant (visit<R>): Define for C++2a (P0655R1).
2235 * testsuite/20_util/variant/visit_r.cc: New test.
2236
83bd31bf 2237 * include/bits/fs_dir.h (directory_iterator::operator*)
2238 (directory_iterator::operator->): Add noexcept.
2239 (operator==, operator!=): Replace namespace-scope equality operators
2240 for directory iterators with hidden friends.
2241
0067a809 2242 PR libstdc++/89986
2243 * config/abi/pre/gnu.ver: Add missing exports.
2244 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
2245 increment member.
2246
7d0ae205 2247 * config/abi/pre/gnu.ver: Export new symbols.
2248 * include/bits/fs_dir.h (recursive_directory_iterator::options())
2249 (recursive_directory_iterator::recursion_pending())
2250 (recursive_directory_iterator::disable_recursion_pending()): Remove
2251 inline definitions. Make noexcept.
2252 (recursive_directory_iterator::depth())
2253 (recursive_directory_iterator::operator*())
2254 (recursive_directory_iterator::operator->()): Make noexcept.
2255 (recursive_directory_iterator::_M_options)
2256 (recursive_directory_iterator::_M_pending): Remove data members.
2257 * src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
2258 (recursive_directory_iterator::recursive_directory_iterator): Remove
2259 ctor-initializer. Use new constructor for _Dir_stack.
2260 (recursive_directory_iterator::options())
2261 (recursive_directory_iterator::recursion_pending())
2262 (recursive_directory_iterator::disable_recursion_pending()): Add
2263 non-inline definitions.
2264 (recursive_directory_iterator::depth()): Make noexcept.
2265 (recursive_directory_iterator::increment(error_code&))
2266 (recursive_directory_iterator::pop(error_code&)): Adjust to new
2267 location of options and recursion_pending members.
2268 * testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
2269 * testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
2270 user-declared move constructor and assignment operator, to make the
2271 type move-only.
2272
5a6e0b73 2273 * src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
2274 d_type == DT_UNKNOWN immediately.
2275 (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
2276 handling here.
2277 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
2278
aa9c570e 2279 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
2280 assignment.
2281 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
2282 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
2283 assignment.
2284
781cb64d 2285 PR libstdc++/87431 (again)
2286 * include/bits/basic_string.h (__variant::_Never_valueless_alt):
2287 Define partial specialization for basic_string.
2288 * include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
2289 shared_ptr and weak_ptr.
2290 * include/bits/std_function.h (_Never_valueless_alt): Likewise for
2291 function.
2292 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
2293 vector.
2294 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
2295 unique_ptr.
2296 * include/debug/vector (_Never_valueless_alt): Likewise for debug
2297 vector.
2298 * include/std/any (_Never_valueless_alt): Define explicit
2299 specialization for any.
2300 * include/std/variant (_Never_valueless_alt): Define primary template.
2301 (__never_valueless): Use _Never_valueless_alt instead of
2302 is_trivially_copyable.
2303 (variant::emplace<N>(Args&&...)): Add special case for non-throwing
2304 initializations to avoid try-catch overhead. Add special case for
2305 scalars produced by potentially-throwing conversions. Use
2306 _Never_valueless_alt instead of is_trivially_copyable for the
2307 remaining strong exception-safety cases.
2308 (variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
2309 * testsuite/20_util/variant/87431.cc: Run both test functions.
2310 * testsuite/20_util/variant/exception_safety.cc: New test.
2311 * testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
2312 so the variant becomes valueless.
2313
62fd39e8 23142019-04-03 Jonathan Wakely <jwakely@redhat.com>
2315
e1d699b8 2316 PR libstdc++/85184
2317 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
2318 Remove assertions.
72be2bb7 2319 (variant::emplace<_Tp>): Return result of emplace<N> directly.
e1d699b8 2320
62fd39e8 2321 * include/std/string (__hash_string_base): New class template defining
2322 operator() for hashing strings.
2323 (hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
2324 (hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
2325 * testsuite/21_strings/basic_string/hash/hash.cc: New test.
2326 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.
2327
4f3e024d 23282019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
2329
2330 Use single-visitation in variant assignment and swap and relops.
2331 Also use indices instead of types when checking whether
2332 variants hold the same thing.
2333 * include/std/variant (__do_visit): Add a template parameter
2334 for index visitation, invoke with indices if index visitation
2335 is used.
2336 (__variant_idx_cookie): New.
2337 (__visit_with_index): Likewise.
2338 (_Copy_assign_base::operator=): Do single-visitation with
2339 an index visitor.
2340 (_Move_assign_base::operator=): Likewise.
2341 (_Extra_visit_slot_needed): Adjust.
2342 (__visit_invoke): Call with indices if it's an index visitor.
2343 (relops): Do single-visitation with an index visitor.
2344 (swap): Likewise.
2345 (__visitor_result_type): New.
2346
106979b7 23472019-03-30 Eric Botcazou <ebotcazou@adacore.com>
2348
2349 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
2350
225ca87b 23512019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
2352
2353 Don't revisit a variant we are already visiting.
2354 * include/std/variant (__variant_construct_single): New.
2355 (__variant_construct): Use it.
2356 (_M_destructive_move): Likewise.
2357 (_M_destructive_copy): Likewise.
2358 (_Copy_assign_base::operator=): Adjust.
2359 (_Move_assign_base::operator=): Likewise.
2360 (swap): Likewise.
2361
7237dce7 23622019-03-26 Jonathan Wakely <jwakely@redhat.com>
2363
2364 PR libstdc++/85965
2365 * include/bits/hashtable.h (_Hashtable): Move static assertions to
2366 destructor so they are not evaluated until the _Key type is complete.
2367 * include/bits/stl_tree.h (_Rb_tree): Likewise.
2368 * testsuite/23_containers/set/85965.cc: New test.
2369 * testsuite/23_containers/unordered_set/85965.cc: New test.
2370 * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
2371 with regexp matching the corresponding _Rb_tree specialization.
2372 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
2373 * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
2374 * testsuite/23_containers/set/48101_neg.cc: Likewise.
2375 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
2376 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
2377 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
2378 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
2379
4c0ef551 23802019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
2381
2382 PR libstdc++/89825
2383 Fix based on a suggestion by Antony Polukhin.
2384 * include/std/variant (__never_valueless): New.
2385 (_M_valid): Use it.
2386 (_Extra_visit_slot_needed): New.
2387 (_Multi_array): Use it.
2388 (_S_apply_all_alts): Likewise.
2389
28b460dd 23902019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
2391
2392 PR libstdc++/89824
2393 Fix based on a suggestion by Antony Polukhin.
2394 * include/std/variant (__gen_vtable): Don't reserve an
2395 additional table slot, _Multi_array already does that.
2396
4d235dc5 23972019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
2398
2399 PR libstdc++/89816
2400 Fix based on a suggestion by Antony Polukhin.
2401 * include/std/variant (__variant_construct): Capture a pointer
2402 to the storage and visit just one variant.
2403
d0595c7e 24042019-03-22 Jonathan Wakely <jwakely@redhat.com>
2405
5c34f7ca 2406 * doc/xml/manual/backwards_compatibility.xml: Remove link to
2407 Doxygen-generated pages with unstable URL.
2408 * doc/xml/manual/concurrency_extensions.xml: Likewise.
2409 * doc/xml/manual/extensions.xml: Likewise.
2410 * doc/xml/manual/parallel_mode.xml: Likewise.
2411 * doc/xml/manual/support.xml: Likewise.
2412
d0595c7e 2413 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
2414 avoid -Wconversion warnings.
2415
7e155e54 24162019-03-21 Thomas Rodgers <trodgers@redhat.com>
2417
2418 * include/Makefile.am (std_header): Add ${std_srcdir}/execution.
2419 (pstl_srcdir, pstl_builddir, pstl_headers): New variables.
2420 (allstamped): Add stamp-pstl.
2421 (install-headers): Add ptsl_builddir.
2422 * include/Makefile.in: Regenerate.
2423 * include/bits/c++config: Add pstl configuration.
2424 * include/pstl/LICENSE.txt: New file.
2425 * include/pstl/algorithm_fwd.h: New file.
2426 * include/pstl/algorithm_impl.h: New file.
2427 * include/pstl/execution_defs.h: New file.
2428 * include/pstl/execution_impl.h: New file.
2429 * include/pstl/glue_algorithm_defs.h: New file.
2430 * include/pstl/glue_algorithm_impl.h: New file.
2431 * include/pstl/glue_execution_defs.h: New file.
2432 * include/pstl/glue_memory_defs.h: New file.
2433 * include/pstl/glue_memory_impl.h: New file.
2434 * include/pstl/glue_numeric_defs.h: New file.
2435 * include/pstl/glue_numeric_impl.h: New file.
2436 * include/pstl/memory_impl.h: New file.
2437 * include/pstl/numeric_fwd.h: New file.
2438 * include/pstl/numeric_impl.h: New file.
2439 * include/pstl/parallel_backend.h: New file.
2440 * include/pstl/parallel_backend_tbb.h: New file.
2441 * include/pstl/parallel_backend_utils.h: New file.
2442 * include/pstl/parallel_impl.h: New file.
2443 * include/pstl/pstl_config.h: New file.
2444 * include/pstl/unseq_backend_simd.h: New file.
2445 * include/pstl/utils.h: New file.
2446 * include/std/algorithm: Include parallel algorithm implementations.
2447 * include/std/execution: New file.
2448 * include/std/memory: Include parallel algorithm implementations.
2449 * include/std/numeric: Include parallel algorithm implementations.
2450 * include/std/version: Add parallel algorithms feature test macro.
2451 * testsuite/util/pstl/pstl_test_config.h: New file.
2452 * testsuite/util/pstl/test_utils.h: New file.
2453 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
2454 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
2455 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
2456 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
2457 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
2458 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
2459 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
2460 * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
2461 * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
2462 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
2463 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
2464 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
2465 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
2466 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
2467 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
2468 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
2469 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
2470 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
2471 * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
2472 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
2473 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
2474 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
2475 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
2476 * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
2477 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
2478 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
2479 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
2480 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
2481 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
2482 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
2483 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
2484 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
2485 * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
2486 * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
2487 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
2488 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
2489 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
2490 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
2491 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
2492 * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
2493 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
2494 * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
2495 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
2496 * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
2497 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
2498 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
2499 * testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
2500 * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
2501 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
2502 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
2503 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
2504 * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
2505 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
2506 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
2507 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
2508 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
2509 * testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
2510 * testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
2511 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
2512 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
2513 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
2514 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
2515 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
2516 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
2517 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
2518 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
2519 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
2520 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
2521 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
2522 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
2523 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
2524 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
2525 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
2526 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
2527 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
2528 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
2529 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
2530 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
2531 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
2532 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
2533 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
2534 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
2535 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
2536 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
2537 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
2538 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
2539 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
2540 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
2541 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
2542 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
2543 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
2544 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
2545 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
2546 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
2547 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
2548 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
2549 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
2550 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
2551 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
2552 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
2553 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
2554 * testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
2555 * testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
2556 * testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
2557 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
2558 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
2559
480b3b75 25602019-03-21 Jonathan Wakely <jwakely@redhat.com>
2561
0a4390ac 2562 * include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
2563 (assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
2564 (assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
2565 (comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
2566 (comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
2567 (cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
2568 (cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
2569 (cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
2570 (ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
2571 (ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
2572 (hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
2573 (legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
2574 (sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
2575 (sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
2576 when the special functions IS is enabled, not for C++17.
2577 * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
2578 Replace with ...
2579 * testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
2580 without checks for special functions in C++17.
2581 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
2582 New test.
2583
480b3b75 2584 PR libstdc++/88066
2585 * include/backward/hash_map: Use <> for includes not "".
2586 * include/backward/hash_set: Likewise.
2587 * include/backward/strstream: Likewise.
2588 * include/tr1/bessel_function.tcc: Likewise.
2589 * include/tr1/exp_integral.tcc: Likewise.
2590 * include/tr1/legendre_function.tcc: Likewise.
2591 * include/tr1/modified_bessel_func.tcc: Likewise.
2592 * include/tr1/riemann_zeta.tcc: Likewise.
2593
ed360d55 25942019-03-19 Jonathan Wakely <jwakely@redhat.com>
2595
2596 * doc/xml/manual/allocator.xml: Link to table documenting evolution
2597 of extension allocators.
2598 * doc/xml/manual/evolution.xml: Use angle brackets for header names.
2599 Document new headers in 7.2, 8.1 and 9.1 releases.
2600 * doc/xml/manual/using.xml: Adjust link target for new_allocator.
2601 * doc/html/*: Regenerate.
2602
8f9d7eb1 26032019-03-12 John David Anglin <dave.anglin@bell.net>
2604
2605 PR libstdc++/89461
2606 * testsuite/lib/libstdc++.exp: Locate libatomic.
2607 * testsuite/lib/dg-options.exp (add_options_for_libatomic): New.
2608 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
2609 libatomic options.
2610 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
2611 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
2612 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
2613 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
2614
0bd005b6 26152019-03-11 Jonathan Wakely <jwakely@redhat.com>
2616
5995ba3a 2617 PR libstdc++/89460
2618 * configure.ac: Check for sockatmark.
2619 * crossconfig.m4: Check for sockatmark.
2620 * config.h.in: Regenerate.
2621 * configure: Regenerate.
2622 * include/experimental/internet (address_v4::_S_hton): Rename
2623 overloaded functions to _S_hton_16 and _S_ntoh_16.
2624 (address_v4::_S_ntoh): Rename to _S_ntoh_16 and _S_ntoh_32.
2625 (basic_endpoint): Adjust calls to _S_hton and _S_ntoh.
2626 * include/experimental/socket (basic_socket::at_mark): Check
2627 _GLIBCXX_HAVE_SOCKATMARK.
2628
5aa8571a 2629 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
2630 const variables instead of macros.
2631
0bd005b6 2632 PR libstdc++/89629
2633 * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
2634 Use correct type for len_aligned.
2635 * testsuite/20_util/hash/89629.cc: New test.
2636
bc204227 26372019-03-11 Jakub Jelinek <jakub@redhat.com>
2638
2639 PR libstdc++/89641
2640 * include/std/atomic (atomic<T>::store, atomic<T>::load,
2641 atomic<T>::exchange, atomic<T>::compare_exchange_weak,
2642 atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
2643 * include/bits/atomic_base.h (__atomic_base<T>::operator++,
2644 __atomic_base<T>::operator--, __atomic_base<T>::operator+=,
2645 __atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
2646 __atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
2647 __atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
2648 __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
2649 memory_order_seq_cst to int.
2650
fc557c2b 26512019-03-08 Jonathan Wakely <jwakely@redhat.com>
2652
59b5e890 2653 * doc/xml/manual/using.xml: Use link element instead of xref.
2654 * doc/html/*: Regenerate.
2655
fc557c2b 2656 * include/bits/fs_path.h (path::format): Add fixed underlying type.
2657
66c6ff9e 26582019-03-08 François Dumont <fdumont@gcc.gnu.org>
2659
448338d0 2660 PR libstdc++/89477
2661 * include/debug/map.h (map): Use _RequireNotAllocator to constrain
2662 parameters in deduction guides.
2663 * include/debug/multimap.h (multimap): Likewise.
2664 * include/debug/set.h (multimap): Likewise.
2665 * include/debug/multiset.h (multimap): Likewise.
2666 * include/debug/unordered_map (unordered_map): Likewise.
2667 (unordered_multimap): Likewise.
2668 * include/debug/unordered_set (unordered_set): Likewise.
2669 (unordered_multiset): Likewise.
2670
66c6ff9e 2671 PR libstdc++/89608
2672 * include/debug/unordered_map (unordered_map<>::_M_check_rehashed):
2673 Invalidate all iterators in case of rehash.
2674 (unordered_multimap<>::_M_check_rehashed): Likewise.
2675 * include/debug/unordered_set
2676 (unordered_set<>::_M_check_rehashed): Likewise.
2677 (unordered_multiset<>::_M_check_rehashed): Likewise.
2678 * testsuite/23_containers/unordered_set/debug/89608_neg.cc: New.
2679
32e92dc2 26802019-03-07 Andreas Schwab <schwab@suse.de>
2681
2682 * config/abi/post/riscv64-linux-gnu: New directory.
2683 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
2684
61dcf2e1 26852019-03-07 Jonathan Wakely <jwakely@redhat.com>
2686
682ee94e 2687 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
2688 compile test to run. Fix typo.
2689
f24442bd 2690 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
2691 * doc/html/*: Regenerate.
2692
61dcf2e1 2693 P0356R5 Simplified partial function application
2694 * include/std/functional [C++20] (_Bind_front, _Bind_front_t): Define
2695 helpers for bind_front.
2696 (bind_front, __cpp_lib_bind_front): Define.
2697 * testsuite/20_util/function_objects/bind_front/1.cc: New test.
2698
b4af2395 26992019-03-06 Jonathan Wakely <jwakely@redhat.com>
2700
2701 * include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
2702 * include/std/version (__cpp_lib_bounded_array_traits): Likewise.
2703 * testsuite/20_util/is_bounded_array/value.cc: Check for macro.
2704 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
2705
f1857b8b 27062019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
2707
2708 PR libstdc++/86655 - std::assoc_legendre should not constrain
2709 the value of m (or x).
2710 * include/tr1/legendre_function.tcc (__assoc_legendre_p,
2711 __sph_legendre): If degree > order Don't throw, return 0.
2712 (__legendre_p, __assoc_legendre_p): Don't constrain x either.
2713 * testsuite/special_functions/02_assoc_legendre/pr86655.cc: New test.
2714 * testsuite/special_functions/20_sph_legendre/pr86655.cc: New test.
2715 * testsuite/tr1/5_numerical_facilities/special_functions/
2716 02_assoc_legendre/pr86655.cc: New test.
2717 * testsuite/tr1/5_numerical_facilities/special_functions/
2718 22_sph_legendre/pr86655.cc: New test.
2719
49c83dca 27202019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
2721
2722 Rewrite variant.
2723 Also PR libstdc++/85517
2724 * include/std/variant (__do_visit): New.
2725 (__variant_cast): Likewise.
2726 (__variant_cookie): Likewise.
2727 (__erased_*): Remove.
2728 (_Variant_storage::_S_vtable): Likewise.
2729 (_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
2730 (_Variant_storage::__M_reset): Adjust.
2731 (__variant_construct): New.
2732 (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
2733 __variant_construct.
2734 (_Move_ctor_base(_Move_ctor_base&&)): Likewise.
2735 (_Move_ctor_base::__M_destructive_copy): New.
2736 (_Move_ctor_base::__M_destructive_move): Adjust to use
2737 __variant_construct.
2738 (_Copy_assign_base::operator=): Adjust to use __do_visit.
2739 (_Copy_assign_alias): Adjust to check both copy assignment
2740 and copy construction for triviality.
2741 (_Move_assign_base::operator=): Adjust to use __do_visit.
2742 (_Multi_array): Add support for visitors that accept and return
2743 a __variant_cookie.
2744 (__gen_vtable_impl::_S_apply_all_alts): Likewise.
2745 (__gen_vtable_impl::_S_apply_single_alt): Likewise.
2746 (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
2747 a __variant_cookie temporary for a variant that is valueless and..
2748 (__gen_vtable_impl::__visit_invoke): ..adjust here.
2749 (__gen_vtable::_Array_type): Conditionally make space for
2750 the __variant_cookie visitor case.
2751 (__variant_construct_by_index): New.
2752 (get_if): Adjust to use std::addressof.
2753 (relops): Adjust to use __do_visit.
2754 (variant): Add __variant_cast and __variant_construct_by_index
2755 as friends.
2756 (variant::emplace): Use _M_reset() and __variant_construct_by_index
2757 instead of self-destruction.
2758 (variant::swap): Adjust to use __do_visit.
2759 (visit): Reimplement in terms of __do_visit.
2760 (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
2761 * testsuite/20_util/variant/compile.cc: Adjust.
2762 * testsuite/20_util/variant/run.cc: Likewise.
2763
13825fb2 27642019-03-06 Jonathan Wakely <jwakely@redhat.com>
2765
2613fa6b 2766 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
2767 constant.
2768 * testsuite/experimental/feat-char8_t.cc: Likewise.
2769
a17f06b3 2770 * include/std/type_traits [C++20] (is_bounded_array)
2771 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
2772 Define.
2773 * testsuite/20_util/is_bounded_array/requirements/
2774 explicit_instantiation.cc: New test.
2775 * testsuite/20_util/is_bounded_array/requirements/typedefs.cc: New
2776 test.
2777 * testsuite/20_util/is_bounded_array/value.cc: New test.
2778 * testsuite/20_util/is_unbounded_array/requirements/
2779 explicit_instantiation.cc: New test.
2780 * testsuite/20_util/is_unbounded_array/requirements/typedefs.cc: New
2781 * test.
2782 * testsuite/20_util/is_unbounded_array/value.cc: New test.
2783
13825fb2 2784 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
2785 Add constexpr.
2786 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
2787
2e73e63a 27882019-03-05 Jonathan Wakely <jwakely@redhat.com>
2789
2790 * include/c_compatibility/math.h [C++20] (lerp): Add using
2791 declaration.
2792 * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define.
2793 (__lerp): Define function template to implement lerp.
2794 (lerp(float, float, float), lerp(double, double, double))
2795 (lerp(long double, long double, long double)): Define for C++20.
2796 * include/std/numeric [C++20] (__cpp_lib_interpolate): Define.
2797 (midpoint(T, T), midpoint(T*, T*)): Define.
2798 * include/std::version [C++20] (__cpp_lib_interpolate): Define.
2799 * testsuite/26_numerics/lerp.cc: New test.
2800 * testsuite/26_numerics/midpoint/floating.cc: New test.
2801 * testsuite/26_numerics/midpoint/integral.cc: New test.
2802 * testsuite/26_numerics/midpoint/pointer.cc: New test.
2803
08d3ce5b 28042019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
2805
2806 PR libstdc++/88996 Implement P0439R0
2807 Make std::memory_order a scoped enumeration.
2808 * include/bits/atomic_base.h: For C++20 make memory_order a scoped enum,
2809 add variables for the old enumerators. Adjust calls.
2810 * testsuite/29_atomics/headers/atomic/types_std_c++2a.cc: New test.
2811 * testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc: New test.
2812
ad29ad75 28132019-03-04 Jonathan Wakely <jwakely@redhat.com>
2814
4233f2a8 2815 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
2816 directive.
2817
ad29ad75 2818 * include/std/memory_resource (polymorphic_allocator): Add default
2819 template argument for C++20.
2820 (polymorphic_allocator::allocate_bytes)
2821 (polymorphic_allocator::deallocate_bytes)
2822 (polymorphic_allocator::allocate_object)
2823 (polymorphic_allocator::deallocate_object)
2824 (polymorphic_allocator::new_object)
2825 (polymorphic_allocator::delete_object): New member functions for
2826 C++20.
2827 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
2828 test.
2829
d4c27c4a 28302019-03-03 Jonathan Wakely <jwakely@redhat.com>
2831
2832 PR libstdc++/89562
2833 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
2834 mode for mingw.
2835
6a9c77f1 28362019-03-01 Jonathan Wakely <jwakely@redhat.com>
2837
5b313df9 2838 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
2839 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
2840
6a9c77f1 2841 * include/std/memory (uses_allocator_construction_args): New set of
2842 overloaded functions.
2843 (make_obj_using_allocator, uninitialized_construct_using_allocator):
2844 New functions.
2845 * include/std/memory_resource (polymorphic_allocator::construct)
2846 [__cplusplus > 201703l]: Replace all overloads with a single function
2847 using uses_allocator_construction_args.
2848 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: New
2849 test.
2850 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
2851
53ea0887 28522019-02-27 Jonathan Wakely <jwakely@redhat.com>
2853
2854 PR libstdc++/89466
2855 * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
2856 stylesheet directories before check for xsltproc. Try to use
2857 xmlcatalog to find local stylesheet directory before trying hardcoded
2858 paths. Add path used by suse to hardcoded paths. Adjust xsltproc
2859 check to look for the same stylesheet as doc/Makefile.am uses. Don't
2860 use xsltproc if xmlcatalog fails to find a local stylesheet.
2861 * configure.ac: Check for xmlcatalog.
2862 * Makefile.in: Regenerate.
2863 * configure: Likewise.
2864 * doc/Makefile.in: Likewise.
2865 * include/Makefile.in: Likewise.
2866 * libsupc++/Makefile.in: Likewise.
2867 * po/Makefile.in: Likewise.
2868 * python/Makefile.in: Likewise.
2869 * src/Makefile.in: Likewise.
2870 * src/c++11/Makefile.in: Likewise.
2871 * src/c++17/Makefile.in: Likewise.
2872 * src/c++98/Makefile.in: Likewise.
2873 * src/filesystem/Makefile.in: Likewise.
2874 * testsuite/Makefile.in: Likewise.
2875
72ebb7e8 28762019-02-26 Jonathan Wakely <jwakely@redhat.com>
2877
a7f2f1b1 2878 PR libstdc++/89477
2879 * include/bits/alloc_traits.h (_RequireNotAllocator): New helper for
2880 container deduction guides.
2881 * include/bits/hashtable.h (_RequireNotAllocatorOrIntegral): Likewise.
2882 * include/bits/stl_map.h (map): Use _RequireNotAllocator to constrain
2883 parameters in deduction guides.
2884 * include/bits/stl_multimap.h (multimap): Likewise.
2885 * include/bits/stl_multiset.h (multiset): Likewise.
2886 * include/bits/stl_queue.h (queue, priority_queue): Likewise.
2887 * include/bits/stl_set.h (set): Likewise.
2888 * include/bits/stl_stack.h (stack): Likewise.
2889 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
2890 use _RequireNotAllocator and _RequireNotAllocatorOrIntegral to
2891 constrain parameters in deduction guides.
2892 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
2893 Likewise.
2894 * testsuite/23_containers/map/cons/deduction.cc: Test additional
2895 deduction cases.
2896 * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
2897 * testsuite/23_containers/set/cons/deduction.cc: Likewise.
2898 * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
2899 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
2900 Likewise.
2901 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
2902 Likewise.
2903 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
2904
72ebb7e8 2905 PR libstdc++/89416
2906 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Change
2907 to class template and partial specialization using void_t.
2908 (__is_copy_insertable, __is_move_insertable): Adjust base class.
2909
c9f61a64 29102019-02-24 Jonathan Wakely <jwakely@redhat.com>
2911
2912 PR libstdc++/89416
2913 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
2914 copy and move members public.
2915
61e2d6f7 29162019-02-23 Jonathan Wakely <jwakely@redhat.com>
2917
87798f3f 2918 * include/std/type_traits (__underlying_type_impl): New helper to
2919 make underlying_type SFINAE-friendly.
2920 (underlying_type): Derive from __underlying_type_impl.
2921 * testsuite/20_util/underlying_type/requirements/typedefs-3.cc: New
2922 test.
2923
61e2d6f7 2924 PR libstdc++/89446
2925 * include/bits/char_traits.h (__constant_char_array): Check index is
2926 in range before dereferencing.
2927 (char_traits<char>::compare, char_traits<char>::find)
2928 (char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
2929 immediately if n is zero.
2930 (char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
2931 Remove workarounds for PR 67026.
2932 * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
2933 New test.
2934 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
2935 New test.
2936
90a443b3 29372019-02-22 Eric Botcazou <ebotcazou@adacore.com>
2938
2939 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
2940 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
2941
98485ce3 29422019-02-22 Jakub Jelinek <jakub@redhat.com>
2943
2944 PR libstdc++/89402
2945 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
2946 type to std::size_t and argument to type to long double.
2947
26b4fc38 29482019-02-22 Eric Botcazou <ebotcazou@adacore.com>
2949
2950 * configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
2951 * config/abi/post/sparc64-linux-gnu: New directory.
2952 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
2953 * config/abi/post/sparc64-linux-gnu/32: New directory.
2954 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.
2955
4f847a8e 29562019-02-21 Jonathan Wakely <jwakely@redhat.com>
2957
2958 * testsuite/29_atomics/headers/atomic/types_std_c++20.cc: New test.
2959 * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: New
2960 test.
2961
aad651b3 29622019-02-22 Tom Honermann <tom@honermann.net>
2963
2964 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
2965 printers for u8string and u8string_view.
2966
c783b3cc 29672019-02-22 Tom Honermann <tom@honermann.net>
2968
2969 * testsuite/18_support/byte/ops.cc: Validate
2970 std::to_integer<char8_t>, std::to_integer<char16_t>, and
2971 std::to_integer<char32_t>.
2972 * testsuite/18_support/numeric_limits/dr559.cc: Validate
2973 std::numeric_limits<char8_t>.
2974 * testsuite/18_support/numeric_limits/lowest.cc: Validate
2975 std::numeric_limits<char8_t>::lowest().
2976 * testsuite/18_support/numeric_limits/max_digits10.cc: Validate
2977 std::numeric_limits<char8_t>::max_digits10.
2978 * testsuite/18_support/type_info/fundamental.cc: Validate
2979 typeinfo for char8_t.
2980 * testsuite/20_util/from_chars/1_c++20_neg.cc: New test, validating
2981 std::from_chars with char8_t.
2982 * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
2983 Validate explicit instantiation of std::hash<char8_t>.
2984 * testsuite/20_util/is_integral/value.cc: Validate
2985 std::is_integral<char8_t>.
2986 * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
2987 Validate std::make_signed<char8_t>.
2988 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
2989 Validate u8string construction from char8_t sources.
2990 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Validate
2991 std::pmr::u8string.
2992 * testsuite/21_strings/basic_string_view/operations/compare/
2993 char/70483.cc: Validate substr operations on u8string_view.
2994 * testsuite/21_strings/basic_string_view/typedefs.cc: Validate that
2995 the u8string_view typedef is defined.
2996 * testsuite/21_strings/char_traits/requirements/
2997 constexpr_functions.cc: Validate char_traits<char8_t> constexpr
2998 member functions.
2999 * testsuite/21_strings/char_traits/requirements/
3000 constexpr_functions_c++17.cc: Validate char_traits<char8_t> C++17
3001 constexpr member functions.
3002 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Validate
3003 that the u8string typedef is defined.
3004 * testsuite/22_locale/locale/cons/unicode.cc: Validate the presence
3005 of the std::codecvt<char16_t, char8_t, std::mbstate_t> and
3006 std::codecvt<char32_t, char8_t, std::mbstate_t> facets.
3007 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Update line
3008 numbers.
3009 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
3010 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
3011 Likewise.
3012 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
3013 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
3014 Validate std::atomic<char8_t>::is_always_lock_free
3015 * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
3016 Update line numbers.
3017 * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
3018 Likewise.
3019 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
3020 Likewise.
3021 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
3022 Validate std::experimental::pmr::u8string.
3023 * testsuite/experimental/string_view/typedefs.cc: Validate that the
3024 u8string_view typedef is defined.
3025 * testsuite/util/testsuite_common_types.h: Add char8_t, char16_t and
3026 char32_t to the typelists.
3027
ef96a935 30282019-02-22 Tom Honermann <tom@honermann.net>
3029
3030 * include/ext/typelist.h: Constrain a partial specialization of
3031 typelist::detail::append_ to only match chain<T1,T2>.
3032
d373b606 30332019-02-21 Jonathan Wakely <jwakely@redhat.com>
3034
3035 PR libstdc++/89416
3036 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace
3037 class template with class. Replace move and copy member types with
3038 member alias templates, so they are only instantiated when needed.
3039 (__is_copy_insertable, __is_move_insertable): Adjust base class.
3040 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable
3041 test for C++11/14/17 as well.
3042 * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New
3043 test.
3044
25395ee8 30452019-02-20 Jakub Jelinek <jakub@redhat.com>
3046
3047 PR libstdc++/89402
3048 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
3049 _GLIBCXX_PURE to the alias declaration.
3050
affcb65b 30512019-02-19 Jonathan Wakely <jwakely@redhat.com>
3052
3053 * testsuite/21_strings/basic_string/literals/types.cc
3054 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
3055 * testsuite/21_strings/basic_string/literals/values.cc
3056 [_GLIBCXX_USE_CHAR8_T]: Likewise.
3057 * testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
3058 potentially having different type.
3059 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
3060 * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
3061 to char.
3062 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
3063 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
3064 * testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
3065 string literals only using basic character set.
3066 * testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
3067 u8 literals to char.
3068 * testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
3069 Test ATOMIC_CHAR8_T_LOCK_FREE.
3070 Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
3071 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
3072 [_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
3073 * testsuite/experimental/string_view/literals/types.cc
3074 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
3075 literal.
3076 * testsuite/experimental/string_view/literals/values.cc
3077 [_GLIBCXX_USE_CHAR8_T]: Likewise.
3078
4acc5060 30792019-02-19 Tom Honermann <tom@honermann.net>
3080
3081 * testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
3082 from char16_32_t.cc; validates numeric_limits<char8_t>.
3083 * testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
3084 test cloned from types.cc; validates operator""s for char8_t
3085 returns u8string.
3086 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
3087 test cloned from values.cc; validates construction and comparison
3088 of u8string values.
3089 * testsuite/21_strings/basic_string/requirements/
3090 /explicit_instantiation/char8_t/1.cc: New test cloned from
3091 char16_t/1.cc; validates explicit instantiation of
3092 basic_string<char8_t>.
3093 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
3094 New test cloned from types.cc; validates operator""sv for char8_t
3095 returns u8string_view.
3096 * testsuite/21_strings/basic_string_view/literals/
3097 values-char8_t.cc: New test cloned from values.cc; validates
3098 construction and comparison of u8string_view values.
3099 * testsuite/21_strings/basic_string_view/requirements/
3100 explicit_instantiation/char8_t/1.cc: New test cloned from
3101 char16_t/1.cc; validates explicit instantiation of
3102 basic_string_view<char8_t>.
3103 * testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
3104 New test cloned from char16_t/65049.cc; validates that
3105 char_traits<char8_t> is not vulnerable to the concerns in PR65049.
3106 * testsuite/21_strings/char_traits/requirements/char8_t/
3107 typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
3108 that char_traits<char8_t> member typedefs are present and correct.
3109 * testsuite/21_strings/char_traits/requirements/
3110 explicit_instantiation/char8_t/1.cc: New test cloned from
3111 char16_t/1.cc; validates explicit instantiation of
3112 char_traits<char8_t>.
3113 * testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
3114 from char16_t.cc: validates
3115 codecvt<char16_t, char8_t, mbstate_t>.
3116 * testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
3117 from char32_t.cc: validates
3118 codecvt<char32_t, char8_t, mbstate_t>.
3119 * testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
3120 utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
3121 codecvt<char32_t, char8_t, std::mbstate_t>.
3122 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
3123 test cloned from string.cc; validates filesystem::path construction
3124 from char8_t input.
3125 * testsuite/experimental/feat-char8_t.cc: New test; validates that
3126 the __cpp_lib_char8_t feature test macro is defined with the
3127 correct value.
3128 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
3129 New test cloned from string.cc; validates filesystem::path
3130 construction from char8_t input.
3131 * testsuite/experimental/string_view/literals/types-char8_t.cc: New
3132 test cloned from types.cc; validates operator""sv for char8_t
3133 returns u8string_view.
3134 * testsuite/experimental/string_view/literals/values-char8_t.cc:
3135 New test cloned from values.cc; validates construction and
3136 comparison of u8string_view values.
3137 * testsuite/experimental/string_view/requirements/
3138 explicit_instantiation/char8_t/1.cc: New test cloned from
3139 char16_t/1.cc; validates explicit instantiation of
3140 basic_string_view<char8_t>.
3141 * testsuite/ext/char8_t/atomic-1.cc: New test; validates that
3142 ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
3143 enabled.
3144
25694c85 31452019-02-19 Tom Honermann <tom@honermann.net>
3146
3147 P0482R5 char8_t: Standard library support
3148 * config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
3149 typeinfo symbols for char8_t.
3150 * config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
3151 (GLIBCXX_3.4.26): Add symbols for specializations of
3152 numeric_limits and codecvt that involve char8_t.
3153 (CXXABI_1.3.12): Add typeinfo symbols for char8_t.
3154 * include/bits/atomic_base.h: Add atomic_char8_t.
3155 * include/bits/basic_string.h: Add std::hash<u8string> and
3156 operator""s(const char8_t*, size_t).
3157 * include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
3158 __cpp_lib_char8_t.
3159 * include/bits/char_traits.h: Add char_traits<char8_t>.
3160 * include/bits/codecvt.h: Add
3161 codecvt<char16_t, char8_t, mbstate_t>,
3162 codecvt<char32_t, char8_t, mbstate_t>,
3163 codecvt_byname<char16_t, char8_t, mbstate_t>, and
3164 codecvt_byname<char32_t, char8_t, mbstate_t>.
3165 * include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
3166 recognize char8_t as an integral type.
3167 * include/bits/fs_path.h: (path::__is_encoded_char): Recognize
3168 char8_t.
3169 (path::u8string): Return std::u8string when char8_t support is
3170 enabled.
3171 (path::generic_u8string): Likewise.
3172 (path::_S_convert): Handle conversion from char8_t input.
3173 (path::_S_str_convert): Likewise.
3174 * include/bits/functional_hash.h: Add hash<char8_t>.
3175 * include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
3176 char8_t.
3177 * include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
3178 for new char8_t specializations.
3179 * include/bits/localefwd.h: Add missing declarations of
3180 codecvt<char16_t, char, mbstate_t> and
3181 codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
3182 codecvt<char16_t, char8_t, mbstate_t> and
3183 codecvt<char32_t, char8_t, mbstate_t>.
3184 * include/bits/postypes.h: Add u8streampos
3185 * include/bits/stringfwd.h: Add declarations of
3186 char_traits<char8_t> and u8string.
3187 * include/c_global/cstddef: Add __byte_operand<char8_t>.
3188 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
3189 Recognize char8_t.
3190 (path::u8string): Return std::u8string when char8_t support is
3191 enabled.
3192 (path::generic_u8string): Likewise.
3193 (path::_S_convert): Handle conversion from char8_t input.
3194 (path::_S_str_convert): Likewise.
3195 * include/experimental/string: Add u8string.
3196 * include/experimental/string_view: Add u8string_view,
3197 hash<experimental::u8string_view>, and
3198 operator""sv(const char8_t*, size_t).
3199 * include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
3200 * include/std/charconv (__is_int_to_chars_type): Recognize char8_t
3201 as a character type.
3202 * include/std/limits: Add numeric_limits<char8_t>.
3203 * include/std/string_view: Add u8string_view,
3204 hash<experimental::u8string_view>, and
3205 operator""sv(const char8_t*, size_t).
3206 * include/std/type_traits: Add __is_integral_helper<char8_t>,
3207 __make_unsigned<char8_t>, and __make_signed<char8_t>.
3208 * libsupc++/atomic_lockfree_defines.h: Define
3209 ATOMIC_CHAR8_T_LOCK_FREE.
3210 * src/c++11/Makefile.am: Compile with -fchar8_t when compiling
3211 codecvt.cc and limits.cc so that char8_t specializations of
3212 numeric_limits and codecvt and emitted.
3213 * src/c++11/Makefile.in: Likewise.
3214 * src/c++11/codecvt.cc: Define members of
3215 codecvt<char16_t, char8_t, mbstate_t>,
3216 codecvt<char32_t, char8_t, mbstate_t>,
3217 codecvt_byname<char16_t, char8_t, mbstate_t>, and
3218 codecvt_byname<char32_t, char8_t, mbstate_t>.
3219 * src/c++11/limits.cc: Define members of
3220 numeric_limits<char8_t>.
3221 * src/c++98/Makefile.am: Compile with -fchar8_t when compiling
3222 locale_init.cc and localename.cc.
3223 * src/c++98/Makefile.in: Likewise.
3224 * src/c++98/locale_init.cc: Add initialization for the
3225 codecvt<char16_t, char8_t, mbstate_t> and
3226 codecvt<char32_t, char8_t, mbstate_t> facets.
3227 * src/c++98/localename.cc: Likewise.
3228 * testsuite/util/testsuite_abi.cc: Validate ABI bump.
3229
140615bb 32302019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
3231
3232 * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
3233 * 27_io/filesystem/operations/resize_file.cc: Likewise.
3234 * 27_io/filesystem/path/generation/normal2.cc: Likewise.
3235
c677a9d7 32362019-02-14 Jonathan Wakely <jwakely@redhat.com>
3237
1bbfe9f8 3238 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
3239 * doc/html/*: Regenerate.
3240
b24f00b1 3241 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
3242 * doc/html/*: Regenerate.
3243
a3d1baa9 3244 * doc/xml/manual/intro.xml: Document LWG 2586 status.
3245 * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
3246 allocator type in is_constructible checks.
3247 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
3248 * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
3249 * testsuite/20_util/tuple/cons/allocators.cc: Add test using
3250 problematic type from LWG 2586 discussion.
3251 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
3252 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
3253
99d130bf 3254 * configure.ac: Check for C11 timespec_get function.
3255 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
3256 (openbsd): Likewise
3257 * config.h.in: Regenerate.
3258 * configure: Regenerate.
3259 * include/c_global/ctime (timespec, timespec_get): Add to namespace
3260 std for C++17 and up.
3261
48772ec3 3262 * doc/xml/manual/intro.xml: Document LWG 2537 status.
3263 * include/bits/stl_queue.h
3264 (priority_queue(const Compare&, const Container&, const Alloc&))
3265 (priority_queue(const Compare&, Container&&, const Alloc&)): Call
3266 make_heap.
3267 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
3268
ee32dd64 3269 * doc/xml/manual/intro.xml: Document LWG 2566 status.
3270 * include/bits/stl_queue.h (queue, priority_queue): Add static
3271 assertions to enforce LWG 2566 requirement on value_type.
3272 * include/bits/stl_stack.h (stack): Likewise.
3273
9724de38 3274 PR middle-end/89303
3275 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
3276
c677a9d7 3277 * doc/xml/manual/intro.xml: Document LWG 2735 status.
3278 * include/bits/std_abs.h: Add comment about LWG 2735.
3279 * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
3280
4194f872 32812019-02-13 Jonathan Wakely <jwakely@redhat.com>
3282
3283 PR libstdc++/89345
3284 * include/std/version [__cpp_impl_destroying_delete]
3285 (__cpp_lib_destroying_delete): Only define for C++2a and later.
3286 * libsupc++/new [__cpp_impl_destroying_delete]
3287 (__cpp_lib_destroying_delete): Likewise.
3288 (destroying_delete_t, destroying_delete): Likewise, but define even
3289 when __cpp_impl_destroying_delete is not defined.
3290 * testsuite/18_support/destroying_delete.cc: New test.
3291
aaacaee2 32922019-02-11 Jonathan Wakely <jwakely@redhat.com>
3293
3294 PR libstdc++/89023
3295 * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
3296 * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
3297 * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
3298 * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
3299
5256b0dd 33002019-02-09 Jonathan Wakely <jwakely@redhat.com>
3301
3302 PR libstdc++/71044
3303 * include/bits/fs_path.h (path::has_root_name)
3304 (path::has_root_directory, path::has_root_path)
3305 (path::has_relative_path, path::has_parent_path)
3306 (path::has_filename, path::has_stem, path::has_extension)
3307 (path::is_absolute, path::is_relative, path::_M_find_extension): Add
3308 noexcept.
3309 * src/c++17/fs_path.cc (path::has_root_name)
3310 (path::has_root_directory, path::has_root_path)
3311 (path::has_relative_path, path::has_parent_path)
3312 (path::has_filename, path::_M_find_extension): Add noexcept.
3313
e32f625e 33142019-02-06 Jonathan Wakely <jwakely@redhat.com>
3315
3316 PR libstdc++/89102 (partial)
3317 * include/std/type_traits (common_type<>): Define.
3318 (common_type<T>): Derive from common_type<T, T>.
3319 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
3320 Test zero-length template argument list.
3321 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
3322 Test additional single argument cases.
3323 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
3324 Adjust expected error.
3325
b03489db 33262019-02-05 Jonathan Wakely <jwakely@redhat.com>
3327
e89e4fec 3328 PR libstdc++/89128
3329 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
3330 guides.
3331 * include/bits/stl_stack.h (stack): Likewise.
3332 * testsuite/23_containers/priority_queue/deduction.cc: New test.
3333 * testsuite/23_containers/queue/deduction.cc: New test.
3334 * testsuite/23_containers/stack/deduction.cc: New test.
3335
b640dd11 3336 PR libstdc++/89194
3337 * include/std/type_traits (__is_convertible_helper)
3338 (__is_convertible_helper<_From, _To, false>): Revert changes to
3339 support is_nothrow_convertible.
3340 (__is_nt_convertible_helper): New helper.
3341 (is_nothrow_convertible): Use __is_nt_convertible_helper.
3342
74c88c5f 3343 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
3344 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
3345
eca5e8d4 3346 PR libstdc++/89130
3347 * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
3348 __is_alloc_insertable_impl. Replace single type member with two
3349 members, one for each of copy and move insertable.
3350 (__is_move_insertable): New trait for internal use.
3351 * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
3352 (vector::_S_nothrow_relocate(true_type)): New functions to
3353 conditionally check if __relocate_a can throw.
3354 (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
3355 on __is_move_insertable.
3356 (vector::_S_do_relocate): New overloaded functions to conditionally
3357 call __relocate_a.
3358 (vector::_S_relocate): New function that dispatches to _S_do_relocate
3359 based on _S_use_relocate.
3360 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
3361 (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
3362 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
3363
b03489db 3364 PR libstdc++/89090
3365 * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
3366 parameter unnamed. Add message to static assertion.
3367 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
3368 (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
3369 in C++11 code.
3370
71625a15 33712019-02-05 Marc Glisse <marc.glisse@inria.fr>
3372
3373 PR libstdc++/87106
3374 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
3375 Rename...
3376 (__is_bitwise_relocatable): ... to this.
3377 (__relocate_a_1): Adapt.
3378 * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
3379 (__is_bitwise_relocatable): ... to this.
3380
e7b22e58 33812019-01-30 Jonathan Wakely <jwakely@redhat.com>
3382
3383 PR libstdc++/89117
3384 * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
3385 final component as well as from _M_pathname. Append the dot using
3386 operator+= instead of only to _M_pathname.
3387 (path::_M_find_extension): Reformat slightly.
3388 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
3389 Add more test cases.
3390
dae923a7 33912019-01-30 Ulrich Drepper <drepper@redhat.com>
3392
3393 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
3394
710397ad 33952019-01-29 Jonathan Wakely <jwakely@redhat.com>
3396
5efc4356 3397 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
3398 constexpr specifiers from arg and proj.
3399
5f15e718 3400 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
3401 __shared_ptr instantiations used by gcc4-compatible ABI.
3402
307e86fc 3403 * include/experimental/forward_list (experimental::erase): Qualify
3404 call to erase_if.
3405 * include/experimental/list (experimental::erase): Likewise.
3406 * include/std/forward_list (std::erase): Likewise.
3407 * include/std/list (std::erase): Likewise.
3408
38129d1a 3409 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
3410 C++2a.
3411 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
3412 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
3413 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
3414 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
3415 * testsuite/ext/array_allocator/26875.cc: Likewise.
3416 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
3417 * testsuite/util/replacement_memory_operators.h: Likewise.
3418 * testsuite/util/testsuite_allocator.h: Likewise.
3419
710397ad 3420 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
3421 normal mode vector, even for debug mode.
3422 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
3423 Define alias template for normal mode vector.
3424
70f71249 34252019-01-28 Jonathan Wakely <jwakely@redhat.com>
3426
3427 PR libstdc++/68737
3428 * config/locale/generic/c_locale.h (__convert_from_v)
3429 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
3430 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
3431 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
3432 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
3433
f1074115 34342019-01-24 Jonathan Wakely <jwakely@redhat.com>
3435
4bc4fd90 3436 PR libstdc++/88840
3437 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
3438 data member with static member function _S_use_relocate().
3439 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
3440 (vector::_M_default_append): Use _S_use_relocate() instead of
3441 __use_relocate.
3442
f1074115 3443 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
3444 sign of results.
3445
1c4657a3 34462019-01-22 Jonathan Wakely <jwakely@redhat.com>
3447
3448 PR libstdc++/88740
3449 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
3450 write to stderr instead of using printf.
3451
dafe8c59 34522019-01-21 Jakub Jelinek <jakub@redhat.com>
3453
3454 PR libstdc++/86590
3455 * include/bits/char_traits.h (__constant_string_p,
3456 __constant_char_array_p): Use __builtin_is_constant_evaluated if
3457 available.
3458
eaf966f3 34592019-01-20 Ulrich Drepper <drepper@redhat.com>
3460
3461 Implement C++20 P0600r1.
3462 * include/backward/hash_map: Add nodiscard attribute to empty.
3463 * include/backward/hash_set: Likewise.
3464 * backward/hashtable.h: Likewise.
3465 * include/bits/basic_string.h: Likewise.
3466 * include/bits/forward_list.h: Likewise.
3467 * include/bits/hashtable.h: Likewise.
3468 * include/bits/regex.h: Likewise.
3469 * include/bits/stl_deque.h: Likewise.
3470 * include/bits/stl_list.h: Likewise.
3471 * include/bits/stl_map.h: Likewise.
3472 * include/bits/stl_multimap.h: Likewise.
3473 * include/bits/stl_multiset.h: Likewise.
3474 * include/bits/stl_queue.h: Likewise.
3475 * include/bits/stl_set.h: Likewise.
3476 * include/bits/stl_stack.h: Likewise.
3477 * include/bits/stl_tree.h: Likewise.
3478 * include/bits/stl_vector.h: Likewise.
3479 * include/bits/unordered_map.h: Likewise.
3480 * include/bits/unordered_set.h: Likewise.
3481 * include/debug/array: Likewise.
3482 * include/experimental/any: Likewise.
3483 * include/experimental/bits/fs_path.h: Likewise.
3484 * include/experimental/internet: Likewise.
3485 * include/experimental/string_view: Likewise.
3486 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
3487 Likewise.
3488 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
3489 Likewise.
3490 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
3491 Likewise.
3492 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
3493 Likewise.
3494 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
3495 Likewise.
3496 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
3497 Likewise.
3498 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
3499 Likewise.
3500 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
3501 Likewise.
3502 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
3503 info_fn_imps.hpp: Likewise.
3504 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
3505 left_child_next_sibling_heap_.hpp: Likewise.
3506 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
3507 Likewise.
3508 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
3509 Likewise.
3510 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
3511 Likewise.
3512 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
3513 Likewise.
3514 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
3515 Likewise.
3516 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
3517 Likewise.
3518 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
3519 Likewise.
3520 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
3521 * include/ext/pb_ds/trie_policy.hpp: Likewise.
3522 * include/ext/rope: Likewise.
3523 * include/ext/slist: Likewise.
3524 * include/ext/vstring.h: Likewise.
3525 * include/profile/array: Likewise.
3526 * include/std/array: Likewise.
3527 * include/tr1/array: Likewise.
3528 * include/tr1/hashtable.h: Likewise.
3529 * include/tr1/regex: Likewise.
3530 * include/tr2/dynamic_bitset: Likewise.
3531 * include/bits/alloc_traits.h: Add nodiscard attribute to
3532 allocate.
3533 * include/experimental/memory_resource: Likewise.
3534 * include/ext/alloc_traits.h: Likewise.
3535 * include/ext/array_allocator.h: Likewise.
3536 * include/ext/bitmap_allocator.h: Likewise.
3537 * include/ext/debug_allocator.h: Likewise.
3538 * include/ext/extptr_allocator.h: Likewise.
3539 * include/ext/mt_allocator.h: Likewise.
3540 * include/ext/new_allocator.h: Likewise.
3541 * include/ext/pool_allocator.h: Likewise.
3542 * include/ext/throw_allocator.h: Likewise.
3543 * include/std/scoped_allocator: Likewise.
3544 * libsupc++/eh_alloc.cc: Likewise.
3545 * include/std/future: Add nodiscard attribute to async.
3546 * libsupc++/new: Add nodiscard attribute to new.
3547
3c1c2a8c 35482019-01-18 Jonathan Wakely <jwakely@redhat.com>
3549
3550 PR libstdc++/87514
3551 PR libstdc++/87520
3552 PR libstdc++/88782
3553 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
3554 * include/bits/shared_ptr.h
3555 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
3556 (allocate_shared): Change to use new tag type.
3557 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
3558 Declare new member function.
3559 (_Sp_alloc_shared_tag): Define new type.
3560 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
3561 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
3562 _Sp_make_shared_tag::_S_eq to check type_info.
3563 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
3564 Constrain to prevent being called with _Sp_alloc_shared_tag.
3565 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
3566 Replace constructor with ...
3567 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
3568 reference parameter so address of the new object can be returned to
3569 the caller. Obtain the allocator from the tag type.
3570 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
3571 constructor with ...
3572 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
3573 to the __shared_count constructor.
3574 (__allocate_shared): Change to use new tag type.
3575 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
3576
21a962b2 35772019-01-17 Jonathan Wakely <jwakely@redhat.com>
3578
464ac146 3579 * src/c++17/fs_ops.cc
3580 (equivalent(const path&, const path&, error_code&))
3581 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
3582 compare files instead of relying on incomplete info returned by stat.
3583
2987a93d 3584 PR libstdc++/88884
3585 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
3586 if the path is already absolute.
3587 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
3588 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
3589
21a962b2 3590 PR libstdc++/88881
3591 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
3592 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
3593 of filesystem::exists.
3594 (create_directories(const path&, error_code&)): Add assertions.
3595 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
3596 Add workaround for bug in _wstat for paths with trailing slash.
3597 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
3598 for expected behaviour on mingw.
3599 * testsuite/experimental/filesystem/operations/create_directories.cc:
3600 Likewise.
3601 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
3602 "TMP" instead of "TMPDIR" and clean environment before each test. Do
3603 not test permissions on mingw targets.
3604
93478c9f 36052019-01-16 Jonathan Wakely <jwakely@redhat.com>
3606
3607 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
3608 constructors and open members taking wide strings. Fix patterns for
3609 filesystem::path members to match wstring_view parameters. Add
3610 exports for shared_ptr members used by directory iterators.
3611 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
3612 error code parameter if the file doesn't exist.
3613 * src/filesystem/ops.cc (remove(const path&, error_code&)):
3614 Likewise.
3615 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
3616 values for mingw targets, where "/" is not an absolute path. Do not
3617 test symlinks on mingw targets.
3618 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
3619 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
3620 on mingw targets.
3621 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
3622 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
3623 that each component of the path is created.
3624 * testsuite/experimental/filesystem/operations/create_directories.cc:
3625 Likewise.
3626 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
3627 permissions on mingw targets.
3628 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
3629 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
3630 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
3631 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
3632 mingw targets.
3633 * testsuite/experimental/filesystem/operations/permissions.cc:
3634 Likewise.
3635 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
3636 symlinks or permissions on mingw targets.
3637 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
3638 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
3639 symlinks on mingw targets.
3640 * testsuite/experimental/filesystem/operations/remove_all.cc:
3641 Likewise.
3642 * testsuite/27_io/filesystem/operations/status.cc: Do not test
3643 permissions on mingw targets.
3644 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
3645 test symlinks on mingw targets.
3646 * testsuite/experimental/filesystem/operations/space.cc: Fix test
3647 for mingw targets.
3648
af93b844 36492019-02-14 Ulrich Drepper <drepper@redhat.com>
3650
3651 PR libstdc++/88738
3652 Warn about unused comparisons of shared_ptr/unique_ptr
3653 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
3654 * include/bits/shared_ptr.h: Use it for operator ==, !=,
3655 <, <=, >, >= for shared_ptr.
3656 * include/bits/unique_ptr.h: Likewise for unique_ptr.
3657
8793c0de 36582019-01-15 Jonathan Wakely <jwakely@redhat.com>
3659
afa61572 3660 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
3661 as 201611L, because P0497R0 changes are supported.
3662 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
3663
feb89906 3664 * include/bits/erase_if.h [__cplusplus > 201703L]
3665 (__cpp_lib_erase_if): Only define for C++2a.
3666 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
3667 (__cpp_lib_null_iterators): Define.
3668 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
3669 (__cpp_lib_null_iterators): Define.
3670 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
3671
d253bcb1 3672 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
3673 status.
3674 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
3675 Define.
3676 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
3677 changes are supported.
3678 * include/std/optional (__cpp_lib_optional): Likewise.
3679 * include/std/variant (__cpp_lib_variant): Likewise.
3680 * include/std/version [!__STRICT_ANSI__]
3681 (__cpp_lib_uncaught_exceptions): Define as long integer.
3682 [__cplusplus >= 201703L] (__cpp_lib_any)
3683 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
3684 (__cpp_lib_variant): Define for C++17.
3685 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
3686 as long integer.
3687 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
3688 integer.
3689
8793c0de 3690 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
3691
a8cd4b2b 36922019-01-12 Jonathan Wakely <jwakely@redhat.com>
3693
3694 PR libstdc++/88811
3695 PR libstdc++/83306
3696 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
3697 before second path.
3698 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
3699 test.
3700
a5b1332c 37012019-01-11 Jonathan Wakely <jwakely@redhat.com>
3702
656ac8b7 3703 * doc/xml/manual/intro.xml: Include new section.
3704 * doc/xml/manual/status_cxx2017.xml: Document more
3705 implementation-defined properties of the library.
3706 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
3707 * doc/html/*: Regenerate.
3708
f5480b8c 3709 * include/bits/refwrap.h [__cplusplus > 201703L]
3710 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
3711 (_Reference_wrapper_base_memfun): Do not define for C++2a.
3712 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
3713 for C++2a.
3714 (reference_wrapper::operator()): Add static assertion.
3715 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
3716
36496c4d 3717 * include/std/chrono (duration_values::zero(), duration_values::min())
3718 (duration_values::max()): Add noexcept.
3719 (duration::zero(), duration::min(), duration::max()): Likewise.
3720 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
3721 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
3722 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
3723
a5b1332c 3724 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
3725
d9de68bc 37262019-01-11 Jakub Jelinek <jakub@redhat.com>
3727
3728 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
3729 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
3730
beb370cb 37312019-01-11 Jonathan Wakely <jwakely@redhat.com>
3732
1d628fd4 3733 PR libstdc++/88802
3734 * include/bits/functional_hash.h (hash<nullptr_t>): Define
3735 specialization for C++17 (P0513R0, LWG 2817).
3736 * testsuite/20_util/hash/nullptr.cc: New test.
3737
a18b3766 3738 PR libstdc++/88125
3739 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
3740 pattern for std::basic_stringbuf::str().
3741
beb370cb 3742 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
3743 basic_ostream::operator<< patterns.
3744
cbbb35ec 37452019-01-10 Jonathan Wakely <jwakely@redhat.com>
3746
1715824b 3747 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
3748 test failures on targets with 32-bit time_t.
3749
f5529091 3750 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
3751 * include/std/deque: Likewise.
3752 * include/std/forward_list: Likewise.
3753 * include/std/list: Likewise.
3754 * include/std/string: Likewise.
3755 * include/std/vector: Likewise.
3756 * include/std/version: Likewise.
3757 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
3758 * testsuite/23_containers/deque/erasure.cc: Likewise.
3759 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
3760 * testsuite/23_containers/list/erasure.cc: Likewise.
3761 * testsuite/23_containers/map/erasure.cc: Likewise.
3762 * testsuite/23_containers/set/erasure.cc: Likewise.
3763 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
3764 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
3765 * testsuite/23_containers/vector/erasure.cc: Likewise.
3766
cbbb35ec 3767 * include/experimental/internet [AI_NUMERICSERV]
3768 (resolver_base::numeric_service): Define conditionally.
3769 * testsuite/experimental/net/internet/resolver/base.cc: Test it
3770 conditionally.
3771 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
3772 Likewise.
3773
ac9a8436 37742019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
3775 Jonathan Wakely <jwakely@redhat.com>
3776
3777 Implement LWG 2221
3778 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
3779 (GLIBCXX_3.4.26): Add new exports.
3780 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
3781 correct list of sources.
3782 * include/Makefile.in: Regenerate.
3783 * include/std/ostream (operator<<(nullptr_t)): New member function.
3784 * src/c++17/ostream-inst.cc: New file.
3785 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
3786 test.
3787
5f027941 37882019-01-10 Jonathan Wakely <jwakely@redhat.com>
3789
3790 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
3791 of the source file containing the caller.
3792 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
3793 directories created by test.
3794 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
3795 Likewise.
3796 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3797 Likewise.
3798 * testsuite/experimental/filesystem/iterators/
3799 recursive_directory_iterator.cc: Likewise.
3800
3273d2e6 38012019-01-10 Jakub Jelinek <jakub@redhat.com>
3802
3803 PR tree-optimization/88775
3804 * include/bits/stl_function.h (greater<_Tp*>::operator(),
3805 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
3806 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
3807 instead of __builtin_constant_p if available. Don't bother with
3808 the pointer comparison in C++11 and earlier.
3809
f4d3c071 38102019-01-09 Sandra Loosemore <sandra@codesourcery.com>
3811
3812 PR other/16615
3813
3814 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
3815 with "cannot".
3816
8eba10af 38172019-01-09 Jonathan Wakely <jwakely@redhat.com>
3818
6a6ade9f 3819 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
3820 for filesystem::path. Give variables more distinctive names.
3821
41cda271 3822 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
3823 member function to perform non-trivial assignment.
3824 (_Optional_payload_base::_M_move_assign): Likewise.
3825 (_Optional_payload<T, true, false, true>::operator=)
3826 (_Optional_payload<T, true, true, false>::operator=)
3827 (_Optional_payload<T, true, false, false>::operator=): Call
3828 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
3829
8eba10af 3830 PR libstdc++/88204
3831 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
3832 test std::complex<long double> if long double format is IBM128.
3833 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
3834 Likewise.
3835
64a50f48 38362019-01-08 Jonathan Wakely <jwakely@redhat.com>
3837
73f3ad16 3838 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
3839 for old std::unique_ptr layout.
3840 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
3841 to become valueless. Add filesystem::path tests.
3842
58e897da 3843 PR libstdc++/87855
3844 * include/std/optional (_Optional_payload_base): New class template
3845 for common code hoisted from _Optional_payload specializations. Use
3846 a template for the union, to allow a partial specialization for
3847 types with non-trivial destructors. Add constructors for in-place
3848 initialization to the union.
3849 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
3850 to perform non-trivial copy construction, instead of relying on
3851 non-standard copy elision in a delegating constructor.
3852 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
3853 non-trivial move construction.
3854 (_Optional_payload): Derive from _Optional_payload_base and use it
3855 for everything except the non-trivial assignment operators, which are
3856 defined as needed.
3857 (_Optional_payload<false, C, M>): Derive from the specialization
3858 _Optional_payload<true, false, false> and add a destructor.
3859 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
3860 Forward to corresponding members of _Optional_payload.
3861 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
3862 Hoist common members from _Optional_base.
3863 (_Optional_base): Make all members and base class public.
3864 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
3865 _Optional_base_impl.
3866 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
3867 support for new std::optional layout.
3868 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
3869
64a50f48 3870 PR libstdc++/88066
3871 * include/bits/locale_conv.h: Use <> for includes not "".
3872 * include/ext/random: Likewise.
3873 * include/ext/vstring.h: Likewise.
3874
95b40931 38752019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3876
3877 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
3878 (GLIBCXX_3.4.21): Likewise.
3879
fa00ec77 38802019-01-08 Jonathan Wakely <jwakely@redhat.com>
3881
3882 PR libstdc++/88749
3883 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
3884 to match the one that controls whether utimbuf and utime are declared.
3885
3f304b2d 38862019-01-07 Jonathan Wakely <jwakely@redhat.com>
3887
fc6ac813 3888 PR libstdc++/87787
3889 * include/bits/char_traits.h (char_traits::move): Do not pass null
3890 pointers to memmove.
3891 * include/bits/locale_facets.h
3892 (ctype<char>::widen(const char*, const char*, char*)): Do not
3893 pass null pointers to memcpy.
3894 (ctype<char>::narrow(const char*, const char*, char, char*)):
3895 Likewise.
3896 (ctype<char>::do_widen(const char*, const char*, char*)):
3897 Likewise.
3898 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
3899 Likewise.
3900
bbc66c45 3901 * doc/xml/manual/spine.xml: Update copyright years.
3902 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
3903 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
3904 for C++17 filesystem library.
3905 * doc/html/*: Regenerate.
3906
3f304b2d 3907 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
3908 * config.h.in: Regenerate.
3909 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
3910 alphabetically and add missing entries for copy_symlink,
3911 hard_link_count, rename, and resize_file.
3912 * configure: Regenerate.
3913 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
3914 used unconditionally.
3915 * src/filesystem/ops-common.h (__gnu_posix::truncate)
3916 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
3917 supports truncating to zero length.
3918 * testsuite/27_io/filesystem/operations/all.cc: New test.
3919 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
3920
0ebb0980 39212019-01-06 Jonathan Wakely <jwakely@redhat.com>
3922
3935f409 3923 PR libstdc++/86756
3924 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
3925 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
3926 * config.h.in: Regenerate.
3927 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
3928 remaining std::filesystem types and functions.
3929 * configure: Regenerate.
3930 * src/c++17/Makefile.am: Add C++17 filesystem sources.
3931 * src/c++17/Makefile.in: Regenerate.
3932 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
3933 here, and change name of included file.
3934 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
3935 here, and change name of included file.
3936 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
3937 path to dir-common.h.
3938 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
3939 path to ops-common.h. Disable -Wunused-parameter warnings.
3940 (internal_file_clock): Define unconditionally.
3941 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
3942 define.
3943 (do_copy_file, do_space): Move definitions to ops.common.h.
3944 (copy, file_size, hard_link_count, last_write_time, space): Only
3945 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
3946 report an error.
3947 (last_write_time, read_symlink): Remove unused attributes from
3948 parameters.
3949 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
3950 * src/filesystem/Makefile.in: Regenerate.
3951 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
3952 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
3953 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
3954 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
3955 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
3956 dummy types and functions instead of using #error.
3957 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
3958 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
3959 in terms of stat.
3960 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
3961 (do_copy_file, do_space): Move definitions here from std-ops.cc.
3962 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
3963 to account for new namespace.
3964 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
3965 -lstdc++fs from dg-options.
3966 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
3967 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
3968 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
3969 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
3970 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
3971 Likewise.
3972 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
3973 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
3974 Likewise.
3975 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
3976 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
3977 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
3978 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
3979 * testsuite/27_io/filesystem/operations/create_directories.cc:
3980 Likewise.
3981 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
3982 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
3983 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
3984 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
3985 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
3986 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
3987 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
3988 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
3989 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
3990 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
3991 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
3992 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
3993 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
3994 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
3995 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
3996 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
3997 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
3998 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
3999 Likewise.
4000 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
4001
4002
c6e37a9f 4003 PR libstdc++/86756
4004 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
4005 typeinfo and vtables less greedy.
4006 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
4007 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
4008 * src/c++17/Makefile.in: Regenerate.
4009 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
4010 here, and change name of included file.
4011 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
4012 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
4013 from sources.
4014 * src/filesystem/Makefile.in: Regenerate.
4015 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
4016 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
4017 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
4018 from dg-options and remove dg-require-filesystem-ts.
4019 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
4020 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
4021 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
4022 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
4023 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
4024 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
4025 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
4026 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
4027 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
4028 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
4029 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
4030 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
4031 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
4032 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
4033 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
4034 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
4035 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
4036 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
4037 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
4038 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
4039 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
4040 Likewise.
4041 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
4042 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
4043 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
4044 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
4045 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
4046 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
4047 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
4048 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
4049 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
4050 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
4051 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
4052 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
4053 Likewise.
4054 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
4055 Likewise.
4056 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
4057 Likewise.
4058 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
4059 Likewise.
4060 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
4061 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
4062 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
4063 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
4064 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
4065 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
4066 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
4067 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
4068 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
4069 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
4070 Likewise.
4071 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
4072 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
4073 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
4074 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
4075 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
4076
8815ac91 4077 PR libstdc++/87431
4078 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
4079 Check is_trivially_copyable instead of is_scalar.
4080 (variant::emplace<N, Args>(Args&&...)): If construction of the new
4081 contained value can throw and its type is trivially copyable then
4082 construct into a temporary variant and move from it, to provide the
4083 strong exception safety guarantee.
4084 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
4085 Likewise.
4086 * testsuite/20_util/variant/87431.cc: New test.
4087 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
4088 conversion causes valueless state.
4089
0ebb0980 4090 PR libstdc++/88607
4091 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
4092 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
4093 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
4094 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
4095 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
4096
adc6beee 40972019-01-05 Jonathan Wakely <jwakely@redhat.com>
4098
4099 * include/bits/fs_fwd.h (__file_clock): Define new clock.
4100 (file_time_type): Redefine in terms of __file_clock.
4101 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
4102 overflow.
4103 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
4104 internal linkage.
4105 (internal_file_lock): New helper type for accessing __file_clock.
4106 (do_copy_file): Use internal_file_lock to convert system time to
4107 file_time_type.
4108 (last_write_time(const path&, error_code&)): Likewise.
4109 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
4110
6b4a77f2 41112019-01-04 Jonathan Wakely <jwakely@redhat.com>
4112
98185b9f 4113 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
4114 for const member functions of std::basic_string.
4115 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
4116 in C++17.
4117 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
4118 Make non-standard constructor private.
4119 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
4120 Likewise.
4121 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
4122 explicit instantiations for C++17 as well as earlier dialects.
4123 * src/c++17/Makefile.am: Add new source files.
4124 * src/c++17/Makefile.in: Regenerate.
4125 * src/c++17/cow-string-inst.cc: New file defining explicit
4126 instantiations for basic_string member functions added in C++17.
4127 * src/c++17/string-inst.cc: Likewise.
4128
859e6fed 4129 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
4130 copy/move constructors for old std::basic_string.
4131 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
4132 (basic_string::reference, basic_string::const_reference): Define
4133 as plain references for C++11 and later.
4134 (basic_string::basic_string()): Put constructor body outside
4135 preprocessor conditional groups.
4136 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
4137 instead of copying it.
4138 (basic_string::basic_string(const basic_string&, const _Alloc&)):
4139 Define.
4140 (basic_string::basic_string(basic_string&&, const _Alloc&)):
4141 Define.
4142 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
4143 cases for old basic_string.
4144 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
4145 allocator-extended constructors unconditionally. Add extra members to
4146 allocator type when using old string ABI.
4147 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
4148 for old string ABI.
4149 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
4150
e13f6a7f 4151 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
4152 -fno-inline added to test flags.
4153
a18fccd0 4154 * testsuite/21_strings/basic_string/requirements/
4155 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
4156
7f77ca07 4157 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
4158 assertion failures with old std::string ABI.
4159
9346fb0e 4160 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
4161 with ...
4162 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
4163 functions that will only erase elements at the end.
4164 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
4165 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
4166 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
4167 of erase(p, end()).
4168 (path::_List::pop_back()): Define.
4169 (path::_List::_M_erase_from(const_iterator)): Define.
4170 (path::operator/=(const path&)): Use pop_back to remove last component
4171 and _M_erase_from to remove multiple components.
4172 (path::_M_append(basic_string_view<value_type>)): Likewise.
4173 (path::operator+=(const path&)): Likewise.
4174 (path::_M_concat(basic_string_view<value_type>)): Likewise.
4175 (path::remove_filename()): Likewise.
4176 (path::lexically_normal()): Use _List::_Impl iterators instead of
4177 path::iterator. Use pop_back to remove components from the end. Clear
4178 trailing filename, instead of using erase(const_iterator) to remove
4179 a non-final component.
4180 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
4181 additional cases.
4182 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
4183
24230cab 4184 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
4185 incorrect treatment of empty filename after trailing slash.
4186 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
4187
6b4a77f2 4188 * testsuite/21_strings/basic_string/modifiers/assign/char/
4189 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
4190 to test flags.
4191 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
4192 move_assign_optim.cc: Likewise.
4193
02df5941 41942019-01-03 Jonathan Wakely <jwakely@redhat.com>
4195 Jakub Jelinek <jakub@redhat.com>
4196
4197 PR libstdc++/88607
4198 * include/experimental/memory: Replace UTF-8 quote characters.
4199 * include/std/future: Replace UTF-8 "em dash" characters.
4200
f8ad40d8 42012019-01-03 Jonathan Wakely <jwakely@redhat.com>
4202
9013258b 4203 PR libstdc++/88607
4204 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
4205 * include/debug/forward_list: Likewise.
4206 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
4207 character.
4208 * include/experimental/chrono: Likewise.
4209 * include/experimental/functional: Likewise.
4210 * include/experimental/ratio: Likewise.
4211 * include/experimental/system_error: Likewise.
4212 * include/experimental/tuple: Likewise.
4213 * include/experimental/type_traits: Likewise.
4214 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
4215 * include/parallel/multiseq_selection.h: Likewise.
4216
f8ad40d8 4217 PR libstdc++/88681
4218 * config/abi/pre/gnu.ver: Add missing exports.
4219 * testsuite/22_locale/collate_byname/88681.cc: New test.
4220 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
4221 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
4222
138292f4 42232019-01-02 Jonathan Wakely <jwakely@redhat.com>
4224
553d41a8 4225 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
4226 initializer_list<value_type> and from input iterator ranges.
4227 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
4228
138292f4 4229 * testsuite/experimental/string_view/element_access/char/empty.cc:
4230 Fix year range in copyright header.
4231
963c0125 42322019-01-02 Joel Brobecker <brobecker@adacore.com>
4233
4234 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
4235 Fix year range in copyright header.
4236
fbd26352 42372019-01-01 Jakub Jelinek <jakub@redhat.com>
d353bf18 4238
4239 Update copyright years.
fb96fbb3 4240\f
fbd26352 4241Copyright (C) 2019 Free Software Foundation, Inc.
fb96fbb3 4242
4243Copying and distribution of this file, with or without modification,
4244are permitted in any medium without royalty provided the copyright
4245notice and this notice are preserved.