baseline_symbols.txt: Update.
[gcc.git] / libstdc++-v3 / ChangeLog
1 2019-10-26 John David Anglin <danglin@gcc.gnu.org>
2
3 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
4
5 2019-10-25 Jonathan Wakely <jwakely@redhat.com>
6
7 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper)
8 (input_iterator_wrapper, forward_iterator_wrapper)
9 bidirectional_iterator_wrapper, random_access_iterator_wrapper): Remove
10 user-provided copy constructors and copy assignment operators so they
11 are defined implicitly.
12 (input_iterator_wrapper): Initialize members in default constructor.
13 (forward_iterator_wrapper): Remove assignments to members of base.
14
15 * include/bits/allocator.h: Check __cpp_constexpr_dynamic_alloc
16 before making the std::allocator destructor constexpr.
17 * testsuite/20_util/allocator/requirements/constexpr.cc: New test.
18
19 * include/bits/range_cmp.h: Check __cpp_lib_concepts before defining
20 concepts. Fix comment.
21 * include/bits/allocator.h
22
23 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
24
25 * doc/xml/manual/policy_data_structures_biblio.xml: Switch
26 pubs.opengroup.org to https.
27
28 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
29
30 * doc/xml/gnu/gpl-3.0.xml: Switch www.gnu.org to https.
31
32 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
33
34 * doc/xml/manual/status_cxx2020.xml: Add rows and update status.
35
36 2019-10-24 Jonathan Wakely <jwakely@redhat.com>
37
38 * include/bits/allocator.h (allocator<void>): Restore the explicit
39 specialization for C++20, but make its API consistent with the primary
40 template.
41 (allocator::~allocator()): Restore the destructor for C++20, but make
42 it constexpr.
43 * testsuite/20_util/allocator/rebind_c++20.cc: Check allocator<void>.
44 * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: Likewise.
45 * testsuite/20_util/allocator/void.cc: Check that constructors and
46 destructors are trivial. Check for converting constructor in C++20.
47 * testsuite/ext/malloc_allocator/variadic_construct.cc: Simplify
48 dejagnu target selector.
49 * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
50
51 * include/experimental/executor (__use_future_ct, use_future_t):
52 Define partial specializations for std::allocator.
53 (__use_future_ch): Overload constructor for completion tokens using
54 std::allocator.
55
56 PR libstdc++/88338 Implement P0898R3, C++20 concepts library
57 * doc/xml/manual/status_cxx2020.xml: Update status.
58 * doc/html/*: Regenerate.
59 * testsuite/std/concepts/1.cc: New test.
60 * testsuite/std/concepts/2.cc: New test.
61
62 * include/bits/random.h (uniform_random_bit_generator): Define for
63 C++20.
64 * testsuite/26_numerics/random/concept.cc: New test.
65 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
66
67 2019-10-23 Jonathan Wakely <jwakely@redhat.com>
68
69 * include/std/functional (invoke): Add constexpr for C++20.
70 * include/std/version (__cpp_lib_constexpr_invoke): Define.
71 * testsuite/20_util/function_objects/invoke/constexpr.cc: New test.
72
73 PR c++/91369 Implement P0784R7 changes to allocation and construction
74 * include/bits/alloc_traits.h: Include <bits/stl_construct.h>.
75 (allocator_traits::_S_allocate, allocator_traits::_S_construct)
76 (allocator_traits::_S_destroy, allocator_traits::_S_max_size)
77 (allocator_traits::_S_select, allocator_traits::allocate)
78 (allocator_traits::deallocate, allocator_traits::construct)
79 (allocator_traits::destroy, allocator_traits::max_size)
80 (allocator_traits::select_on_container_copy_construction)
81 (allocator_traits<allocator<T>>): Add constexpr specifier for C++20.
82 (allocator_traits<allocator<T>>::construct): Use construct_at.
83 (allocator_traits<allocator<T>>::destroy): Use destroy_at.
84 (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Add constexpr
85 specifier.
86 (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
87 (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move here
88 from <bits/stl_construct.h>.
89 * include/bits/allocator.h (allocator::~allocator): Remove for C++20.
90 (allocator::allocate, allocate::deallocate): Define for C++20 and up.
91 (operator==, operator!=): Add constexpr specifier for C++20.
92 * include/bits/stl_construct.h: Don't include <ext/alloc_traits.h>.
93 (destroy_at): For C++20 add constexpr specifier and support for
94 destroying arrays.
95 (construct_at): Define new function for C++20.
96 (_Construct): Return result of placement new-expression. For C++11 and
97 up add constexpr. For C++20 dispatch to std::construct_at during
98 constant evaluation.
99 (_Destroy(pointer)): Add constexpr specifier. For C++20 dispatch to
100 std::destroy_at during constant evaluation.
101 (_Destroy_aux::__destroy, _Destroy_n_aux::__destroy_n): Add constexpr
102 specifier for C++20.
103 (_Destroy(ForwardIterator, ForwardIterator))
104 (_Destroy(ForwardIterator, Size)): Likewise. Do not elide trivial
105 destructors during constant evaluation.
106 (destroy, destroy_n): Add constexpr specifier for C++20.
107 (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
108 (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move to
109 <bits/alloc_traits.h>, to remove dependency on allocators.
110 * include/bits/stl_uninitialized.h: Include <ext/alloc_traits.h>.
111 Include <bits/stl_pair.h> instead of <utility>.
112 * include/ext/alloc_traits.h: Always include <bits/alloc_traits.h>.
113 (__alloc_traits::construct, __alloc_traits::destroy)
114 (__alloc_traits::_S_select_on_copy, __alloc_traits::_S_on_swap): Add
115 constexpr specifier.
116 * include/ext/malloc_allocator.h (operator==, operator!=): Add
117 constexpr specifier for C++20.
118 * include/ext/new_allocator.h (operator==, operator!=): Likewise.
119 * testsuite/20_util/headers/memory/synopsis.cc: Add constexpr.
120 * testsuite/20_util/scoped_allocator/69293_neg.cc: Ignore additional
121 errors due to constexpr function called after failed static_assert.
122 * testsuite/20_util/specialized_algorithms/construct_at/1.cc: New test.
123 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
124 Ignore additional errors due to constexpr function called after failed
125 static_assert.
126 * testsuite/23_containers/vector/cons/destructible_neg.cc: Likewise.
127
128 * testsuite/20_util/bind/91371.cc: Fix test to compile as C++11.
129
130 * include/debug/helper_functions.h (__valid_range): Change
131 _GLIBCXX_CONSTEXPR to _GLIBCXX14_CONSTEXPR.
132
133 * include/ext/throw_allocator.h (throw_allocator_base): Qualify
134 size_t and ptrdiff_t.
135
136 * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp:
137 Use detail::rebind_traits.
138 * include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp:
139 Likewise.
140 * include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Likewise.
141 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Likewise.
142 * include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Likewise.
143 * include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Likewise.
144 * include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp:
145 Likewise.
146 * include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp:
147 Likewise.
148 * include/ext/pb_ds/detail/branch_policy/branch_policy.hpp: Likewise.
149 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Likewise.
150 * include/ext/pb_ds/detail/cond_dealtor.hpp: Likewise.
151 * include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp (has_eq_fn): Likewise.
152 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Likewise.
153 * include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Likewise.
154 * include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Likewise.
155 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
156 left_child_next_sibling_heap_.hpp: Likewise.
157 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp:
158 Likewise.
159 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
160 point_const_iterator.hpp: Likewise.
161 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise.
162 * include/ext/pb_ds/detail/ov_tree_map_/
163 constructors_destructor_fn_imps.hpp: Likewise.
164 * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Likewise.
165 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Likewise.
166 * include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Likewise.
167 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Likewise.
168 * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Likewise.
169 * include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Likewise.
170 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Likewise.
171 * include/ext/pb_ds/detail/splay_tree_/node.hpp: Likewise.
172 * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Likewise.
173 * include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp:
174 Likewise.
175 * include/ext/pb_ds/detail/type_utils.hpp: Fix typo in comment.
176 * include/ext/pb_ds/detail/types_traits.hpp (stored_value): Add
177 bool parameter to control whether the hash value is stored.
178 (select_base_type): New class template and partial specialization.
179 (maybe_null_type): Likewise.
180 (rebind_traits): New class template.
181 (type_base): Remove four nearly identical specializations.
182 (type_dispatch): Remove.
183 (type_traits): Use select_base_type and maybe_null_type instead of
184 type_base to control differences between specializations.
185 * include/ext/pb_ds/list_update_policy.hpp: Use detail::rebind_traits.
186 * include/ext/pb_ds/priority_queue.hpp: Likewise.
187 * include/ext/pb_ds/tree_policy.hpp: Likewise.
188 * include/ext/pb_ds/trie_policy.hpp: Likewise.
189
190 * include/backward/hash_set (hash_set): Use __alloc_traits.
191 * include/backward/hashtable.h (_Hashtable): Likewise.
192 * include/ext/alloc_traits.h (__alloc_traits::allocate): Add overload
193 taking a hint.
194 * include/ext/extptr_allocator.h (_ExtPtr_allocator::allocate): Ignore
195 hint.
196 * include/ext/slist (_Slist_base): Use __alloc_traits.
197 * include/tr1/hashtable.h (_Hashtable): Likewise.
198 * include/tr1/regex (match_results): Use vector::const_reference
199 instead of assuming the allocator defines it.
200 * testsuite/backward/hash_map/23528.cc: Use allocator_traits in C++11.
201 * testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc: Use
202 __gnu_test::max_size.
203 * testsuite/tr1/6_containers/unordered_multimap/capacity/
204 29134-multimap.cc: Likewise.
205 * testsuite/tr1/6_containers/unordered_multiset/capacity/
206 29134-multiset.cc: Likewise.
207 * testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc:
208 Likewise.
209
210 2019-10-22 Jonathan Wakely <jwakely@redhat.com>
211
212 * testsuite/util/testsuite_abi.h: Restore use of tr1/unordered_map
213 when compiled as C++98.
214
215 * include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98.
216 * testsuite/17_intro/names.cc: Check uses_allocator in C++98.
217
218 * include/bits/alloc_traits.h
219 (allocator_traits<allocator<T>>::allocate): Ignore hint for C++20.
220 (allocator_traits<allocator<T>>::construct): Perform placement new
221 directly for C++20, instead of calling allocator<T>::construct.
222 (allocator_traits<allocator<T>>::destroy): Call destructor directly
223 for C++20, instead of calling allocator<T>::destroy.
224 (allocator_traits<allocator<T>>::max_size): Return value directly
225 for C++20, instead of calling std::allocator<T>::max_size().
226 (__do_alloc_on_copy, __do_alloc_on_move, __do_alloc_on_swap): Do not
227 define for C++17 and up.
228 (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use if-constexpr
229 for C++17 and up, instead of tag dispatching.
230 * include/bits/allocator.h (allocator<void>): Remove for C++20.
231 (allocator::pointer, allocator::const_pointer, allocator::reference)
232 (allocator::const_reference, allocator::rebind): Remove for C++20.
233 * include/bits/basic_string.h (basic_string): Use __alloc_traits to
234 rebind allocator.
235 * include/bits/memoryfwd.h (allocator<void>): Remove for C++20.
236 * include/ext/debug_allocator.h: Use __alloc_traits for rebinding.
237 * include/ext/malloc_allocator.h (malloc_allocator::~malloc_allocator)
238 (malloc_allocator::pointer, malloc_allocator::const_pointer)
239 (malloc_allocator::reference, malloc_allocator::const_reference)
240 (malloc_allocator::rebind, malloc_allocator::max_size)
241 (malloc_allocator::construct, malloc_allocator::destroy): Do not
242 define for C++20.
243 (malloc_allocator::_M_max_size): Define new function.
244 * include/ext/new_allocator.h (new_allocator::~new_allocator)
245 (new_allocator::pointer, new_allocator::const_pointer)
246 (new_allocator::reference, new_allocator::const_reference)
247 (new_allocator::rebind, new_allocator::max_size)
248 (new_allocator::construct, new_allocator::destroy): Do not
249 define for C++20.
250 (new_allocator::_M_max_size): Define new function.
251 * include/ext/rc_string_base.h (__rc_string_base::_Rep): Use
252 __alloc_traits to rebind allocator.
253 * include/ext/rope (_Rope_rep_base, _Rope_base): Likewise.
254 (rope::rope(CharT, const allocator_type&)): Use __alloc_traits
255 to construct character.
256 * include/ext/slist (_Slist_base): Use __alloc_traits to rebind
257 allocator.
258 * include/ext/sso_string_base.h (__sso_string_base::_M_max_size):
259 Use __alloc_traits.
260 * include/ext/throw_allocator.h (throw_allocator): Do not use optional
261 members of std::allocator, use __alloc_traits members instead.
262 * include/ext/vstring.h (__versa_string): Use __alloc_traits.
263 * include/ext/vstring_util.h (__vstring_utility): Likewise.
264 * include/std/memory: Include <bits/alloc_traits.h>.
265 * testsuite/20_util/allocator/8230.cc: Use __gnu_test::max_size.
266 * testsuite/20_util/allocator/rebind_c++20.cc: New test.
267 * testsuite/20_util/allocator/requirements/typedefs.cc: Do not check
268 for pointer, const_pointer, reference, const_reference or rebind in
269 C++20.
270 * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: New test.
271 * testsuite/23_containers/deque/capacity/29134.cc: Use
272 __gnu_test::max_size.
273 * testsuite/23_containers/forward_list/capacity/1.cc: Likewise.
274 * testsuite/23_containers/list/capacity/29134.cc: Likewise.
275 * testsuite/23_containers/map/capacity/29134.cc: Likewise.
276 * testsuite/23_containers/multimap/capacity/29134.cc: Likewise.
277 * testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
278 * testsuite/23_containers/set/capacity/29134.cc: Likewise.
279 * testsuite/23_containers/vector/capacity/29134.cc: Likewise.
280 * testsuite/ext/malloc_allocator/variadic_construct.cc: Do not run
281 test for C++20.
282 * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
283 * testsuite/ext/vstring/capacity/29134.cc: Use __gnu_test::max_size.
284 * testsuite/util/replacement_memory_operators.h: Do not assume
285 Alloc::pointer exists.
286 * testsuite/util/testsuite_allocator.h (__gnu_test::max_size): Define
287 helper to call max_size for any allocator.
288
289 2019-10-22 Andreas Schwab <schwab@suse.de>
290
291 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
292
293 2019-10-18 Jonathan Wakely <jwakely@redhat.com>
294
295 PR libstdc++/92143
296 * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
297 to at least sizeof(void*).
298
299 * include/bits/range_cmp.h (ranges::less::operator()): Inline the
300 logic from std::less::operator() to remove the dependency on it.
301
302 2019-10-17 Jonathan Wakely <jwakely@redhat.com>
303
304 * doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers.
305
306 * include/Makefile.am: Add new header.
307 * include/Makefile.in: Regenerate.
308 * include/bits/range_cmp.h: New header for C++20 function objects.
309 * include/std/functional: Include new header.
310 * testsuite/20_util/function_objects/identity/1.cc: New test.
311 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: New test.
312 * testsuite/20_util/function_objects/range.cmp/greater.cc: New test.
313 * testsuite/20_util/function_objects/range.cmp/greater_equal.cc: New
314 test.
315 * testsuite/20_util/function_objects/range.cmp/less.cc: New test.
316 * testsuite/20_util/function_objects/range.cmp/less_equal.cc: New test.
317 * testsuite/20_util/function_objects/range.cmp/not_equal_to.cc: New
318 test.
319
320 PR libstdc++/92124
321 * include/bits/forward_list.h
322 (_M_move_assign(forward_list&&, false_type)): Do not use
323 __make_move_if_noexcept, instead move unconditionally.
324 * include/bits/stl_deque.h (_M_move_assign2(deque&&, false_type)):
325 Likewise.
326 * include/bits/stl_list.h (_M_move_assign(list&&, false_type)):
327 Likewise.
328 * include/bits/stl_vector.h (_M_move_assign(vector&&, false_type)):
329 Likewise.
330 * testsuite/23_containers/vector/92124.cc: New test.
331
332 2019-10-16 Jonathan Wakely <jwakely@redhat.com>
333
334 * include/bits/c++config (_GLIBCXX_BUILTIN_IS_SAME_AS): Define to
335 one of __is_same_as or __is_same when available.
336 * include/std/concepts (__detail::__same_as): Use std::is_same_v.
337 * include/std/type_traits (is_same) [_GLIBCXX_BUILTIN_IS_SAME_AS]:
338 Use new macro instead of __is_same_as.
339 (is_same) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Restore partial
340 specialization.
341 (is_same_v) [_GLIBCXX_BUILTIN_IS_SAME_AS]: Use new macro.
342 (is_same_v) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Use std::is_same.
343
344 2019-10-16 François Dumont <fdumont@gcc.gnu.org>
345
346 * src/c++11/debug.cc (print_field): Replace constness_names <unknown>
347 entry with <unknown constness>. Replace state_names <unknown> entry with
348 <unknown state>.
349
350 2019-10-11 Jonathan Wakely <jwakely@redhat.com>
351
352 * include/Makefile.am: Add new header.
353 * include/Makefile.in: Regenerate.
354 * include/precompiled/stdc++.h: Include <concepts>.
355 * include/std/concepts: New header for C++20.
356 * include/std/version (__cpp_lib_concepts): Define.
357 * scripts/create_testsuite_files: Look for test files in new std
358 directory.
359 * testsuite/libstdc++-dg/conformance.exp: Likewise.
360 * testsuite/std/concepts/concepts.callable/invocable.cc: New test.
361 * testsuite/std/concepts/concepts.callable/regular_invocable.cc: New
362 test.
363 * testsuite/std/concepts/concepts.callable/relation.cc: New test.
364 * testsuite/std/concepts/concepts.callable/strictweakorder.cc: New
365 test.
366 * testsuite/std/concepts/concepts.lang/concept.arithmetic/
367 floating_point.cc: New test.
368 * testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
369 New test.
370 * testsuite/std/concepts/concepts.lang/concept.arithmetic/
371 signed_integral.cc: New test.
372 * testsuite/std/concepts/concepts.lang/concept.arithmetic/
373 unsigned_integral.cc: New test.
374 * testsuite/std/concepts/concepts.lang/concept.assignable/1.cc: New
375 test.
376 * testsuite/std/concepts/concepts.lang/concept.common/1.cc: New test.
377 * testsuite/std/concepts/concepts.lang/concept.commonref/1.cc: New
378 test.
379 * testsuite/std/concepts/concepts.lang/concept.constructible/1.cc:
380 New test.
381 * testsuite/std/concepts/concepts.lang/concept.convertible/1.cc:
382 New test.
383 * testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc:
384 New test.
385 * testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
386 1.cc: New test.
387 * testsuite/std/concepts/concepts.lang/concept.derived/1.cc:
388 New test.
389 * testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
390 New test.
391 * testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc:
392 New test.
393 * testsuite/std/concepts/concepts.lang/concept.same/1.cc:
394 New test.
395 * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
396 New test.
397 * testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
398 New test.
399 * testsuite/std/concepts/concepts.lang/concept.swappable/
400 swappable_with.cc: New test.
401 * testsuite/std/concepts/concepts.object/copyable.cc: New test.
402 * testsuite/std/concepts/concepts.object/movable.cc: New test.
403 * testsuite/std/concepts/concepts.object/regular.cc: New test.
404 * testsuite/std/concepts/concepts.object/semiregular.cc: New test.
405
406 * include/std/type_traits (is_same): Replace partial specialization
407 by using __is_same_as built-in in primary template.
408 (is_same_v): Use __is_same_as built-in instead of instantiating the
409 is_same trait.
410
411 PR libstdc++/92059
412 * include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all
413 special member functions as defaulted. Add noexcept to most members.
414 (__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)):
415 Mask off unwanted bits in the __val parameter. Avoid undefined left
416 shifts.
417 (__dynamic_bitset_base::_M_assign): Remove.
418 (__dynamic_bitset_base::_M_do_reset): Use std::fill.
419 (__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when
420 block_type has lower rank than int.
421 (dynamic_bitset): Add noexcept to most members. Use injected-class-name
422 in return types and parameter types.
423 (dynamic_bitset::_M_Nb): Add default member initializer.
424 (dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as
425 defaulted.
426 (dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
427 (dynamic_bitset::operator=(const dynamic_bitset&)): Define as
428 defaulted.
429 (dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier.
430 Define without using swap, to propagate allocator correctly.
431 (dynamic_bitset(const char*, const _Alloc&)): Use strlen.
432 (dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use
433 casts to avoid unwanted integer promotions.
434 (dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and
435 add default template arguments and default argument to simplify usage.
436 (dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr.
437 (operator==(const dynamic_bitset&, const dynamic_bitset&))
438 (operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb.
439 * include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr):
440 Adjust template parameters to match declaration.
441 * testsuite/tr2/dynamic_bitset/cmp.cc: New test.
442 * testsuite/tr2/dynamic_bitset/cons.cc: New test.
443 * testsuite/tr2/dynamic_bitset/copy.cc: New test.
444 * testsuite/tr2/dynamic_bitset/move.cc: New test.
445 * testsuite/tr2/dynamic_bitset/pr92059.cc: New test.
446
447 * include/bits/charconv.h (__to_chars_len): Avoid -Wsign-compare
448 warnings.
449
450 2019-10-10 Jonathan Wakely <jwakely@redhat.com>
451
452 PR libstdc++/91057
453 * src/c++98/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]
454 (find_ldbl_sync_facet): Fix parameter type and missing return.
455
456 2019-10-09 Marek Polacek <polacek@redhat.com>
457
458 PR c++/91364 - P0388R4: Permit conversions to arrays of unknown bound.
459 PR c++/69531 - DR 1307: Differently bounded array parameters.
460 PR c++/88128 - DR 330: Qual convs and pointers to arrays of pointers.
461 * testsuite/23_containers/span/lwg3255.cc: Adjust test to match the
462 post-P0388R4 behavior.
463
464 2019-10-09 Jonathan Wakely <jwakely@redhat.com>
465
466 PR libstdc++/91057
467 * src/c++98/locale.cc (locale::id::_M_id()) [__GTHREADS]: Use atomic
468 compare-exchange or double-checked lock to ensure only one thread sets
469 the _M_index variable.
470 [_GLIBCXX_LONG_DOUBLE_COMPAT]: Call find_ldbl_sync_facet to detect
471 facets that share another facet's ID.
472 [_GLIBCXX_LONG_DOUBLE_COMPAT] (find_ldbl_sync_facet): New function.
473
474 PR libstdc++/78552
475 * src/c++98/locale_init.cc (locale::classic()): Do not construct a new
476 locale object for every call.
477 (locale::_S_initialize_once()): Construct C locale here.
478
479 2019-10-08 Jonathan Wakely <jwakely@redhat.com>
480
481 * doc/Makefile.am (doc-html-docbook-regenerate): New target.
482 (${docbook_outdir}/html): Do not create unused 'html/ext' directory.
483 * doc/Makefile.in: Regenerate.
484 * doc/xml/manual/documentation_hacking.xml: Document new target.
485 * doc/html/*: Regenerate.
486
487 * doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
488 * doc/html/*: Regenerate.
489
490 2019-10-06 François Dumont <fdumont@gcc.gnu.org>
491
492 * include/bits/stl_algo.h
493 (__copy_n_a(_IIte, _Size, _OIte)): New.
494 (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New declaration.
495 (__copy_n(_IIte, _Size, _OIte, input_iterator_tag)): Adapt to use
496 latter.
497 * include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
498 std::__copy_n_a friend.
499 (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New.
500 * testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc: New.
501 * testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc: New.
502 * testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc: New.
503
504 * include/bits/stl_iterator_base_types.h (__iterator_category_t): Define
505 for C++11.
506 (_RequireInputIte): Likewise and use __enable_if_t.
507 * include/std/numeric
508 (__is_random_access_iter): Use __iterator_category_t.
509
510 * include/bits/stl_algo.h (copy_n): Add __glibcxx_requires_can_increment
511 debug checks.
512 * testsuite/25_algorithms/copy_n/debug/1_neg.cc: New.
513 * testsuite/25_algorithms/copy_n/debug/2_neg.cc: New.
514
515 2019-10-04 François Dumont <fdumont@gcc.gnu.org>
516
517 * include/debug/forward_list
518 (_Sequence_traits<__debug::forward_list<>>::_S_size): Returns __dp_sign
519 distance when not empty.
520 * include/debug/list (_Sequence_traits<__debug::list<>>::_S_size):
521 Likewise.
522 * include/debug/helper_functions.h (__dp_sign_max_size): New
523 _Distance_precision enum entry.
524 (__valid_range_aux(_IIte, _IIte, _Distance_traits<>::__type,
525 __false_type)): Adapt.
526 * include/debug/safe_iterator.tcc
527 (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator&)): Review
528 distance computation.
529
530 2019-10-04 Jonathan Wakely <jwakely@redhat.com>
531
532 PR libstdc++/81091
533 PR libstdc++/91947
534 * configure.ac: Use AC_SYS_LARGEFILE to enable 64-bit file APIs.
535 * config.h.in: Regenerate:
536 * configure: Regenerate:
537 * include/Makefile.am (${host_builddir}/largefile-config.h): New
538 target to generate config header for filesystem library.
539 (${host_builddir}/c++config.h): Rename macros for large file support.
540 * include/Makefile.in: Regenerate.
541 * src/c++17/fs_dir.cc: Include new config header.
542 * src/c++17/fs_ops.cc: Likewise.
543 (filesystem::file_size): Use uintmax_t for size.
544 * src/filesystem/dir.cc: Include new config header.
545 * src/filesystem/ops.cc: Likewise.
546 (experimental::filesystem::file_size): Use uintmax_t for size.
547
548 * testsuite/util/testsuite_abi.h: Use std::unordered_map instead of
549 std::tr1::unordered_map.
550 * testsuite/util/testsuite_allocator.h: Likewise.
551
552 * include/tr1/hashtable.h: Add header for __gnu_cxx::__alloc_traits.
553
554 * include/tr1/hashtable.h (tr1::_Hashtable::_M_allocate_node): Use
555 __gnu_cxx::__alloc_traits for allocator construct function.
556 (tr1::_Hashtable::_M_deallocate_node): Likewise for destroy function.
557
558 * include/precompiled/stdc++.h: Include <span> for C++20.
559 * testsuite/17_intro/names.cc: Do not define 'e' for C++20.
560
561 2019-10-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
562
563 * include/parallel/multiway_merge.h (_RAIter3): Replace _C by _Cp.
564
565 2019-10-02 Jonathan Wakely <jwakely@redhat.com>
566
567 * config/abi/pre/gnu.ver: Tighten up greedy wildcards.
568
569 * doc/xml/manual/parallel_mode.xml: Add caveat about support for
570 recent standards.
571 * doc/html/*: Regenerate.
572
573 2019-10-01 Jonathan Wakely <jwakely@redhat.com>
574
575 * include/experimental/algorithm (experimental::sample): Qualify call
576 to __sample correctly.
577 * include/parallel/algo.h (sample, for_each_n): Add using-declarations
578 for algorithms that don't have parallel implementations.
579
580 * include/parallel/algobase.h (equal, lexicographical_compare): Add
581 _GLIBCXX20_CONSTEXPR and dispatch to sequential algorithm when being
582 constant evaluated.
583 * include/parallel/algorithmfwd.h (equal, lexicographical_compare):
584 Add _GLIBCXX20_CONSTEXPR.
585
586 * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Skip test for
587 parallel mode.
588 * testsuite/20_util/hash/84998.cc: Likewise.
589 * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: Likewise.
590 * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: Likewise.
591 * testsuite/23_containers/list/pmr_typedefs_debug.cc: Likewise.
592 * testsuite/23_containers/map/pmr_typedefs_debug.cc: Likewise.
593 * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: Likewise.
594 * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: Likewise.
595 * testsuite/23_containers/set/pmr_typedefs_debug.cc: Likewise.
596 * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc:
597 Likewise.
598 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
599 Likewise.
600 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
601 Likewise.
602 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
603 Likewise.
604 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
605 Likewise.
606 * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: Likewise.
607 * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
608 * testsuite/25_algorithms/copy/86658.cc: Likewise.
609 * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
610 * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
611 * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
612 * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
613
614 * include/parallel/algo.h: Replace non-reserved names.
615 * include/parallel/multiway_merge.h: Likewise.
616 * include/parallel/multiway_mergesort.h: Likewise.
617 * include/parallel/numericfwd.h: Likewise.
618 * testsuite/17_intro/names.cc: Add RAI to test macros.
619
620 2019-09-30 François Dumont <fdumont@gcc.gnu.org>
621
622 * include/debug/array: Add C++20 constexpr to comparison operators.
623 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Adapt
624 dg-error line numbers.
625 * testsuite/23_containers/array/tuple_interface/
626 tuple_element_debug_neg.cc: Likewise.
627
628 2019-09-30 Andreas Tobler <andreast@gcc.gnu.org>
629
630 * include/experimental/internet: Include netinet/in.h if we have
631 _GLIBCXX_HAVE_NETINET_IN_H defined.
632
633 * testsuite/ext/special_functions/airy_ai/check_nan.cc: Ignore the
634 FreeBSD warning about lower advertised precision of tgammal.
635 * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
636 * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc: Likewise.
637 * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc: Likewise.
638 * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc: Likewise.
639 * testsuite/special_functions/10_cyl_neumann/check_nan.cc: Likewise.
640 * testsuite/special_functions/19_sph_bessel/check_nan.cc: Likewise.
641 * testsuite/special_functions/21_sph_neumann/check_nan.cc: Likewise.
642 * testsuite/tr1/5_numerical_facilities/special_functions/
643 08_cyl_bessel_i/check_nan.cc: Likewise.
644 * testsuite/tr1/5_numerical_facilities/special_functions/
645 09_cyl_bessel_j/check_nan.cc: Likewise.
646 * testuite/tr1/5_numerical_facilities/special_functions/
647 10_cyl_bessel_k/check_nan.cc: Likewise.
648 * testsuite/tr1/5_numerical_facilities/special_functions/
649 11_cyl_neumann/check_nan.cc: Likewise.
650 * testsuite/tr1/5_numerical_facilities/special_functions/
651 21_sph_bessel/check_nan.cc: Likewise.
652 * testsuite/tr1/5_numerical_facilities/special_functions/
653 23_sph_neumann/check_nan.cc: Likewise.
654
655 2019-09-30 Jonathan Wakely <jwakely@redhat.com>
656
657 * include/std/span (span(element_type(&)[N]))
658 (span(array<value_type, N>&), span(const array<value_type, N>&)):
659 Deduce array element type to allow safe const conversions (LWG 3255).
660 [!_GLIBCXX_P1394] (span(Container&), span(const Container&)): Use
661 remove_cv_t on arguments to __is_std_span and __is_std_array.
662 * testsuite/23_containers/span/lwg3255.cc: New test.
663
664 PR libstdc++/77936
665 * include/parallel/checkers.h (__is_sorted): Remove unused variable.
666
667 2019-09-28 François Dumont <fdumont@gcc.gnu.org>
668
669 * include/bits/stl_algo.h (merge): Fix documentation.
670 * include/debug/functions.h (__check_sorted_aux): Add C++20 constexpr.
671 (__check_sorted): Likewise and remove nested irreflexive check.
672 (__check_sorted_set_aux, __check_sorted_set): Add C++20 constexpr.
673 (__check_partitioned_lower, __check_partitioned_upper): Likewise.
674 (_Irreflexive_checker::_S_is_valid): Likewise.
675 (__is_irreflexive, __is_irreflexive_pred): Likewise.
676 * include/debug/helper_functions.h (__get_distance): Add constexpr.
677 (__valid_range_aux): Add C++20 constexpr.
678 (__valid_range(_Iter, _Iter, _Distance_traits<_Iter>::__type&)):
679 Likewise and add std::is_constant_evaluated check.
680 (__valid_range_aux(_Iter, _Iter, std::input_iterator_tag)): New.
681 (__valid_range_aux(_Iter, _Iter, std::random_accss_iterator_tag)): New.
682 (__valid_range_aux(_Integral, _Integral, std::__true_type)): New,
683 use latter.
684 (__valid_range(_Iter, _Iter)): Adapt to use latter, add constexpr and
685 __builtin_is_contant_evaludated check..
686 (__can_advance, __base): Add constexpr.
687 * include/debug/macros.h [_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED]
688 (_GLIBCXX_DEBUG_VERIFY_COND_AT): New.
689 (__glibcxx_check_sorted): Use __glibcxx_check_irreflexive.
690 (__glibcxx_check_sorted_pred): Use __glibcxx_check_irreflexive_pred.
691 * testsuite/25_algorithms/binary_search/constexpr.cc: Use irreflexive
692 std::less.
693 * testsuite/25_algorithms/is_sorted/constexpr.cc: Likewise.
694 * testsuite/25_algorithms/merge/constexpr.cc: Fix order in camm. Fix
695 lambda to be irreflexive.
696
697 2019-09-27 Maciej W. Rozycki <macro@wdc.com>
698
699 * configure: Regenerate.
700
701 2019-09-27 Jonathan Wakely <jwakely@redhat.com>
702
703 PR libstdc++/91910
704 * src/c++11/debug.cc (_Safe_iterator_base::_M_detach()): Load pointer
705 atomically and lock the mutex before accessing the sequence.
706 (_Safe_local_iterator_base::_M_detach()): Likewise.
707 (_Safe_iterator_base::_M_reset()): Clear _M_sequence atomically.
708
709 2019-09-26 Jonathan Wakely <jwakely@redhat.com>
710
711 * include/debug/array (to_array): Define for debug mode.
712
713 * include/bits/stl_pair.h (pair): Add _GLIBCXX20_CONSTEXPR to
714 piecewise construction constructor, assignment operators, and swap.
715 * include/std/tuple (pair::pair(piecewise_construct_t, tuple, tuple)):
716 Add _GLIBCXX20_CONSTEXPR.
717 (pair::pair(tuple, tuple, _Index_tuple, _Index_tuple)): Likewise.
718 * testsuite/20_util/pair/constexpr_assign.cc: New test.
719 * testsuite/20_util/pair/constexpr_swap.cc: New test.
720
721 * include/experimental/internet (operator==, operator<): Fix loop
722 condition to avoid reading past the end of the array.
723
724 * include/std/array: Remove references to profile mode.
725 * include/std/bitset: Likewise.
726 * include/std/deque: Likewise.
727 * include/std/forward_list: Likewise.
728 * include/std/list: Likewise.
729 * include/std/map: Likewise.
730 * include/std/set: Likewise.
731 * include/std/unordered_map: Likewise.
732 * include/std/unordered_set: Likewise.
733 * include/std/vector: Likewise.
734 * testsuite/17_intro/headers/c++1998/profile_mode.cc: New test.
735 * testsuite/17_intro/headers/c++2011/profile_mode.cc: New test.
736
737 2019-09-25 Jonathan Wakely <jwakely@redhat.com>
738
739 * include/bits/regex.h
740 (basic_regex::assign(const C*, size_t, flag_type)): Add default
741 argument (LWG 3296).
742 * testsuite/28_regex/basic_regex/assign/char/lwg3296.cc: New test.
743 * testsuite/28_regex/basic_regex/assign/wchar_t/lwg3296.cc: New test.
744
745 2019-09-24 Jonathan Wakely <jwakely@redhat.com>
746
747 * include/std/variant (variant::index()): Remove impossible case.
748
749 PR libstdc++/91871
750 * testsuite/util/testsuite_hooks.h
751 (conversion::iterator_to_const_iterator()): Do not return an invalid
752 iterator. Test direct-initialization and direct-list-initialization
753 as well as implicit conversion.
754
755 2019-09-23 Jonathan Wakely <jwakely@redhat.com>
756
757 PR libstdc++/91788 (partial)
758 * include/std/variant (variant::index()): Improve codegen for cases
759 where conversion to size_t already works correctly.
760
761 2019-09-23 Andreas Schwab <schwab@suse.de>
762
763 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
764
765 2019-09-12 Jonathan Wakely <jwakely@redhat.com>
766
767 PR libstdc++/91748
768 * include/bits/stl_algo.h (for_each_n): Fix random access iterator
769 case.
770 * testsuite/25_algorithms/for_each/for_each_n.cc: Test with random
771 access iterators.
772
773 2019-09-11 Jonathan Wakely <jwakely@redhat.com>
774
775 * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__):
776 Fix syntax error.
777
778 * testsuite/20_util/result_of/sfinae_friendly_1.cc: Add -Wno-volatile
779 for C++2a and up. Define HAS_52748_FIXED and fix incorrect tests.
780 * testsuite/tr1/3_function_objects/result_of.cc: Add -Wno-volatile
781 for C++2a and up.
782
783 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
784
785 * include/std/type_traits (__do_common_type_impl): Implement
786 additional COND-RES(CREF(D1), CRED(D2)) condition for C++20.
787 (basic_common_reference, common_reference, common_reference_t): Define
788 for C++20.
789 * testsuite/20_util/common_reference/requirements/alias_decl.cc: New
790 test.
791 * testsuite/20_util/common_reference/requirements/
792 explicit_instantiation.cc: New test.
793 * testsuite/20_util/common_reference/requirements/typedefs.cc: New
794 test.
795
796 * include/std/charconv (to_chars): Rename to __to_chars_i. Define
797 non-template overloads for each signed and unsigned integer type and
798 char. Define deleted overload for bool (LWG 3266).
799 * testsuite/20_util/to_chars/1_neg.cc: Remove.
800 * testsuite/20_util/to_chars/3.cc: New test.
801 * testsuite/20_util/to_chars/lwg3266.cc: New test.
802
803 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
804
805 * acinclude.m4: Handle uclinux*.
806 * configure: Regenerate.
807 * configure.host: Handle uclinux*
808
809 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
810 Mickaël Guêné <mickael.guene@st.com>
811
812 * libsupc++/eh_personality.cc (get_ttype_entry): Add FDPIC
813 support.
814
815 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
816
817 PR libstdc++/91711
818 * testsuite/23_containers/span/get_neg.cc: Avoid ambiguity due to
819 0ul being a valid null pointer constant.
820
821 * include/std/type_traits (__remove_cv_t): New alias template.
822 (is_void, is_integral, is_floating_point, is_pointer)
823 (is_member_object_pointer, is_member_function_pointer, is_null_pointer)
824 (is_member_point), __is_signed_integer, __is_unsigned_integer)
825 (__make_unsigned_selector, __make_signed_selector, remove_pointer)
826 (__decay_selector): Use __remove_cv_t.
827 (remove_cv): Add partial specializations for cv-qualified types.
828 (__decay_t): New alias template.
829 (__decay_and_strip, __common_type_impl, __result_of_impl): Use
830 __decay_t.
831 (__enable_if_t): Move earlier in the file.
832 (_Require): Use __enable_if_t.
833 (swap(T&, T&)): Use _Require.
834 (swap(T(&)[N])): Use __enable_if_t.
835
836 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
837
838 Implement C++20 p1424 - 'constexpr' feature macro concerns,
839 Issue 3256 - Feature testing macro for constexpr algorithms,
840 and Issue 3257 - Missing feature testing macro update from P0858.
841 * include/std/version (__cpp_lib_constexpr_algorithms): Bump value.
842 * include/bits/algorithmfwd.h: Ditto.
843 * include/std/utility: Ditto.
844 * testsuite/25_algorithms/constexpr_macro.cc: Ditto.
845 * testsuite/25_algorithms/cpp_lib_constexpr.cc: New check for
846 __cpp_lib_constexpr macro in <algorith>.
847 * testsuite/20_util/exchange/constexpr.cc: Add check for
848 __cpp_lib_constexpr macro in <utility>.
849 * testsuite/25_algorithms/adjacent_find/constexpr.cc: Remove check for
850 __cpp_lib_constexpr_algorithms.
851 * testsuite/25_algorithms/all_of/constexpr.cc: Ditto.
852 * testsuite/25_algorithms/any_of/constexpr.cc: Ditto.
853 * testsuite/25_algorithms/binary_search/constexpr.cc: Ditto.
854 * testsuite/25_algorithms/copy/constexpr.cc: Ditto.
855 * testsuite/25_algorithms/copy_backward/constexpr.cc: Ditto.
856 * testsuite/25_algorithms/copy_if/constexpr.cc: Ditto.
857 * testsuite/25_algorithms/copy_n/constexpr.cc: Ditto.
858 * testsuite/25_algorithms/count/constexpr.cc: Ditto.
859 * testsuite/25_algorithms/count_if/constexpr.cc: Ditto.
860 * testsuite/25_algorithms/equal/constexpr.cc: Ditto.
861 * testsuite/25_algorithms/equal_range/constexpr.cc: Ditto.
862 * testsuite/25_algorithms/fill/constexpr.cc: Ditto.
863 * testsuite/25_algorithms/fill_n/constexpr.cc: Ditto.
864 * testsuite/25_algorithms/find/constexpr.cc: Ditto.
865 * testsuite/25_algorithms/find_end/constexpr.cc: Ditto.
866 * testsuite/25_algorithms/find_first_of/constexpr.cc: Ditto.
867 * testsuite/25_algorithms/find_if/constexpr.cc: Ditto.
868 * testsuite/25_algorithms/find_if_not/constexpr.cc: Ditto.
869 * testsuite/25_algorithms/for_each/constexpr.cc: Ditto.
870 * testsuite/25_algorithms/generate/constexpr.cc: Ditto.
871 * testsuite/25_algorithms/generate_n/constexpr.cc: Ditto.
872 * testsuite/25_algorithms/is_heap/constexpr.cc: Ditto.
873 * testsuite/25_algorithms/is_heap_until/constexpr.cc: Ditto.
874 * testsuite/25_algorithms/is_partitioned/constexpr.cc: Ditto.
875 * testsuite/25_algorithms/is_permutation/constexpr.cc: Ditto.
876 * testsuite/25_algorithms/is_sorted/constexpr.cc: Ditto.
877 * testsuite/25_algorithms/is_sorted_until/constexpr.cc: Ditto.
878 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: Ditto.
879 * testsuite/25_algorithms/lower_bound/constexpr.cc: Ditto.
880 * testsuite/25_algorithms/merge/constexpr.cc: Ditto.
881 * testsuite/25_algorithms/mismatch/constexpr.cc: Ditto.
882 * testsuite/25_algorithms/none_of/constexpr.cc: Ditto.
883 * testsuite/25_algorithms/partition_copy/constexpr.cc: Ditto.
884 * testsuite/25_algorithms/partition_point/constexpr.cc: Ditto.
885 * testsuite/25_algorithms/remove/constexpr.cc: Ditto.
886 * testsuite/25_algorithms/remove_copy/constexpr.cc: Ditto.
887 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Ditto.
888 * testsuite/25_algorithms/remove_if/constexpr.cc: Ditto.
889 * testsuite/25_algorithms/replace_copy/constexpr.cc: Ditto.
890 * testsuite/25_algorithms/replace_copy_if/constexpr.cc: Ditto.
891 * testsuite/25_algorithms/replace_if/constexpr.cc: Ditto.
892 * testsuite/25_algorithms/reverse_copy/constexpr.cc: Ditto.
893 * testsuite/25_algorithms/rotate_copy/constexpr.cc: Ditto.
894 * testsuite/25_algorithms/search/constexpr.cc: Ditto.
895 * testsuite/25_algorithms/search_n/constexpr.cc: Ditto.
896 * testsuite/25_algorithms/set_difference/constexpr.cc: Ditto.
897 * testsuite/25_algorithms/set_intersection/constexpr.cc: Ditto.
898 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: Ditto.
899 * testsuite/25_algorithms/set_union/constexpr.cc: Ditto.
900 * testsuite/25_algorithms/transform/constexpr.cc: Ditto.
901 * testsuite/25_algorithms/unique/constexpr.cc: Ditto.
902 * testsuite/25_algorithms/unique_copy/constexpr.cc: Ditto.
903 * testsuite/25_algorithms/upper_bound/constexpr.cc: Ditto.
904
905 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
906
907 Update docs for recent <span> and constexpr lib changes.
908 * doc/xml/manual/status_cxx2020.xml: Update p0202r3, p0858r0, p0879r0,
909 p1023r0, p1085r2 status.
910 * doc/html/manual/status.html: Regenerate.
911
912 2019-09-09 Antony Polukhin <antoshkka@gmail.com>
913
914 * include/bits/charconv.h (__detail::__to_chars_10_impl): Replace
915 final offsets with constants.
916
917 2019-09-09 Jonathan Wakely <jwakely@redhat.com>
918
919 * include/bits/range_access.h (__adl_to_address): Remove.
920 * include/std/span (__is_base_derived_safe_convertible_v): Replace
921 with span::__is_compatible.
922 (__is_std_array_v): Replace with __is_std_array class template and
923 partial specializations.
924 (__is_std_array, __is_std_span): New class templates and partial
925 specializations.
926 (span::__is_compatible): New alias template for SFINAE constraints.
927 (span::span(element_type (&)[N])): Remove redundant constraints. Do
928 not use __adl_data to obtain a pointer.
929 (span::span(array<value_type, N>&)): Likewise.
930 (span::span(const array<value_type, N>&)): Likewise.
931 [_GLIBCXX_P1394] (span::iter_reference_t, span::iterator_t)
932 (span::iter_value_t, span::derived_from): New alias templates for
933 SFINAE constraints, until the equivalents are supported in <concepts>
934 and <iterator>.
935 [_GLIBCXX_P1394] (span::__is_compatible_iterator): New alias template
936 for SFINAE constraints.
937 [_GLIBCXX_P1394] (span::is_compatible_range): New class template for
938 SFINAE constraints.
939 [_GLIBCXX_P1394] (span::span(Range&&)): Improve constraints.
940 [_GLIBCXX_P1394] (span::span(ContiguousIterator, Sentinel)): Likewise.
941 Use std::to_address instead of __adl_to_address.
942 [_GLIBCXX_P1394] (span::span(ContiguousIterator, size_type)): Likewise.
943 [!_GLIBCXX_P1394] (span::__is_compatible_container): New alias
944 template for SFINAE constraints.
945 [!_GLIBCXX_P1394] (span::span(Container&))
946 (span::span(const Container&)): Improve constraints.
947 [!_GLIBCXX_P1394] (span::span(pointer, size_type))
948 (span::span(pointer, pointer)): Remove redundant cast of pointer.
949 (span(const span<OType, OExtent>&)): New constructor.
950
951 2019-09-06 Jonathan Wakely <jwakely@redhat.com>
952
953 * include/bits/range_access.h (ssize): Define for C++20.
954 * testsuite/24_iterators/range_access_cpp20.cc: New test.
955 * doc/xml/manual/status_cxx2020.xml: Update P1227R2 status.
956 * doc/html/*: Regenerate.
957
958 2019-09-06 Florian Weimer <fweimer@redhat.com>
959
960 * configure: Regenerate.
961
962 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
963
964 * doc/xml/manual/status_cxx2020.xml: Update status for P0122R7 and
965 P1024R3. Remove entry for P0920R2.
966 * include/std/span (__cpp_lib_span): Change value.
967 (__extent_storage, __extent_storage<dynamic_extent>): Remove default
968 constructor.
969 (span): Replace __extent_storage base class with data member.
970 (span::_S_subspan_extent): New function.
971 (span::empty()): Add nodiscard attribute.
972 (span::front, span::back, span::operator[]): Check preconditions.
973 (span::first, span::last, span::subspan): Add noexcept. Improve
974 precondition checks (LWG 3103).
975 (get): Remove redundant condition from static_assert.
976 (tuple_element<I, span<T, E>>): Fix static_assert message and simplify.
977 (as_writable_bytes): Add inline specifier.
978 * include/std/version (__cpp_lib_span): Change value.
979 * testsuite/23_containers/span/back_neg.cc: Remove stray semi-colon.
980 * testsuite/23_containers/span/front_neg.cc: Likewise.
981 * testsuite/23_containers/span/index_op_neg.cc: Likewise.
982 * testsuite/23_containers/span/last_neg.cc: Improve test.
983 * testsuite/23_containers/span/subspan_neg.cc: Likewise.
984 * testsuite/23_containers/span/1.cc: New test.
985 * testsuite/23_containers/span/2.cc: New test.
986 * testsuite/23_containers/span/back_assert_neg.cc: New test.
987 * testsuite/23_containers/span/first_2_assert_neg.cc: New test.
988 * testsuite/23_containers/span/first_assert_neg.cc: New test.
989 * testsuite/23_containers/span/first_neg.cc: New test.
990 * testsuite/23_containers/span/front_assert_neg.cc: New test.
991 * testsuite/23_containers/span/index_op_assert_neg.cc: New test.
992 * testsuite/23_containers/span/last_2_assert_neg.cc: New test.
993 * testsuite/23_containers/span/last_assert_neg.cc: New test.
994 * testsuite/23_containers/span/subspan_2_assert_neg.cc: New test.
995 * testsuite/23_containers/span/subspan_3_assert_neg.cc: New test.
996 * testsuite/23_containers/span/subspan_4_assert_neg.cc: New test.
997 * testsuite/23_containers/span/subspan_5_assert_neg.cc: New test.
998 * testsuite/23_containers/span/subspan_6_assert_neg.cc: New test.
999 * testsuite/23_containers/span/subspan_assert_neg.cc: New test.
1000
1001 2019-09-05 JeanHeyd Meneide <phdofthehouse@gmail.com>
1002
1003 * include/Makefile.am: Add <span> header.
1004 * include/Makefile.in: Regenerate.
1005 * include/bits/range_access.h (__adl_begin, __adl_end, __adl_cbegin)
1006 (__adl_cend, __adl_rbegin, __adl_rend, __adl_crbegin, __adl_crend)
1007 (__adl_data, __adl_cdata, __adl_size, __adl_empty, __adl_to_address):
1008 New functions for performing argument-dependent lookup of range
1009 customization points.
1010 * include/bits/stl_iterator.h (__normal_iterator): Add
1011 _GLIBCXX20_CONSTEXPR to all functions.
1012 * include/std/span: New header.
1013 * include/std/version (__cpp_lib_span): Define feature test macro.
1014 * testsuite/23_containers/span/contiguous_range_neg.cc: New test.
1015 * testsuite/23_containers/span/everything.cc: New test.
1016 * testsuite/23_containers/span/get_neg.cc: New test.
1017 * testsuite/23_containers/span/last_neg.cc: New test.
1018 * testsuite/23_containers/span/subspan_neg.cc: New test.
1019 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: New test.
1020 * testsuite/23_containers/span/tuple_element_oob_neg.cc: New test.
1021 * testsuite/23_containers/span/tuple_size_neg.cc: New test.
1022
1023 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
1024
1025 * doc/xml/manual/allocator.xml: Remove URL for bibliography entry.
1026 * doc/html/*: Regenerate.
1027
1028 2019-09-04 Mike Crowe <mac@mcrowe.com>
1029
1030 PR libstdc++/41861
1031 * acinclude.m4 (GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT): Check for new
1032 pthread_cond_clockwait function.
1033 * configure.ac: Use GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT.
1034 * configure: Regenerate.
1035 * config.h.in: Regenerate.
1036 * include/std/condition_variable: (condition_variable): Rename
1037 __steady_clock_t typedef and add system_clock. Change __clock_t to be
1038 a typedef for the preferred clock to convert arbitrary other clocks to.
1039 [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (wait_until): Add a steady_clock
1040 overload.
1041 (wait_until): Change __clock_t overload to use system_clock.
1042 [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (__wait_until_impl): Add
1043 steady_clock overload that calls pthread_cond_clockwait.
1044 (__wait_until_impl): Change __clock_t overload to use system_clock.
1045 (condition_variable_any) [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT]: Use
1046 steady_clock for __clock_t if pthread_cond_clockwait is available.
1047
1048 2019-09-04 Mike Crowe <mac@mcrowe.com>
1049
1050 * testsuite/30_threads/condition_variable/members/2.cc (test01):
1051 Parameterise so that test can be run against an arbitrary clock.
1052 (main): Test using std::chrono::steady_clock and a user-defined
1053 clock in addition to the previous std::chrono::system_clock.
1054 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
1055
1056 2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
1057
1058 * crossconfig.m4: Remove references to spu.
1059 * configure: Regenerate.
1060 * doc/xml/manual/appendix_contributing.xml: Remove references
1061 to __ea as "badword" for spu.
1062 * doc/html/manual/source_code_style.html: Regenerate.
1063 * include/tr1/ell_integral.tcc (__ellint_rd): Do not attempt
1064 to avoid __ea (as "badword" for spu).
1065 (__ellint_rj): Likewise.
1066
1067 2019-09-03 Chung-Lin Tang <cltang@codesourcery.com>
1068
1069 PR other/79543
1070 * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Fix GNU ld --version
1071 scanning to conform to the GNU Coding Standards.
1072 * configure: Regenerate.
1073
1074 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1075
1076 * src/c++17/memory_resource.cc: Use __constinit keyword.
1077
1078 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1079
1080 * doc/xml/manual/abi.xml: Document 9.x library versions.
1081 * doc/html/*: Regenerate.
1082
1083 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1084
1085 * include/std/charconv (__detail::__to_chars_2_len): Use std::log2p1.
1086 (__detail::__to_chars_8_len): Remove.
1087 (__detail::__to_chars_8): Inline length calculation here.
1088 (__detail::__from_chars_binary): Use numeric_limits instead of
1089 CHAR_BIT.
1090
1091 2019-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1092
1093 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
1094 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: Likewise.
1095 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
1096 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
1097 Likewise.
1098
1099 2019-09-01 François Dumont <fdumont@gcc.gnu.org>
1100
1101 * testsuite_files/util/testsuite_performance.h
1102 (resource_counter::start): Ignore unused malloc(0) result.
1103
1104 2019-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1105
1106 * doc/xml/manual/policy_data_structures_biblio.xml (COM: Component
1107 Model Object Technologies): Adjust name and link.
1108
1109 2019-08-30 Antony Polukhin <antoshkka@gmail.com>
1110
1111 * include/std/charconv (__detail::__to_chars_8)
1112 __detail::__to_chars_16): Replace array of precomputed digits with
1113 arithmetic operations to avoid CPU cache misses. Remove zero
1114 termination from array of digits to allow symbol merge with generic
1115 implementation of __detail::__to_chars. Replace final offsets with
1116 constants. Use __detail::__to_chars_len_2 instead of a generic
1117 __detail::__to_chars_len.
1118 (__detail::__to_chars): Remove zero termination from array of digits.
1119 (__detail::__to_chars_2): Leading digit is always '1'.
1120
1121 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
1122
1123 * testsuite/23_containers/vector/cons/89164_c++17.cc: Fix errors.
1124
1125 2019-08-30 Uros Bizjak <ubizjak@gmail.com>
1126
1127 * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1128
1129 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
1130
1131 PR libstdc++/89164
1132 * include/bits/stl_algobase.h (__copy_move): Give descriptive names
1133 to template parameters.
1134 * include/bits/stl_uninitialized.h (uninitialized_copy)
1135 (uninitialized_fill, uninitialized_fill_n): Add static assertions to
1136 diagnose invalid uses.
1137 * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
1138 Adjust expected error.
1139 * testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc:
1140 New test.
1141 * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
1142 89164.cc: New test.
1143 * testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
1144 New test.
1145 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
1146 89164.cc: New test.
1147 * testsuite/23_containers/vector/cons/89164.cc: New test.
1148 * testsuite/23_containers/vector/cons/89164_c++17.cc: New test.
1149
1150 2019-08-29 Jonathan Wakely <jwakely@redhat.com>
1151
1152 PR libstdc++/91067
1153 * acinclude.m4 (libtool_VERSION): Bump to 6:28:0.
1154 * configure: Regenerate.
1155 * config/abi/pre/gnu.ver (GLIBCXX_3.4.28): Add new version. Export
1156 missing symbols.
1157 * testsuite/27_io/filesystem/iterators/91067.cc: Test move
1158 constructors.
1159 * testsuite/util/testsuite_abi.cc: Add new symbol version.
1160
1161 2019-08-29 Jakub Jelinek <jakub@redhat.com>
1162
1163 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
1164 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
1165
1166 2019-08-28 Jonathan Wakely <jwakely@redhat.com>
1167
1168 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
1169 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
1170 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
1171 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
1172 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
1173 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
1174 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
1175
1176 2019-08-23 Joseph Myers <joseph@codesourcery.com>
1177
1178 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
1179 (std::filesystem::__gnu_posix::lstat): Add return type.
1180
1181 2019-08-20 Jonathan Wakely <jwakely@redhat.com>
1182
1183 * doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers.
1184
1185 * include/std/numeric (reduce): Fix Doxygen markup.
1186
1187 PR libstdc++/91371
1188 * include/std/type_traits (is_function): Simplify definition. Remove
1189 partial specializations for function types.
1190 (__is_referenceable): Simplify definition.
1191 * testsuite/20_util/bind/91371.cc: New test.
1192 * testsuite/20_util/is_function/91371.cc: New test.
1193 * testsuite/20_util/is_function/value.cc: Check more pointer types.
1194 * testsuite/20_util/is_member_function_pointer/91371.cc: New test.
1195 * testsuite/20_util/is_object/91371.cc: New test.
1196
1197 2019-08-16 Uros Bizjak <ubizjak@gmail.com>
1198
1199 * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1200
1201 2019-08-15 Jonathan Wakely <jwakely@redhat.com>
1202
1203 PR libstdc++/91456
1204 * include/bits/std_function.h (__check_func_return_type): Remove.
1205 (function::_Callable): Use std::__is_invocable_impl instead of
1206 __check_func_return_type.
1207 * include/std/type_traits (__is_invocable_impl): Add another defaulted
1208 template parameter. Define a separate partial specialization for
1209 INVOKE and INVOKE<void>. For INVOKE<R> replace is_convertible check
1210 with a check that models delayed temporary materialization.
1211 * testsuite/20_util/function/91456.cc: New test.
1212 * testsuite/20_util/is_invocable/91456.cc: New test.
1213
1214 2019-08-14 Jonathan Wakely <jwakely@redhat.com>
1215
1216 * include/std/type_traits (__is_nullptr_t): Add deprecated attribute.
1217
1218 2019-08-14 Edward Smith-Rowland <3dw4rd@verizon.net>
1219
1220 Implement C++20 p0879 - Constexpr for swap and swap related functions.
1221 * include/std/version (__cpp_lib_constexpr_swap_algorithms): New macro.
1222 * include/bits/algorithmfwd.h (__cpp_lib_constexpr_swap_algorithms):
1223 New macro.
1224 (iter_swap, make_heap, next_permutation, partial_sort_copy, pop_heap)
1225 (prev_permutation, push_heap, reverse, rotate, sort_heap, swap)
1226 (swap_ranges, nth_element, partial_sort, sort): Add constexpr.
1227 * include/bits/move.h (swap): Add constexpr.
1228 * include/bits/stl_algo.h (__move_median_to_first, __reverse, reverse)
1229 (__gcd, __rotate, rotate, __partition, __heap_select)
1230 (__partial_sort_copy, partial_sort_copy, __unguarded_partition)
1231 (__unguarded_partition_pivot, __partial_sort, __introsort_loop, __sort)
1232 (__introselect, __chunk_insertion_sort, next_permutation)
1233 (prev_permutation, partition, partial_sort, nth_element, sort)
1234 (__iter_swap::iter_swap, iter_swap, swap_ranges): Add constexpr.
1235 * include/bits/stl_algobase.h (__iter_swap::iter_swap, iter_swap)
1236 (swap_ranges): Add constexpr.
1237 * include/bits/stl_heap.h (__push_heap, push_heap, __adjust_heap,
1238 __pop_heap, pop_heap, __make_heap, make_heap, __sort_heap, sort_heap):
1239 Add constexpr.
1240 * include/std/type_traits (swap): Add constexpr.
1241 * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Add constexpr.
1242 * testsuite/25_algorithms/iter_swap/constexpr.cc: New test.
1243 * testsuite/25_algorithms/make_heap/constexpr.cc: New test.
1244 * testsuite/25_algorithms/next_permutation/constexpr.cc: New test.
1245 * testsuite/25_algorithms/nth_element/constexpr.cc: New test.
1246 * testsuite/25_algorithms/partial_sort/constexpr.cc: New test.
1247 * testsuite/25_algorithms/partial_sort_copy/constexpr.cc: New test.
1248 * testsuite/25_algorithms/partition/constexpr.cc: New test.
1249 * testsuite/25_algorithms/pop_heap/constexpr.cc: New test.
1250 * testsuite/25_algorithms/prev_permutation/constexpr.cc: New test.
1251 * testsuite/25_algorithms/push_heap/constexpr.cc: New test.
1252 * testsuite/25_algorithms/reverse/constexpr.cc: New test.
1253 * testsuite/25_algorithms/rotate/constexpr.cc: New test.
1254 * testsuite/25_algorithms/sort/constexpr.cc: New test.
1255 * testsuite/25_algorithms/sort_heap/constexpr.cc: New test.
1256 * testsuite/25_algorithms/swap/constexpr.cc: New test.
1257 * testsuite/25_algorithms/swap_ranges/constexpr.cc: New test.
1258
1259 2019-08-12 Jonathan Wakely <jwakely@redhat.com>
1260
1261 PR libstdc++/90361
1262 * src/c++17/string-inst.cc: Use _GLIBCXX_USE_CXX11_ABI=1 by default.
1263
1264 * include/std/tuple (__unpack_std_tuple): New variable template and
1265 partial specializations.
1266 (apply, make_from_tuple): Add noexcept-specifier.
1267 * testsuite/20_util/tuple/apply/2.cc: New test.
1268 * testsuite/20_util/tuple/make_from_tuple/2.cc: New test.
1269
1270 2019-08-09 Corentin Gay <gay@adacore.com>
1271
1272 * testsuite/ext/random/beta_distribution/operators/serialize.cc,
1273 testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc,
1274 testsuite/ext/random/normal_mv_distribution/operators/serialize.cc,
1275 testsuite/ext/random/triangular_distribution/operators/serialize.cc,
1276 testsuite/ext/random/von_mises_distribution/operators/serialize.cc:
1277 Add call to `VERIFY`.
1278
1279 2019-08-09 Alexandre Oliva <oliva@adacore.com>
1280
1281 * include/ext/random
1282 (normal_mv_distribution::param_type::param_type): New private
1283 ctor taking a decomposed varcov matrix, for use by...
1284 (operator>>): ... this, befriended.
1285 * include/ext/random.tcc (operator>>): Use it.
1286 (normal_mv_distribution::param_type::_M_init_lower): Adjust
1287 member function name in exception message.
1288
1289 2019-08-08 Jonathan Wakely <jwakely@redhat.com>
1290
1291 P0325R4 to_array from LFTS with updates
1292 * include/experimental/array (to_array): Qualify call to __to_array.
1293 * include/std/array (__cpp_lib_to_array, to_array): Define for C++20.
1294 * include/std/version (__cpp_lib_to_array): Likewise.
1295 * testsuite/23_containers/array/creation/1.cc: New test.
1296 * testsuite/23_containers/array/creation/2.cc: New test.
1297 * testsuite/23_containers/array/creation/3_neg.cc: New test.
1298 * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
1299 Use zero for dg-error line number.
1300
1301 2019-08-06 Jonathan Wakely <jwakely@redhat.com>
1302
1303 P1651R0 bind_front should not unwrap reference_wrapper
1304 * include/std/functional (bind_front): Don't unwrap reference_wrapper.
1305 * include/std/version (__cpp_lib_bind_front): Update value.
1306 * testsuite/20_util/function_objects/bind_front/1.cc: Fix test for
1307 feature test macro.
1308 * testsuite/20_util/function_objects/bind_front/2.cc: New test.
1309
1310 * include/std/numbers [!__STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128]
1311 (e_v, log2e_v, log10e_v, pi_v, inv_pi_v, inv_sqrtpi_v, ln2_v, ln10_v)
1312 (sqrt2_v, sqrt3_v, inv_sqrt3, egamma_v, phi_v): Add explicit
1313 specializations for __float128.
1314 * testsuite/26_numerics/numbers/float128.cc: New test.
1315
1316 2019-08-04 Gerald Pfeifer <gerald@pfeifer.com>
1317
1318 * doc/xml/manual/documentation_hacking.xml: doxygen.org is now
1319 doxygen.nl.
1320
1321 2019-08-01 Edward Smith-Rowland <3dw4rd@verizon.net>
1322
1323 Implement C++20 p0202 - Add Constexpr Modifiers to Functions
1324 in <algorithm> and <utility> Headers.
1325 Implement C++20 p1023 - constexpr comparison operators for std::array.
1326 * include/bits/algorithmfwd.h (all_of, any_of, binary_search, copy,
1327 copy_backward, copy_if, copy_n, equal_range, fill, find_end,
1328 find_if_not, includes, is_heap, is_heap_until, is_partitioned,
1329 is_permutation, is_sorted, is_sorted_until, iter_swap, lower_bound,
1330 none_of, partition_copy, partition_point, remove, remove_if,
1331 remove_copy, remove_copy_if, replace_copy, replace_copy_if,
1332 reverse_copy, rotate_copy, uunique, upper_bound, adjacent_find, count,
1333 count_if, equal, find, find_first_of, find_if, for_each, generate,
1334 generate_n, lexicographical_compare, merge, mismatch, replace,
1335 replace_if, search, search_n, set_difference, set_intersection,
1336 set_symmetric_difference, set_union, transform, unique_copy):
1337 Mark constexpr.
1338 * include/bits/cpp_type_traits.h (__miter_base): Mark constexpr.
1339 * include/bits/predefined_ops.h (_Iter_less_val::operator(),
1340 _Val_less_iter::operator(), _Iter_equal_to_iter::operator(),
1341 _Iter_equal_to_val::operator(), _Iter_equals_val::operator()):
1342 Use const ref instead of ref arg;
1343 (_Iter_less_val, __iter_less_val, _Val_less_iter, __val_less_iter,
1344 __iter_equal_to_iter, __iter_equal_to_val, __iter_comp_val,
1345 _Iter_comp_val, _Val_comp_iter, __val_comp_iter, __iter_equals_val,
1346 _Iter_equals_iter, __iter_comp_iter, _Iter_pred, __pred_iter,
1347 _Iter_comp_to_val, __iter_comp_val, _Iter_comp_to_iter,
1348 __iter_comp_iter): Mark constexpr.
1349 * include/bits/stl_algo.h (__find_if, __find_if_not, __find_if_not_n,
1350 __search, __search_n_aux, __search_n, __find_end, find_end, all_of,
1351 none_of, any_of, find_if_not, is_partitioned, partition_point,
1352 __remove_copy_if, remove_copy, remove_copy_if, copy_if, __copy_n,
1353 copy_n, partition_copy, __remove_if, remove, remove_if, __adjacent_find,
1354 __unique, unique, __unique_copy, reverse_copy, rotate_copy,
1355 __unguarded_linear_insert, __insertion_sort, __unguarded_insertion_sort,
1356 __final_insertion_sort, lower_bound, __upper_bound, upper_bound,
1357 __equal_range, equal_range, binary_search, __includes, includes,
1358 __next_permutation, __prev_permutation, __replace_copy_if, replace_copy,
1359 replace_copy_if, __count_if, is_sorted, __is_sorted_until,
1360 is_sorted_until, __is_permutation, is_permutation, for_each, find,
1361 find_if, find_first_of, adjacent_find, count, count_if, search,
1362 search_n, transform, replace, replace_if, generate, generate_n,
1363 unique_copy, __merge, merge, __set_union, set_union, __set_intersection,
1364 set_intersection, __set_difference, set_difference,
1365 __set_symmetric_difference, set_symmetric_difference): Mark constexpr.
1366 * include/bits/stl_algobase.h (__memmove, __memcmp): New maybe constexpr
1367 wrappers around __builtin_memmove and __builtin_memcmp
1368 respectively;
1369 (__niter_base, __niter_wrap, __copy_m, __copy_move_a, __copy_move_a2,
1370 copy, move, __copy_move_b, __copy_move_backward_a,
1371 __copy_move_backward_a2, copy_backward, move_backward, __fill_a, fill,
1372 __fill_n_a, fill_n, equal, __lc_rai::__newlast1, __lc_rai::__cnd2,
1373 __lexicographical_compare_impl, __lexicographical_compare,
1374 __lexicographical_compare<true>::__lc, __lexicographical_compare_aux,
1375 __lower_bound, lower_bound, equal, __equal4, lexicographical_compare,
1376 __mismatch, mismatch, __is_heap_until, __is_heap, is_heap_until,
1377 is_heap): Mark constexpr.
1378 * include/bits/stl_heap.h (__is_heap_until, __is_heap, is_heap_until,
1379 is_heap): Mark constexpr.
1380 * include/bits/stl_iterator.h (__niter_base, __miter_base): Mark constexpr.
1381 * include/std/array: Make comparison ops constexpr.
1382 * include/std/utility: Make exchange constexpr.
1383 * include/std/version (__cpp_lib_constexpr_algorithms): New macro.
1384 * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust.
1385 * testsuite/23_containers/array/tuple_interface/
1386 tuple_element_neg.cc: Adjust.
1387 * testsuite/20_util/exchange/constexpr.cc: New.
1388 * testsuite/23_containers/array/comparison_operators/constexpr.cc: New.
1389 * testsuite/25_algorithms/constexpr_macro.cc: New.
1390 * testsuite/25_algorithms/adjacent_find/constexpr.cc: New.
1391 * testsuite/25_algorithms/all_of/constexpr.cc: New.
1392 * testsuite/25_algorithms/any_of/constexpr.cc: New.
1393 * testsuite/25_algorithms/binary_search/constexpr.cc: New.
1394 * testsuite/25_algorithms/copy/constexpr.cc: New.
1395 * testsuite/25_algorithms/copy_backward/constexpr.cc: New.
1396 * testsuite/25_algorithms/copy_if/constexpr.cc: New.
1397 * testsuite/25_algorithms/copy_n/constexpr.cc: New.
1398 * testsuite/25_algorithms/count/constexpr.cc: New.
1399 * testsuite/25_algorithms/count_if/constexpr.cc: New.
1400 * testsuite/25_algorithms/equal/constexpr.cc: New.
1401 * testsuite/25_algorithms/equal_range/constexpr.cc: New.
1402 * testsuite/25_algorithms/fill/constexpr.cc: New.
1403 * testsuite/25_algorithms/fill_n/constexpr.cc: New.
1404 * testsuite/25_algorithms/find/constexpr.cc: New.
1405 * testsuite/25_algorithms/find_end/constexpr.cc: New.
1406 * testsuite/25_algorithms/find_first_of/constexpr.cc: New.
1407 * testsuite/25_algorithms/find_if/constexpr.cc: New.
1408 * testsuite/25_algorithms/find_if_not/constexpr.cc: New.
1409 * testsuite/25_algorithms/for_each/constexpr.cc: New.
1410 * testsuite/25_algorithms/generate/constexpr.cc: New.
1411 * testsuite/25_algorithms/generate_n/constexpr.cc: New.
1412 * testsuite/25_algorithms/is_heap/constexpr.cc: New.
1413 * testsuite/25_algorithms/is_heap_until/constexpr.cc: New.
1414 * testsuite/25_algorithms/is_partitioned/constexpr.cc: New.
1415 * testsuite/25_algorithms/is_permutation/constexpr.cc: New.
1416 * testsuite/25_algorithms/is_sorted/constexpr.cc: New.
1417 * testsuite/25_algorithms/is_sorted_until/constexpr.cc: New.
1418 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: New.
1419 * testsuite/25_algorithms/lower_bound/constexpr.cc: New.
1420 * testsuite/25_algorithms/merge/constexpr.cc: New.
1421 * testsuite/25_algorithms/mismatch/constexpr.cc: New.
1422 * testsuite/25_algorithms/none_of/constexpr.cc: New.
1423 * testsuite/25_algorithms/partition_copy/constexpr.cc: New.
1424 * testsuite/25_algorithms/partition_point/constexpr.cc: New.
1425 * testsuite/25_algorithms/remove/constexpr.cc: New.
1426 * testsuite/25_algorithms/remove_copy/constexpr.cc: New.
1427 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: New.
1428 * testsuite/25_algorithms/remove_if/constexpr.cc: New.
1429 * testsuite/25_algorithms/replace_copy/constexpr.cc: New.
1430 * testsuite/25_algorithms/replace_copy_if/constexpr.cc: New.
1431 * testsuite/25_algorithms/replace_if/constexpr.cc: New.
1432 * testsuite/25_algorithms/reverse_copy/constexpr.cc: New.
1433 * testsuite/25_algorithms/rotate_copy/constexpr.cc: New.
1434 * testsuite/25_algorithms/search/constexpr.cc: New.
1435 * testsuite/25_algorithms/search_n/constexpr.cc: New.
1436 * testsuite/25_algorithms/set_difference/constexpr.cc: New.
1437 * testsuite/25_algorithms/set_intersection/constexpr.cc: New.
1438 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: New.
1439 * testsuite/25_algorithms/set_union/constexpr.cc: New.
1440 * testsuite/25_algorithms/transform/constexpr.cc: New.
1441 * testsuite/25_algorithms/unique/constexpr.cc: New.
1442 * testsuite/25_algorithms/unique_copy/constexpr.cc: New.
1443 * testsuite/25_algorithms/upper_bound/constexpr.cc: New.
1444
1445 2019-07-31 Jonathan Wakely <jwakely@redhat.com>
1446
1447 * include/std/memory (make_obj_using_allocator): Qualify call to
1448 uses_allocator_construction_args.
1449
1450 P0631R4 Math Constants
1451 * include/Makefile.am: Add new header.
1452 * include/Makefile.in: Regenerate.
1453 * include/precompiled/stdc++.h: Include new header.
1454 * include/std/numbers: New header.
1455 * include/std/version (__cpp_lib_math_constants): Define.
1456 * testsuite/26_numerics/numbers/1.cc: New test.
1457 * testsuite/26_numerics/numbers/2.cc: New test.
1458 * testsuite/26_numerics/numbers/3.cc: New test.
1459 * testsuite/26_numerics/numbers/nonfloat_neg.cc: New test.
1460
1461 * include/std/bit: Add Doxygen comments.
1462
1463 PR libstdc++/91308
1464 * include/bits/unique_ptr.h (unique_ptr::__safe_conversion_up): Remove
1465 constraints on deleter that should only apply to the constructor.
1466 (unique_ptr<T[], D>::__safe_conversion_up): Likewise.
1467 (unique_ptr<T[], D>::unique_ptr(unique_ptr<U, D>&&)): Restore
1468 constraints on deleter here.
1469 * testsuite/20_util/unique_ptr/assign/91308.cc: New test.
1470
1471 2019-07-29 Jonathan Wakely <jwakely@redhat.com>
1472
1473 PR libstdc++/51333
1474 * libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define
1475 constructor inline.
1476 * libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define
1477 constructor.
1478 * testsuite/18_support/51333.cc: New test.
1479
1480 2019-07-28 Gerald Pfeifer <gerald@pfeifer.com>
1481
1482 * doc/xml/manual/documentation_hacking.xml: Fix broken reference
1483 to the Doxygen manual. Avoid a "here" link on the way.
1484 Fix another broken link to Doxygen docblocks.
1485
1486 2019-07-26 Jonathan Wakely <jwakely@redhat.com>
1487
1488 * include/std/bit (__cpp_lib_endian): Define.
1489 * include/std/version (__cpp_lib_endian): Define.
1490 * testsuite/26_numerics/endian/2.cc: New.
1491 * testsuite/26_numerics/endian/3.cc: New.
1492 * testsuite/26_numerics/endian/4.cc: New.
1493
1494 2019-07-26 François Dumont <fdumont@gcc.gnu.org>
1495
1496 * testsuite/util/testsuite_iterators.h
1497 (bidirectional_iterator_wrapper): Fix type comment.
1498 (random_access_iterator_wrapper): Likewise.
1499
1500 2019-07-25 Jonathan Wakely <jwakely@redhat.com>
1501
1502 * include/std/bit (endian): Move definition here as per P1612R1.
1503 * include/std/type_traits (endian): Remove definition from here.
1504 * testsuite/20_util/endian/1.cc: Rename to ...
1505 * testsuite/26_numerics/endian/1.cc: ... here. Adjust header.
1506
1507 2019-07-25 Martin Liska <mliska@suse.cz>
1508 Dominik Infuhr <dominik.infuehr@theobroma-systems.com>
1509
1510 PR c++/23383
1511 * testsuite/ext/bitmap_allocator/check_delete.cc: Add
1512 -fno-allocation-dce.
1513 * testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
1514 * testsuite/ext/new_allocator/check_delete.cc: Likewise.
1515 * testsuite/ext/new_allocator/check_new.cc: Likewise.
1516
1517 2019-07-22 Jonathan Wakely <jwakely@redhat.com>
1518
1519 * testsuite/26_numerics/bit/bitops.count/*: Rename to ...
1520 * testsuite/26_numerics/bit/bit.count/*: Here.
1521
1522 * include/std/bit (__rotl, __rotr): Change second parameter from
1523 unsigned int to int and handle negative values.
1524 (rotl, rotr): Remove check for __STRICT_ANSI__. Change second
1525 parameter from unsigned int to int. Add nodiscard attribute.
1526 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Rename to ...
1527 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Here. Test negative
1528 shifts.
1529 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: Rename to ...
1530 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Here. Test negative
1531 shifts.
1532
1533 * include/std/bit (__ceil2): Make unrepresentable results undefined,
1534 as per P1355R2. Add debug assertion. Perform one left shift, not two,
1535 so that out of range values cause undefined behaviour. Ensure that
1536 shift will still be undefined if left operand is promoted.
1537 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Replace checks for
1538 unrepresentable values with checks that they are not core constant
1539 expressions.
1540 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: New test.
1541
1542 2019-07-19 François Dumont <fdumont@gcc.gnu.org>
1543
1544 * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): Fix
1545 sized deallocation size computation.
1546
1547 2019-07-19 Andreas Schwab <schwab@linux-m68k.org>
1548
1549 * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
1550
1551 2019-07-18 François Dumont <fdumont@gcc.gnu.org>
1552
1553 * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): New.
1554 (~_Temporary_buffer()): Use latter.
1555 (_Temporary_buffer(_FIterator, size_type)): Likewise.
1556
1557 2019-07-17 Andreas Schwab <schwab@suse.de>
1558
1559 * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
1560
1561 2019-07-16 Jason Merrill <jason@redhat.com>
1562
1563 * include/std/memory (uses_allocator_construction_args): Add parens
1564 around constraint.
1565
1566 2019-07-12 Jonathan Wakely <jwakely@redhat.com>
1567
1568 * testsuite/29_atomics/atomic_float/1.cc: Fix comment.
1569
1570 * include/experimental/string_view (__detail::__idt): Remove.
1571 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
1572 Use __type_identity_t instead of __detail::__idt;
1573 * include/std/string_view (__detail::__idt): Remove.
1574 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
1575 Use __type_identity_t instead of __detail::__idt;
1576 * include/std/type_traits (__type_identity_t): New alias template.
1577
1578 * doc/xml/manual/status_cxx2020.xml: Update status for atomic_ref
1579 and floating point atomics.
1580
1581 2019-07-11 Jonathan Wakely <jwakely@redhat.com>
1582
1583 * doc/xml/manual/configure.xml: Improve documentation of
1584 --enable-libstdcxx-time option.
1585
1586 * include/bits/atomic_base.h (__atomic_impl): New namespace for
1587 wrappers around atomic built-ins.
1588 (__atomic_float, __atomic_ref): New class templates for use as base
1589 classes.
1590 * include/std/atomic (atomic<float>, atomic<double>)
1591 (atomic<long double>): New explicit specializations.
1592 (atomic_ref): New class template.
1593 (__cpp_lib_atomic_ref): Define.
1594 * include/std/version (__cpp_lib_atomic_ref): Define.
1595 * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error.
1596 * testsuite/29_atomics/atomic_float/1.cc: New test.
1597 * testsuite/29_atomics/atomic_float/requirements.cc: New test.
1598 * testsuite/29_atomics/atomic_ref/deduction.cc: New test.
1599 * testsuite/29_atomics/atomic_ref/float.cc: New test.
1600 * testsuite/29_atomics/atomic_ref/generic.cc: New test.
1601 * testsuite/29_atomics/atomic_ref/integral.cc: New test.
1602 * testsuite/29_atomics/atomic_ref/pointer.cc: New test.
1603 * testsuite/29_atomics/atomic_ref/requirements.cc: New test.
1604
1605 2019-07-06 Jonathan Wakely <jwakely@redhat.com>
1606
1607 * include/ext/atomicity.h (__exchange_and_add, __atomic_add): Replace
1608 throw() with _GLIBCXX_NOTHROW.
1609 (__atomic_add_dispatch): Return after performing atomic increment.
1610
1611 2019-07-05 Jonathan Wakely <jwakely@redhat.com>
1612
1613 * include/ext/atomicity.h [_GLIBCXX_ATOMIC_BUILTINS] (__atomic_add)
1614 (__exchange_and_add): Replace static specifier with always_inline
1615 attribute.
1616 (__exchange_and_add_single, __atomic_add_single): Likewise.
1617 (__exchange_and_add_dispatch, __atomic_add_dispatch): Likewise. Also
1618 combine !__gthread_active_p() and !__GTHREADS branches.
1619
1620 2019-07-03 Jonathan Wakely <jwakely@redhat.com>
1621
1622 PR libstdc++/91067
1623 * acinclude.m4 (libtool_VERSION): Bump to 6:27:0.
1624 * configure: Regenerate.
1625 * config/abi/pre/gnu.ver (GLIBCXX_3.4.27): Add new version. Export
1626 missing symbols.
1627 * testsuite/27_io/filesystem/iterators/91067.cc: New test.
1628 * testsuite/util/testsuite_abi.cc: Add new symbol version.
1629
1630 2019-07-02 Jonathan Wakely <jwakely@redhat.com>
1631
1632 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_LAUNDER)
1633 (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED): Use __has_builtin
1634 instead of __is_identifier to detect Clang support.
1635
1636 2019-07-02 Jim Wilson <jimw@sifive.com>
1637
1638 * configure.ac (BUILD_PDF): Also test for doxygen, dot, xsltproc,
1639 and xmllint.
1640 * configure: Regenerate.
1641
1642 2019-06-27 Jonathan Wakely <jwakely@redhat.com>
1643
1644 PR libstdc++/91012
1645 * src/c++17/fs_path.cc (filesystem_error::_Impl): Use a string_view
1646 for the what_arg parameters.
1647 (filesystem_error::filesystem_error): Pass system_error::what() to
1648 the _Impl constructor.
1649 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Ensure that
1650 filesystem_error::what() contains system_error::what().
1651
1652 2019-06-26 Jonathan Wakely <jwakely@redhat.com>
1653
1654 * include/std/charconv (chars_format): Define bitmask type.
1655 * testsuite/20_util/to_chars/chars_format.cc: New test.
1656
1657 * include/bits/fs_path.h (path::__is_encoded_char): Use __is_one_of.
1658 * include/std/bit (_If_is_unsigned_integer_type): Remove.
1659 (_If_is_unsigned_integer): Use __is_unsigned_integer.
1660 (rotl(byte, unsigned), rotr(byte, unsigned), countl_zero(byte))
1661 (countl_one(byte), countr_zero(byte), countr_one(byte))
1662 (popcount(byte), ispow2(byte), ceil2(byte), floor2(byte))
1663 (log2p1(byte)): Remove.
1664 * include/std/charconv (__detail::__is_one_of): Move to <type_traits>.
1665 (__detail::__is_int_to_chars_type): Remove.
1666 (__detail::__integer_to_chars_result_type): Use __is_signed_integer
1667 and __is_unsigned_integer.
1668 * include/std/type_traits (__is_one_of): Move here from <charconv>.
1669 (__is_signed_integer, __is_unsigned_integer): New helpers.
1670 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Remove test for
1671 std::byte overload.
1672 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
1673 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
1674 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
1675 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Likewise.
1676 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
1677 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
1678 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
1679 * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
1680 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Likewise.
1681 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: Likewise.
1682
1683 2019-06-25 Jonathan Wakely <jwakely@redhat.com>
1684
1685 * include/std/numeric (midpoint(T, T)): Avoid std::abs in constexpr
1686 function.
1687
1688 2019-06-25 Jakub Jelinek <jakub@redhat.com>
1689
1690 * include/pstl/pstl_config.h (_PSTL_PRAGMA_SIMD_SCAN,
1691 _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN, _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN):
1692 Define to OpenMP 5.0 pragmas even for GCC 10.0+.
1693 (_PSTL_UDS_PRESENT): Define to 1 for GCC 10.0+.
1694
1695 2019-06-24 Jonathan Wakely <jwakely@redhat.com>
1696
1697 * include/std/numeric (midpoint(T, T)): Change implementation for
1698 floating-point types to avoid incorrect rounding of denormals.
1699 * testsuite/26_numerics/midpoint/floating.cc: Add check for correct
1700 rounding with denormals.
1701 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line numbers.
1702 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1703
1704 * testsuite/18_support/headers/cfloat/values_c++17.cc: New test.
1705
1706 2019-06-20 Jonathan Wakely <jwakely@redhat.com>
1707
1708 * acinclude.m4 (GLIBCXX_ENABLE_DEBUG): Only do debug build for final
1709 stage of bootstrap.
1710 * configure: Regenerate.
1711
1712 * include/std/variant (_Variant_storage, _Extra_visit_slot_needed):
1713 Qualify calls to __never_valueless.
1714
1715 * doc/xml/manual/status_cxx2017.xml: Fix outdated reference to
1716 C++17 working draft.
1717
1718 * testsuite/libstdc++-prettyprinters/simple.cc: Use non-palindromic
1719 vector<bool> for test.
1720 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1721
1722 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
1723
1724 * include/bits/stream_iterator.h (istream_iterator::_M_equal()): Make
1725 private.
1726 (istream_iterator::_M_read()): Do not check stream state before
1727 attempting extraction. Set stream pointer to null when extraction
1728 fails (P0738R2).
1729 (operator==(const istream_iterator&, const istream_iterator&)): Change
1730 to be a hidden friend of istream_iterator.
1731 (operator!=(const istream_iterator&, const istream_iterator&)):
1732 Likewise.
1733 (ostream_iterator::ostream_iterator()): Add default constructor.
1734 (ostream_iterator::ostream_iterator(ostream_type*, const C*)): Use
1735 addressof.
1736 * testsuite/24_iterators/istream_iterator/1.cc: New test.
1737 * testsuite/24_iterators/ostream_iterator/1.cc: New test.
1738 * testsuite/24_iterators/ostream_iterator/70766.cc: Also check
1739 constructor taking a string.
1740 * testsuite/24_iterators/ostream_iterator/requirements/constexpr.cc:
1741 New test.
1742
1743 2019-06-19 Michael Weghorn <m.weghorn@posteo.de>
1744 Jonathan Wakely <jwakely@redhat.com>
1745
1746 PR libstdc++/90945
1747 * python/libstdcxx/v6/printers.py (StdVectorPrinter._iterator): Use
1748 values of type bool for vector<bool> elements.
1749 * testsuite/libstdc++-prettyprinters/simple.cc: Test vector<bool>.
1750 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1751
1752 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
1753
1754 PR libstdc++/90920 partially revert r263433
1755 * include/bits/stl_algo.h (__rotate): Restore checks for empty ranges.
1756 (rotate): Remove checks.
1757 * testsuite/25_algorithms/rotate/90920.cc: New test.
1758
1759 * include/std/numeric (reduce(Iter, Iter, T, BinOp)): Fix value
1760 category used in invocable check.
1761 (reduce(Iter, Iter, T)): Pass initial value as rvalue.
1762 * testsuite/26_numerics/reduce/2.cc: New test.
1763
1764 2019-06-18 Jonathan Wakely <jwakely@redhat.com>
1765
1766 * include/bits/algorithmfwd.h: Change title of doc group.
1767 * include/bits/stl_algo.h (for_each_n): Add new C++17 algorithm from
1768 P0024R2.
1769 * include/bits/stl_numeric.h: Define doc group and add algos to it.
1770 * include/std/numeric (__is_random_access_iter): New internal trait.
1771 (reduce, transform_reduce, exclusive_scan, inclusive_scan)
1772 (transform_exclusive_scan, transform_inclusive_scan): Likewise.
1773 * testsuite/25_algorithms/for_each/for_each_n.cc: New test.
1774 * testsuite/26_numerics/exclusive_scan/1.cc: New test.
1775 * testsuite/26_numerics/inclusive_scan/1.cc: New test.
1776 * testsuite/26_numerics/reduce/1.cc: New test.
1777 * testsuite/26_numerics/transform_exclusive_scan/1.cc: New test.
1778 * testsuite/26_numerics/transform_inclusive_scan/1.cc: New test.
1779 * testsuite/26_numerics/transform_reduce/1.cc: New test.
1780 * testsuite/util/testsuite_iterators.h (test_container::size()): New
1781 member function.
1782
1783 * include/c_global/cstddef (std::byte): Perform arithmetic operations
1784 in unsigned int to avoid promotion (LWG 2950).
1785
1786 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
1787
1788 * testsuite/20_util/allocator/1.cc: Add sized delete, which fixes a
1789 failure on AIX.
1790
1791 * include/c_global/cmath (__lerp, lerp): Add noexcept (LWG 3201).
1792
1793 PR libstdc++/90281 Fix string conversions for filesystem::path
1794 * include/bits/fs_path.h (u8path) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
1795 Use codecvt_utf8_utf16 instead of codecvt_utf8. Use
1796 __str_codecvt_in_all to fail for partial conversions and throw on
1797 error.
1798 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS && _GLIBCXX_USE_CHAR8_T]
1799 (path::_Cvt<char8_t>): Add explicit specialization.
1800 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_wconvert): Remove
1801 overloads.
1802 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
1803 if-constexpr instead of dispatching to _S_wconvert. Use codecvt
1804 instead of codecvt_utf8. Use __str_codecvt_in_all and
1805 __str_codecvt_out_all.
1806 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
1807 codecvt instead of codecvt_utf8. Use __str_codecvt_out_all.
1808 (path::_S_str_convert) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
1809 codecvt_utf8_utf16 instead of codecvt_utf8. Construct return values
1810 with allocator. Use __str_codecvt_out_all. Fallthrough to POSIX code
1811 after converting to UTF-8.
1812 (path::_S_str_convert): Use codecvt instead of codecvt_utf8. Use
1813 __str_codecvt_in_all.
1814 (path::string): Fix initialization of string types with different
1815 allocators.
1816 (path::u8string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
1817 codecvt_utf8_utf16 instead of codecvt_utf8. Use __str_codecvt_out_all.
1818 * include/bits/locale_conv.h (__do_str_codecvt): Reorder static and
1819 runtime conditions.
1820 (__str_codecvt_out_all, __str_codecvt_in_all): New functions that
1821 return false for partial conversions.
1822 * include/experimental/bits/fs_path.h (u8path):
1823 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Implement correctly for mingw.
1824 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_wconvert): Add
1825 missing handling for char8_t. Use codecvt and codecvt_utf8_utf16
1826 instead of codecvt_utf8. Use __str_codecvt_in_all and
1827 __str_codecvt_out_all.
1828 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
1829 codecvt instead of codecvt_utf8. Use __str_codecvt_out_all.
1830 (path::string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
1831 codecvt_utf8_utf16 instead of codecvt_utf8. Construct return values
1832 with allocator. Use __str_codecvt_out_all and __str_codecvt_in_all.
1833 (path::string) [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
1834 __str_codecvt_in_all.
1835 (path::u8string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
1836 codecvt_utf8_utf16 instead of codecvt_utf8. Use __str_codecvt_out_all.
1837 * src/c++17/fs_path.cc (path::_S_convert_loc): Use
1838 __str_codecvt_in_all.
1839 * src/filesystem/path.cc (path::_S_convert_loc): Likewise.
1840 * testsuite/27_io/filesystem/path/construct/90281.cc: New test.
1841 * testsuite/27_io/filesystem/path/factory/u8path.cc: New test.
1842 * testsuite/27_io/filesystem/path/native/string.cc: Test with empty
1843 strings and with Unicode characters outside the basic multilingual
1844 plane.
1845 * testsuite/27_io/filesystem/path/native/alloc.cc: New test.
1846 * testsuite/experimental/filesystem/path/construct/90281.cc: New test.
1847 * testsuite/experimental/filesystem/path/factory/u8path.cc: New test.
1848 * testsuite/experimental/filesystem/path/native/alloc.cc: New test.
1849 * testsuite/experimental/filesystem/path/native/string.cc: Test with
1850 empty strings and with Unicode characters outside the basic
1851 multilingual plane.
1852
1853 2019-06-17 François Dumont <fdumont@gcc.gnu.org>
1854 Jonathan Wakely <jwakely@redhat.com>
1855
1856 * include/bits/hashtable.h (struct _Hashtable::_Scoped_node): New type.
1857 (_Hashtable::_M_insert_unique_node): Add key_type parameter. Don't
1858 deallocate node if insertion fails.
1859 (_Hashtable::_M_insert_multi_node): Likewise.
1860 (_Hashtable::_M_reinsert_node): Pass additional key argument.
1861 (_Hashtable::_M_reinsert_node_multi): Likewise. Remove FIXME.
1862 (_Hashtable::_M_extract_node(size_t, __node_base*)): New function.
1863 (_Hashtable::extract(const_iterator)): Use _M_extract_node.
1864 (_Hashtable::extract(const _Key&)): Likewise.
1865 (_Hashtable::_M_merge_unique): Pass additional key argument.
1866 (_Hashtable::_M_emplace<Args>(true_type, Args&&...)): Likewise. Use
1867 _Scoped_node.
1868 (_Hashtable::_M_insert): Likewise.
1869 * include/bits/hashtable_policy.h (_Map_base::operator[]): Likewise.
1870 (_Hashtable_alloc): Add comments to functions with misleading names.
1871
1872 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
1873
1874 * testsuite/20_util/bad_function_call/what.cc: Include <string> header
1875 for std::string.
1876 * testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc: Likewise.
1877 * testsuite/20_util/tuple/cons/allocator_with_any.cc: Include <memory>
1878 header for std::allocator.
1879 * testsuite/23_containers/array/tuple_interface/tuple_element.cc: Add
1880 using-declaration for std::size_t.
1881 * testsuite/23_containers/array/tuple_interface/tuple_size.cc:
1882 Likewise.
1883 * testsuite/23_containers/deque/cons/55977.cc: Include <istream> for
1884 std::istream.
1885 * testsuite/23_containers/vector/cons/55977.cc: Likewise.
1886 * testsuite/experimental/map/erasure.cc: Include <string> for
1887 std::string.
1888 * testsuite/experimental/unordered_map/erasure.cc: Likewise.
1889
1890 2019-06-14 Jonathan Wakely <jwakely@redhat.com>
1891
1892 * include/experimental/type_traits (experimental::nonesuch): Use
1893 pragma to disable -Wctor-dtor-privacy warnings.
1894 * include/std/type_traits (__is_convertible_helper<From, To, false>)
1895 (__is_nt_convertible_helper<From, To, false>, __nonesuch): Likewise.
1896
1897 * include/std/version (__cpp_lib_bind_front): Add missing macro.
1898
1899 2019-06-12 Jonathan Wakely <jwakely@redhat.com>
1900
1901 * include/std/algorithm (__cpp_lib_parallel_algorithm): Fix value.
1902 * include/std/memory (__cpp_lib_parallel_algorithm): Likewise.
1903 * include/std/numeric (__cpp_lib_parallel_algorithm): Likewise.
1904 * testsuite/25_algorithms/pstl/feature_test.cc: New test.
1905
1906 * include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
1907 (variant::emplace): Change static_assert messages from "should be"
1908 to "must be".
1909 (hash<monostate>::operator()): Remove name of unused parameter.
1910
1911 * include/std/mutex (scoped_lock::~scoped_lock()): Use fold
1912 expression.
1913
1914 * include/Makefile.am: Add new <bits/charconv.h> header.
1915 * include/Makefile.in: Regenerate.
1916 * include/bits/basic_string.h (to_string(int), to_string(unsigned))
1917 (to_string(long), to_string(unsigned long), to_string(long long))
1918 (to_string(unsigned long long)): Rewrite to use __to_chars_10_impl.
1919 * include/bits/charconv.h: New header.
1920 (__detail::__to_chars_len): Move here from <charconv>.
1921 (__detail::__to_chars_10_impl): New function extracted from
1922 __detail::__to_chars_10.
1923 * include/std/charconv (__cpp_lib_to_chars): Add, but comment out.
1924 (__to_chars_unsigned_type): New class template that reuses
1925 __make_unsigned_selector_base::__select to pick a type.
1926 (__unsigned_least_t): Redefine as __to_chars_unsigned_type<T>::type.
1927 (__detail::__to_chars_len): Move to new header.
1928 (__detail::__to_chars_10): Add inline specifier. Move code doing the
1929 output to __detail::__to_chars_10_impl and call that.
1930 * include/std/version (__cpp_lib_to_chars): Add, but comment out.
1931 * testsuite/21_strings/basic_string/numeric_conversions/char/
1932 to_string.cc: Fix reference in comment. Remove unused variable.
1933 * testsuite/21_strings/basic_string/numeric_conversions/char/
1934 to_string_int.cc: New test.
1935
1936 2019-06-09 Edward Smith-Rowland <3dw4rd@verizon.net>
1937
1938 Fix ConstexprIterator requirements tests - No constexpr algorithms!
1939 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
1940 Replace copy with hand-rolled loop.
1941 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
1942 Ditto.
1943
1944 2019-06-08 Edward Smith-Rowland <3dw4rd@verizon.net>
1945
1946 Test for C++20 p0858 - ConstexprIterator requirements.
1947 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
1948 New test.
1949 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
1950 New test.
1951
1952 2019-06-07 Thomas Rodgers <trodgers@redhat.com>
1953
1954 Rename PSTL macro's consistent with libstdc++ (and llvm upstream
1955 project) standards.
1956 * include/bits/c++config: Rename all macros of the form __PSTL* to
1957 _PSTL*.
1958 * include/std/algorithm: Likewise.
1959 * include/std/execution: Likewise.
1960 * include/std/numeric: Likewise.
1961 * include/std/memory: Likewise.
1962 * include/pstl/glue_memory_impl.h: Likewise.
1963 * include/pstl/numeric_impl.h: Likewise.
1964 * include/pstl/glue_memory_defs.h: Likewise.
1965 * include/pstl/execution_defs.h: Likewise.
1966 * include/pstl/utils.h: Likewise.
1967 * include/pstl/algorithm_fwd.h: Likewise.
1968 * include/pstl/unseq_backend_simd.h: Likewise.
1969 * include/pstl/glue_execution_defs.h: Likewise.
1970 * include/pstl/algorithm_impl.h: Likewise.
1971 * include/pstl/parallel_impl.h: Likewise.
1972 * include/pstl/memory_impl.h: Likewise.
1973 * include/pstl/glue_numeric_defs.h: Likewise.
1974 * include/pstl/parallel_backend_utils.h: Likewise.
1975 * include/pstl/glue_algorithm_defs.h: Likewise.
1976 * include/pstl/parallel_backend.h: Likewise.
1977 * include/pstl/glue_numeric_impl.h: Likewise.
1978 * include/pstl/parallel_backend_tbb.h: Likewise.
1979 * include/pstl/numeric_fwd.h: Likewise.
1980 * include/pstl/glue_algorithm_impl.h: Likewise.
1981 * include/pstl/execution_impl.h: Likewise.
1982 * include/pstl/pstl_config.h: Likewise.
1983 * testsuite/util/pstl/pstl_test_config.h: Likewise.
1984 * testsuite/util/pstl/test_utils.h: Likewise.
1985 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
1986 Likewise.
1987 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
1988 Likewise.
1989 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
1990 Likewise.
1991 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
1992 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: Likewise.
1993 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
1994 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: Likewise.
1995 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
1996 Likewise.
1997 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Likewise.
1998 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: Likewise.
1999 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: Likewise.
2000 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: Likewise.
2001 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
2002 Likewise.
2003 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: Likewise.
2004 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Likewise.
2005 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: Likewise.
2006 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: Likewise.
2007 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
2008 Likewise.
2009 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
2010 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: Likewise.
2011 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
2012 Likewise.
2013 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
2014 Likewise.
2015 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Likewise.
2016 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
2017 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
2018 Likewise.
2019 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
2020 Likewise.
2021 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
2022 Likewise.
2023 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
2024 Likewise.
2025 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
2026 Likewise.
2027 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
2028 Likewise.
2029 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
2030 Likewise.
2031 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
2032 Likewise.
2033 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
2034 Likewise.
2035 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
2036 Likewise.
2037 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
2038 Likewise.
2039 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.
2040
2041 Rename header guards to be consistent with upstream project's
2042 conventions.
2043 * include/pstl/glue_memory_impl.h: Rename all macros of the form
2044 _PSTL_(.*)_H to _PSTL_\U\1_H.
2045 * include/pstl/numeric_impl.h: Likewise.
2046 * include/pstl/glue_memory_defs.h: Likewise.
2047 * include/pstl/execution_defs.h: Likewise.
2048 * include/pstl/utils.h: Likewise.
2049 * include/pstl/algorithm_fwd.h: Likewise.
2050 * include/pstl/unseq_backend_simd.h: Likewise.
2051 * include/pstl/glue_execution_defs.h: Likewise.
2052 * include/pstl/algorithm_impl.h: Likewise.
2053 * include/pstl/parallel_impl.h: Likewise.
2054 * include/pstl/memory_impl.h: Likewise.
2055 * include/pstl/glue_numeric_defs.h: Likewise.
2056 * include/pstl/parallel_backend_utils.h: Likewise.
2057 * include/pstl/glue_algorithm_defs.h: Likewise.
2058 * include/pstl/parallel_backend.h: Likewise.
2059 * include/pstl/glue_numeric_impl.h: Likewise.
2060 * include/pstl/parallel_backend_tbb.h: Likewise.
2061 * include/pstl/numeric_fwd.h: Likewise.
2062 * include/pstl/glue_algorithm_impl.h: Likewise.
2063 * include/pstl/execution_impl.h: Likewise.
2064 * include/pstl/pstl_config.h: Likewise.
2065 * testsuite/util/pstl/pstl_test_config.h: Likewise.
2066
2067 Synchronize libstdc++ parallel algorithms with upstream
2068 project.
2069 * include/pstl/algorithm_fwd.h: Synchronize with
2070 upstream PSTL project.
2071 * include/pstl/algorithm_impl.h: Likewise.
2072 * include/pstl/execution_defs.h: Likewise.
2073 * include/pstl/execution_impl.h: Likewise.
2074 * include/pstl/glue_algorithm_impl.h: Likewise.
2075 * include/pstl/glue_execution_defs.h: Likewise.
2076 * include/pstl/numeric_fwd.h: Likewise.
2077 * include/pstl/numeric_impl.h: Likewise.
2078 * include/pstl/parallel_backend.h: Likewise.
2079 * include/pstl/pstl_config.h: Likewise.
2080 * include/pstl/unseq_backend_simd.h: Likewise.
2081 * include/pstl/parallel_backend_serial.h: New file.
2082 * include/Makefile.am (pstl_headers): Add
2083 parallel_backend_serial.h.
2084 * include/Makefile.in: Regenerate.
2085
2086 Clean up non-conforming names
2087 * include/pstl/algorithm_impl.h (__parallel_set_union_op):
2088 Uglfiy copy_range1 and copy_range2
2089 (__pattern_walk2_n): Rename local n to __n
2090 * include/pstl/parallel_backend_tbb.h (struct __binary_no_op):
2091 Rename parameter _T to _Tp.
2092
2093 Integrate non-TBB serial backend support
2094 * include/bits/c++config: Adjust TBB detection logic to select serial
2095 PSTL backend if no TBB present.
2096 * testsuite/utils/pstl/test_utils.h: Remove check for
2097 _PSTL_USE_PAR_POLICIES
2098
2099 2019-06-07 Jonathan Wakely <jwakely@redhat.com>
2100
2101 * testsuite/24_iterators/container_access.cc: Move dg-options before
2102 dg-do directive so the target check uses the -std option.
2103
2104 PR libstdc++/90770
2105 * configure: Regenerate.
2106 * src/Makefile.am (stamp-debug): Also test for missing makefile.
2107 * src/Makefile.in: Regenerate.
2108
2109 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
2110
2111 * include/std/array: Do not include <stdexcept>.
2112 * include/std/optional: Include <exception> and
2113 <bits/exception_defines.h> instead of <stdexcept>.
2114 * testsuite/20_util/function_objects/searchers.cc: Include <cctype>
2115 for std::isalnum.
2116 * testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
2117 std::allocator.
2118 * testsuite/23_containers/map/erasure.cc: Include <string>.
2119 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2120
2121 * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add
2122 dg-prune-output for different C++98 diagnostic.
2123 * testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
2124 Likewise.
2125 * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
2126 Likewise.
2127 * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
2128 Likewise.
2129 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
2130 Likewise.
2131 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
2132 Likewise.
2133 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
2134 Likewise.
2135 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
2136 Likewise.
2137 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
2138 Likewise.
2139 * testsuite/23_containers/vector/requirements/dr438/
2140 constructor_1_neg.cc: Likewise.
2141 * testsuite/23_containers/vector/requirements/dr438/
2142 constructor_2_neg.cc: Likewise.
2143 * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
2144 Likewise.
2145 * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
2146
2147 * testsuite/23_containers/unordered_map/requirements/debug_container.cc:
2148 Do not test allocator rebinding extension for C++2a.
2149 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
2150 dg-do directive for C++17 and C++2a.
2151
2152 * testsuite/23_containers/deque/requirements/explicit_instantiation/
2153 1_c++0x.cc: Remove redundant test.
2154 * testsuite/23_containers/deque/requirements/explicit_instantiation/
2155 2.cc: Use target selector instead of preprocessor condition.
2156 * testsuite/23_containers/deque/requirements/explicit_instantiation/
2157 3.cc: Do not run test for C++2a.
2158 * testsuite/23_containers/forward_list/requirements/
2159 explicit_instantiation/3.cc: Likewise.
2160 * testsuite/23_containers/forward_list/requirements/
2161 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2162 for C++2a.
2163 * testsuite/23_containers/list/requirements/explicit_instantiation/
2164 1_c++0x.cc: Remove redundant test.
2165 * testsuite/23_containers/list/requirements/explicit_instantiation/
2166 2.cc: Use target selector instead of preprocessor condition.
2167 * testsuite/23_containers/list/requirements/explicit_instantiation/
2168 3.cc: Do not run test for C++2a.
2169 * testsuite/23_containers/list/requirements/explicit_instantiation/
2170 5.cc: Do not test allocator rebinding extension for C++2a.
2171 * testsuite/23_containers/map/requirements/explicit_instantiation/
2172 1_c++0x.cc: Remove redundant test.
2173 * testsuite/23_containers/map/requirements/explicit_instantiation/
2174 2.cc: Adjust comment.
2175 * testsuite/23_containers/map/requirements/explicit_instantiation/
2176 3.cc: Do not run test for C++2a.
2177 * testsuite/23_containers/map/requirements/explicit_instantiation/
2178 5.cc: Do not test allocator rebinding extension for C++2a.
2179 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
2180 1_c++0x.cc: Remove redundant test.
2181 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
2182 3.cc: Do not run test for C++2a.
2183 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
2184 5.cc: Do not test allocator rebinding extension for C++2a.
2185 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
2186 3.cc: Do not run test for C++2a.
2187 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
2188 5.cc: Do not test allocator rebinding extension for C++2a.
2189 * testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
2190 Do not run test for C++2a.
2191 * testsuite/23_containers/set/requirements/explicit_instantiation/
2192 1_c++0x.cc: Remove redundant test.
2193 * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
2194 Do not test allocator rebinding extension for C++2a.
2195 * testsuite/23_containers/unordered_map/requirements/
2196 explicit_instantiation/3.cc: Likewise.
2197 * testsuite/23_containers/unordered_map/requirements/
2198 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2199 for C++2a.
2200 * testsuite/23_containers/unordered_multimap/requirements/
2201 explicit_instantiation/3.cc: Do not run test for C++2a.
2202 * testsuite/23_containers/unordered_multimap/requirements/
2203 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2204 for C++2a.
2205 * testsuite/23_containers/unordered_multiset/requirements/
2206 explicit_instantiation/3.cc: Do not run test for C++2a.
2207 * testsuite/23_containers/unordered_multiset/requirements/
2208 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2209 for C++2a.
2210 * testsuite/23_containers/unordered_set/requirements/
2211 explicit_instantiation/3.cc: Do not run test for C++2a.
2212 * testsuite/23_containers/unordered_set/requirements/
2213 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2214 for C++2a.
2215 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
2216 2.cc: Remove redundant test.
2217 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
2218 3.cc: Do not run test for C++2a.
2219 * testsuite/23_containers/vector/requirements/explicit_instantiation/
2220 3.cc: Likewise.
2221
2222 * include/std/type_traits (is_empty, is_polymorphic, is_final)
2223 (is_abstract, is_aggregate): Remove static_assert.
2224 * testsuite/20_util/is_abstract/incomplete_neg.cc: Check for error
2225 from builtin only.
2226 * testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise. Add
2227 missing -std=gnu++17 option.
2228 * testsuite/20_util/is_empty/incomplete_neg.cc: New test.
2229 * testsuite/20_util/is_final/incomplete_neg.cc: New test.
2230 * testsuite/20_util/is_polymorphic/incomplete_neg.cc: Check for error
2231 from builtin only.
2232
2233 * testsuite/18_support/set_terminate.cc: Do not run for C++98 mode.
2234 * testsuite/18_support/set_unexpected.cc: Likewise.
2235 * testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
2236 void.
2237 * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix constexpr
2238 function to be valid in C++11.
2239 * testsuite/26_numerics/complex/proj.cc: Do not run for C++98 mode.
2240 * testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
2241 include Library Fundamentals or Networking headers in C++11 mode.
2242 * testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode.
2243
2244 * include/std/tuple (_TC): Replace with _TupleConstraints.
2245 (_TupleConstraints): New helper for SFINAE constraints, with more
2246 expressive member functions to reduce duplication when used.
2247 (tuple::_TC2, tuple::_TMC, tuple::_TNTC): Remove.
2248 (tuple::_TCC): Replace dummy type parameter with bool non-type
2249 parameter that can be used to check the pack size.
2250 (tuple::_ImplicitDefaultCtor, tuple::_ExplicitDefaultCtor)
2251 (tuple::_ImplicitCtor, tuple::_ExplicitCtor): New alias templates for
2252 checking constraints in constructors.
2253 (tuple::__valid_args, tuple::_UseOtherCtor, tuple::__use_other_ctor):
2254 New SFINAE helpers.
2255 (tuple::tuple): Use new helpers to reduce repitition in constraints.
2256 (tuple::tuple(allocator_arg_t, const Alloc&)): Constrain.
2257 (tuple<T1, T2>::_TCC, tuple<T1, T2>::_ImplicitDefaultCtor)
2258 (tuple<T1, T2>::_ExplicitDefaultCtor, tuple<T1, T2>::_ImplicitCtor)
2259 (tuple<T1, T2>::_ExplicitCtor): New alias templates for checking
2260 constraints in constructors.
2261 (tuple::__is_alloc_arg()): New SFINAE helpers.
2262 (tuple<T1, T2>::tuple): Use new helpers to reduce repitition in
2263 constraints.
2264 (tuple<T1, T2>::tuple(allocator_arg_t, const Alloc&)): Constrain.
2265 * testsuite/20_util/tuple/cons/90700.cc: New test.
2266 * testsuite/20_util/tuple/cons/allocators.cc: Add default constructor
2267 to meet new constraint on allocator-extended default constructor.
2268
2269 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
2270
2271 * include/bits/stl_map.h (map): Disable static assert for C++98 mode.
2272 * include/bits/stl_multimap.h (multimap): Likewise.
2273
2274 2019-06-03 François Dumont <fdumont@gcc.gnu.org>
2275
2276 Rename variables and cleanup comments.
2277 * include/bits/hashtable_policy.h
2278 * include/bits/hashtable.h
2279
2280 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
2281
2282 * doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
2283 Fix bgcolor for P0340R3.
2284 * doc/html/*: Regenerate.
2285
2286 PR libstdc++/90686
2287 * doc/xml/manual/status_cxx2014.xml: Document what's missing from
2288 <experimental/memory_resource>.
2289 * doc/xml/manual/status_cxx2020.xml: Document status of P1285R0,
2290 P0339R6, P0340R3, P1164R1 and P1357R1.
2291 * doc/html/*: Regenerate.
2292
2293 * doc/xml/manual/status_cxx2020.xml: Document P1463R1 status.
2294 * include/bits/forward_list.h [__cplusplus > 201703]: Enable
2295 allocator::value_type assertion for C++2a.
2296 * include/bits/hashtable.h: Likewise.
2297 * include/bits/stl_deque.h: Likewise.
2298 * include/bits/stl_list.h: Likewise.
2299 * include/bits/stl_map.h: Likewise.
2300 * include/bits/stl_multimap.h: Likewise.
2301 * include/bits/stl_multiset.h: Likewise.
2302 * include/bits/stl_set.h: Likewise.
2303 * include/bits/stl_vector.h: Likewise.
2304 * testsuite/23_containers/deque/48101-3_neg.cc: New test.
2305 * testsuite/23_containers/forward_list/48101-3_neg.cc: New test.
2306 * testsuite/23_containers/list/48101-3_neg.cc: New test.
2307 * testsuite/23_containers/map/48101-3_neg.cc: New test.
2308 * testsuite/23_containers/multimap/48101-3_neg.cc: New test.
2309 * testsuite/23_containers/multiset/48101-3_neg.cc: New test.
2310 * testsuite/23_containers/set/48101-3_neg.cc: New test.
2311 * testsuite/23_containers/unordered_map/48101-3_neg.cc: New test.
2312 * testsuite/23_containers/unordered_multimap/48101-3_neg.cc: New test.
2313 * testsuite/23_containers/unordered_multiset/48101-3_neg.cc: New test.
2314 * testsuite/23_containers/unordered_set/48101-3_neg.cc: New test.
2315 * testsuite/23_containers/vector/48101-3_neg.cc: New test.
2316
2317 2019-05-31 Gerald Pfeifer <gerald@pfeifer.com>
2318
2319 * doc/xml/manual/allocator.xml: Move hoard.org back to http.
2320
2321 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2322
2323 * include/std/tuple (tuple<>): Add noexcept to allocator-extended
2324 constructors.
2325 (tuple<T1, T2>::__nothrow_default_constructible()): New helper
2326 function.
2327 (tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.
2328
2329 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2330
2331 * src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.
2332
2333 PR libstdc++/90682
2334 * libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
2335 definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
2336 * libsupc++/eh_term_handler.h: New header defining
2337 _GLIBCXX_DEFAULT_TERM_HANDLER.
2338 * libsupc++/eh_terminate.cc: Include eh_term_handler.h.
2339 (set_terminate): Restore default handler when argument is null.
2340 (set_unexpected): Likewise.
2341 * testsuite/18_support/set_terminate.cc: New test.
2342 * testsuite/18_support/set_unexpected.cc: New test.
2343
2344 * include/backward/hashtable.h (size_t, ptrdiff_t)
2345 (forward_iterator_tag, input_iterator_tag, _Construct, _Destroy)
2346 (distance, vector, pair, __iterator_category): Remove
2347 using-declarations that add these names to namespace __gnu_cxx.
2348 * include/ext/bitmap_allocator.h (size_t, ptrdiff_t): Likewise.
2349 * include/ext/debug_allocator.h (size_t): Likewise.
2350 * include/ext/functional (size_t, unary_function, binary_function)
2351 (mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t, const_mem_fun1_ref_t):
2352 Likewise.
2353 * include/ext/malloc_allocator.h (size_t, ptrdiff_t): Likewise.
2354 * include/ext/memory (ptrdiff_t, pair, __iterator_category): Likewise.
2355 * include/ext/mt_allocator.h (size_t, ptrdiff_t): Likewise.
2356 * include/ext/new_allocator.h (size_t, ptrdiff_t): Likewise.
2357 * include/ext/numeric (iota): Fix outdated comment.
2358 * include/ext/pool_allocator.h (size_t, ptrdiff_t): Likewise.
2359 * include/ext/rb_tree (_Rb_tree, allocator): Likewise.
2360 * include/ext/rope (size_t, ptrdiff_t, allocator, _Destroy): Likewise.
2361 * include/ext/ropeimpl.h (size_t, printf, basic_ostream)
2362 (__throw_length_error, _Destroy, std::__uninitialized_fill_n_a):
2363 Likewise.
2364 * include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
2365 (allocator, __true_type, __false_type): Likewise.
2366
2367 2019-05-31 Antony Polukhin <antoshkka@gmail.com>
2368
2369 PR libstdc++/71579
2370 * include/std/type_traits __type_identity, __is_complete_or_unbounded):
2371 New helpers for checking preconditions in traits.
2372 (is_trivial, is_trivially_copyable, is_standard_layout, is_pod)
2373 (is_literal_type, is_empty, is_polymorphic, is_final, is_abstract)
2374 (is_destructible, is_nothrow_destructible, is_constructible)
2375 (is_default_constructible, is_copy_constructible)
2376 (is_move_constructible, is_nothrow_default_constructible)
2377 (is_nothrow_constructible, is_nothrow_copy_constructible)
2378 (is_nothrow_move_constructible, is_copy_assignable, is_move_assignable)
2379 (is_nothrow_assignable, is_nothrow_copy_assignable)
2380 (is_nothrow_move_assignable, is_trivially_constructible)
2381 (is_trivially_copy_constructible, is_trivially_move_constructible)
2382 is_trivially_assignable, is_trivially_copy_assignable)
2383 (is_trivially_move_assignable, is_trivially_destructible)
2384 (alignment_of, is_swappable, is_nothrow_swappable, is_invocable)
2385 (is_invocable_r, is_nothrow_invocable)
2386 (has_unique_object_representations, is_aggregate): Add static_asserts
2387 to make sure that type traits are not misused with incomplete types.
2388 (__is_constructible_impl, __is_nothrow_default_constructible_impl)
2389 (__is_nothrow_constructible_impl, __is_nothrow_assignable_impl): New
2390 base characteristics without assertions that can be reused in other
2391 traits.
2392 * testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
2393 * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
2394 test.
2395 * testsuite/20_util/is_complete_or_unbounded/value.cc: New test.
2396 * testsuite/20_util/is_abstract/incomplete_neg.cc: New test.
2397 * testsuite/20_util/is_aggregate/incomplete_neg.cc: New test.
2398 * testsuite/20_util/is_class/value.cc: Check incomplete type.
2399 * testsuite/20_util/is_function/value.cc: Likewise.
2400 * testsuite/20_util/is_move_constructible/incomplete_neg.cc: New test.
2401 * testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc: New
2402 test.
2403 * testsuite/20_util/is_polymorphic/incomplete_neg.cc: New test.
2404 * testsuite/20_util/is_reference/value.cc: Check incomplete types.
2405 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
2406 * testsuite/20_util/is_union/value.cc: Likewise.
2407 * testsuite/20_util/is_void/value.cc: Likewise.
2408 * testsuite/util/testsuite_tr1.h: Add incomplete union type.
2409
2410 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2411
2412 * include/bits/random.h (random_device::_M_init(const char*, size_t)):
2413 Add new private member function.
2414 * src/c++11/cow-string-inst.cc (random_device::_M_init(const string&))
2415 (random_device::_M_init_pretr1(const string&)): Call new private
2416 member with string data.
2417 * src/c++11/random.cc (random_device::_M_init(const char*, size_t)):
2418 Define.
2419 * testsuite/26_numerics/random/random_device/cons/default-cow.cc: New
2420 test using COW strings.
2421 * testsuite/26_numerics/random/random_device/cons/default.cc: Generate
2422 a value from the device.
2423 * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
2424 Fix typo in token string.
2425
2426 2019-05-30 Nina Dinka Ranns <dinka.ranns@gmail.com>
2427
2428 LWG2788 basic_string spurious use of a default constructible allocator
2429 * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
2430 (basic_string::_M_replace_dispatch): Construct temporary string with
2431 the current allocator.
2432 * testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New.
2433 * testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New.
2434
2435 2019-05-30 Jonathan Wakely <jwakely@redhat.com>
2436
2437 * doc/xml/manual/diagnostics.xml: Update list of headers that define
2438 exception classes.
2439 * doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
2440 section about new/delete overloads. Improve section on verbose
2441 terminate handler.
2442 * doc/html/*: Regenerate.
2443
2444 * doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
2445 P0811R3. Change status of P1353R0.
2446 * doc/html/*: Regenerate.
2447
2448 * doc/xml/manual/status_cxx2011.xml: Use <variablelist> for
2449 documentation of implementation-defined types for [thread.req.native].
2450 * doc/xml/manual/status_cxx2017.xml: Update documentation of
2451 implementation-defined strings for [variant.bad.access]. Fix typo in
2452 documentation of implementation-defined support for [fs.conform.9945].
2453 * doc/html/*: Regenerate.
2454
2455 2019-05-29 Jonathan Wakely <jwakely@redhat.com>
2456
2457 PR libstdc++/85494
2458 * testsuite/26_numerics/random/random_device/cons/token.cc: Fix test
2459 that fails on mingw-w64.
2460
2461 PR libstdc++/88881
2462 * src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
2463 (status(const path&, error_code&)): Use parent_path() to remove
2464 trailing slash.
2465 (symlink_status(const path&, error_code&)): Duplicate workaround for
2466 bug in _wstat for paths with trailing slash.
2467 * testsuite/27_io/filesystem/operations/remove_all.cc: Check path
2468 with trailing slash.
2469 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
2470 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
2471
2472 * src/c++17/fs_path.cc (path::parent_path()): Create whole path at
2473 once instead of building it iteratively.
2474
2475 * testsuite/util/testsuite_api.h: Remove names of unused parameters.
2476
2477 PR libstdc++/85494 use rdseed and rand_s in std::random_device
2478 * acinclude.m4 (GLIBCXX_CHECK_X86_RDSEED): Define macro to check if
2479 the assembler supports rdseed.
2480 * config.h.in: Regenerate.
2481 * configure: Regenerate.
2482 * configure.ac: Use GLIBCXX_CHECK_X86_RDSEED.
2483 * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_CRT_RAND_S): Define.
2484 * doc/html/*: Regenerate.
2485 * doc/xml/manual/status_cxx2011.xml: Document new tokens.
2486 * include/bits/random.h (random_device::random_device()): Always call
2487 _M_init rather than _M_init_pretr1.
2488 (random_device::random_device(const string&)): Likewise.
2489 (random_device::operator()()): Always call _M_getval().
2490 (random_device::_M_file): Replace first member of union with an
2491 anonymous struct, with _M_file as its first member.
2492 * src/c++11/random.cc [_GLIBCXX_X86_RDRAND] (USE_RDRAND): Define.
2493 [_GLIBCXX_X86_RDSEED] (USE_RDSEED): Define.
2494 (USE_MT19937): Define if none of the above are defined.
2495 (USE_POSIX_FILE_IO): Define.
2496 (_M_strtoul): Remove.
2497 [USE_RDSEED] (__x86_rdseed): Define new function.
2498 [_GLIBCXX_USE_CRT_RAND_S] (__winxp_rand_s): Define new function.
2499 (random_device::_M_init(const string&)): Initialize new union members.
2500 Add support for "rdseed" and "rand_s" tokens. Decide what the
2501 "default" token does according to which USE_* macros are defined.
2502 [USE_POSIX_FILE_IO]: Store a file descriptor.
2503 [USE_MT19937]: Forward to _M_init_pretr1 instead.
2504 (random_device::_M_init_pretr1(const string&)) [USE_MT19937]: Inline
2505 code from _M_strtoul.
2506 [!USE_MT19937]: Call _M_init, transforming the old default token or
2507 numeric tokens to "default".
2508 (random_device::_M_fini()) [USE_POSIX_FILE_IO]: Use close not fclose.
2509 (random_device::_M_getval()): Use new union members to obtain a
2510 random number from the stored function pointer or file descriptor.
2511 [USE_MT19937]: Obtain a value from the mt19937 engine.
2512 (random_device::_M_getval_pretr1()): Call _M_getval().
2513 (random_device::_M_getentropy()) [USE_POSIX_FILE_IO]: Use _M_fd
2514 instead of fileno.
2515 [!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
2516 * testsuite/26_numerics/random/random_device/85494.cc: New test.
2517
2518 2019-05-28 Jonathan Wakely <jwakely@redhat.com>
2519
2520 PR libstdc++/90634
2521 * include/experimental/bits/fs_path.h (path::path(path&&)): Only call
2522 _M_split_cmpts() for a path with multiple components.
2523 (path::_S_is_dir_sep()): Add missing 'static' keyword to function.
2524 * src/filesystem/path.cc (path::_M_split_cmpts()): Count number of
2525 components and reserve space in vector. Return early when there is
2526 only one component.
2527 * testsuite/27_io/filesystem/path/construct/90634.cc: New test.
2528 * testsuite/experimental/filesystem/path/construct/90634.cc: New test.
2529
2530 * testsuite/util/testsuite_fs.h (compare_paths): Use three-argument
2531 form of std::equals for C++11 compatibility.
2532
2533 2019-05-26 Gerald Pfeifer <gerald@pfeifer.com>
2534
2535 * doc/xml/manual/appendix_contributing.xml: Update pointer to
2536 C++ standard at ansi.org.
2537
2538 2019-05-24 Jonathan Wakely <jwakely@redhat.com>
2539
2540 * include/std/numeric (midpoint(T*, T*)): Fix incorrect result.
2541 * testsuite/26_numerics/midpoint/pointer.cc: Change "compile" test
2542 to "run".
2543
2544 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Fix test.
2545 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused function.
2546
2547 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
2548
2549 * testsuite/20_util/function_objects/invoke/1.cc: Move C++17-specific
2550 tests to ...
2551 * testsuite/20_util/function_objects/invoke/3.cc: New test.
2552 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
2553 "compile" test to "run".
2554
2555 * doc/xml/manual/intro.xml: Document LWG DR 2996 change.
2556 * doc/html/*: Regenerate.
2557 * include/bits/shared_ptr.h (shared_ptr(shared_ptr&&, T*)): Add
2558 rvalue aliasing constructor.
2559 (static_pointer_cast, const_pointer, dynamic_pointer_cast)
2560 (reinterpret_pointer_cast): Add overloads taking rvalues.
2561 * include/bits/shared_ptr_base.h (__shared_ptr(__shared_ptr&&, T*)):
2562 Add rvalue aliasing constructor.
2563 * testsuite/20_util/shared_ptr/casts/1.cc: Change "compile" test to
2564 "run" and check return values as well as types.
2565 * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
2566 * testsuite/20_util/shared_ptr/casts/rval.cc: New test.
2567 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: New test.
2568 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused return
2569 values.
2570
2571 * doc/xml/manual/evolution.xml: Document LWG DR 2921 change.
2572 * doc/xml/manual/intro.xml: Likewise.
2573 * include/std/future (__create_task_state): Add default arguments
2574 to make providing an allocator optional.
2575 (packaged_task::packaged_task(F&&)): Call __create_task_state directly
2576 instead of delegating to another constructor.
2577 (packaged_task::packaged_task(allocator_arg_t, const A&, ...)): Do not
2578 define allocator-extended constructors for C++17 and later.
2579 * testsuite/30_threads/packaged_task/cons/alloc.cc: Only run test for
2580 C++11 and C++14.
2581 * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
2582 * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
2583 * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
2584
2585 2019-05-23 Hans-Peter Nilsson <hp@axis.com>
2586
2587 * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
2588 Don't run the libstdc++/83237 part on simulator targets.
2589
2590 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
2591
2592 * doc/xml/manual/status_cxx2017.xml: Add feature test macro for
2593 P0040R3.
2594 * doc/html/*: Regenerate.
2595
2596 * include/experimental/any (__any_caster): Use RTTI if comparing
2597 addresses fails, to support non-unique addresses in shared libraries.
2598 * include/std/any (__any_caster): Likewise.
2599
2600 PR libstdc++/90220
2601 * include/experimental/any (__any_caster): Constrain to only be
2602 callable for object types. Use remove_cv_t instead of decay_t.
2603 If the type decays or isn't copy constructible, compare the manager
2604 function to a dummy specialization.
2605 (__any_caster): Add overload constrained for non-object types.
2606 (any::_Manager_internal<_Op>): Add dummy specialization.
2607 * testsuite/experimental/any/misc/any_cast.cc: Test function types
2608 and array types.
2609
2610 2019-05-22 Jonathan Wakely <jwakely@redhat.com>
2611
2612 PR libstdc++/90557
2613 * src/c++17/fs_path.cc (path::_List::operator=(const _List&)): Fix
2614 reversed arguments to uninitialized_copy_n.
2615 * testsuite/27_io/filesystem/path/assign/copy.cc: Check that source
2616 is unchanged by copy assignment.
2617 * testsuite/util/testsuite_fs.h (compare_paths): Use std::equal to
2618 compare path components.
2619
2620 PR libstdc++/77691
2621 * include/experimental/memory_resource: Add system header pragma and
2622 do not define anything unless compiled as C++14 or later.
2623 (__resource_adaptor_common::__guaranteed_alignment): Remove.
2624 (__resource_adaptor_imp::do_allocate): If the requested alignment
2625 is a fundamental alignment then either allocate directly from _M_alloc
2626 or call the new _M_allocate function.
2627 (__resource_adaptor_imp::do_deallocate): Likewise for deallocation.
2628 (__resource_adaptor_imp::_M_allocate): New function that uses a copy
2629 of the allocator rebound to a POD type with the specified alignment.
2630 (__resource_adaptor_imp::_M_deallocate): Likewise for deallocation.
2631 * testsuite/experimental/memory_resource/new_delete_resource.cc:
2632 Adjust expected allocation sizes.
2633 * testsuite/experimental/memory_resource/resource_adaptor.cc: Remove
2634 xfail for Solaris x86.
2635
2636 2019-05-21 Thomas Rodgers <trodgers@redhat.com>
2637
2638 LWG 3062 - Unnecessary decay_t in is_execution_policy_v
2639 * include/pstl/execution_defs.h (__enable_if_execution_policy):
2640 Use std::__remove_cvref_t when building with GCC.
2641
2642 2019-05-21 Jonathan Wakely <jwakely@redhat.com>
2643
2644 PR libstdc++/90252
2645 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
2646 Use "additional_flags" to pass -ltbb to v3_target_compile command.
2647 Use check_v3_target_prop_cached to cache the result of the test.
2648
2649 * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants.
2650
2651 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
2652
2653 PR libstdc++/90252
2654 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
2655 Changed v3_target_compile check from preprocess to executable.
2656 Added "-ltbb" to v3_target_compile flags.
2657
2658 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
2659
2660 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
2661 Add check for Thread Building Blocks 2018 or later.
2662
2663 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2664
2665 * testsuite/experimental/names.cc: Only include Networking TS headers
2666 on targets with the necessary Gthreads support.
2667
2668 2019-05-20 Marek Polacek <polacek@redhat.com>
2669
2670 CWG 2094 - volatile scalars are trivially copyable.
2671 PR c++/85679
2672 * testsuite/20_util/is_trivially_copyable/value.cc: Change the expected
2673 result for volatile int.
2674
2675 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2676
2677 * testsuite/17_intro/names.cc: Do not check 'ptr' on Solaris.
2678 * testsuite/experimental/names.cc: Include <experimental/filesystem>
2679 conditionally.
2680
2681 PR c++/90532 Ensure __is_constructible(T[]) is false
2682 * include/std/type_traits (__do_is_default_constructible_impl)
2683 (__is_default_constructible_atom, __is_default_constructible_safe):
2684 Remove.
2685 (is_default_constructible): Use is_constructible.
2686 * testsuite/20_util/is_constructible/value.cc: Check int[] case.
2687 * testsuite/20_util/is_default_constructible/value.cc: Likewise.
2688 * testsuite/20_util/is_trivially_constructible/value.cc: Likewise.
2689 * testsuite/20_util/is_trivially_default_constructible/value.cc:
2690 Likewise.
2691
2692 2019-05-20 Pádraig Brady <pbrady@fb.com>
2693
2694 * libstdc++-v3/include/ext/new_allocator.h (deallocate): Pass the size
2695 to the deallocator with -fsized-deallocation.
2696
2697 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2698
2699 * testsuite/experimental/memory_resource/new_delete_resource.cc: Fix
2700 test by passing correct alignment to deallocate function.
2701
2702 2019-05-18 Jonathan Wakely <jwakely@redhat.com>
2703
2704 PR libstdc++/90520
2705 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
2706 Raise exception if unique_ptr tuple member has unknown structure.
2707 * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker.__call__):
2708 Adjust worker to support new __uniq_ptr_data base class. Do not
2709 assume field called _M_head_impl is the first tuple element.
2710
2711 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
2712
2713 * include/bits/stl_deque.h
2714 (_Deque_iterator<>::__ptr_to): Remove, use std::__ptr_rebind.
2715 (_Deque_base(_Deque_base&&, const allocator_type&)): New.
2716 (_Deque_base::_Deque_impl_data): New.
2717 (_Deque_base::_Deque_impl): Inherit latter.
2718 (_Deque_base::_Deque_impl::_M_swap_data): Move...
2719 (_Deque_base::_Deque_impl_data::_M_swap_data): ... here.
2720 (_Deque_base::_Deque_impl()): Add noexcept qualification.
2721 (_Deque_base::_Deque_impl(_Deque_impl&&, _Tp_alloc_type&&)): New.
2722 (_Deque_base::_Deque_impl::_M_get_Tp_allocator()): Remove static_cast.
2723 (deque<>::deque()): Default.
2724 (deque<>::deque(deque&&)): Default.
2725 (deque<>::deque(deque&&, const allocator_type&, false_type)): New.
2726 (deque<>::deque(deque&&, const allocator_type&, true_type)): New.
2727 (deque<>::deque(deque&&, const allocator_type&)): Delegate to latters.
2728 (deque<>::deque<_It>(_It, _It, const allocator_type&)): Use
2729 _M_range_initialize.
2730 (deque<>::assign<_It>(_It, _It)): Use _M_assign_aux.
2731 (deque<>::resize(size_type, const value_type&)): Share a single
2732 implementation.
2733 (deque<>::insert<_It>(const_iterator, _It, _It)): Use
2734 _M_range_insert_aux.
2735 [__cplusplus >= 201103L](_M_initialize_dispatch): Remove.
2736 [__cplusplus >= 201103L](_M_assign_dispatch): Remove.
2737 [__cplusplus >= 201103L](_M_insert_dispatch): Remove.
2738 * testsuite/23_containers/deque/allocator/default_init.cc: New.
2739
2740 2019-05-17 Jonathan Wakely <jwakely@redhat.com>
2741
2742 PR libstdc++/90246
2743 * include/std/variant (holds_alternative, get, get_if): Improve
2744 static assertion messages.
2745 (bad_variant_access::bad_variant_access()): Change default message.
2746 (__throw_bad_variant_access(bool)): New overload.
2747 (get): Use new overload.
2748 (visit, visit<R>): Improve exception message.
2749
2750 * testsuite/20_util/variant/compile.cc: Fix narrowing test for ILP32
2751 targets. Add more cases from P0608R3.
2752 * testsuite/20_util/variant/run.cc: Add more cases from P0608R3.
2753
2754 * include/bits/random.h (seed_seq::param): Fix non-reserved name.
2755 * include/experimental/type_traits (is_detected_exact)
2756 (is_detected_exact_v): Likewise.
2757 * include/pstl/execution_defs.h (is_execution_policy)
2758 (is_execution_policy_v, __enable_if_execution_policy): Likewise.
2759 * include/pstl/execution_impl.h (__policy_traits): Likewise.
2760 * testsuite/17_intro/names.cc: Check for more non-reserved names.
2761 * testsuite/experimental/names.cc: New test.
2762
2763 PR libstdc++/85965
2764 * include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static
2765 assertions from the destructor.
2766 * include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code):
2767 Move static_assert for hash function to here.
2768 (_Hash_table_base::_M_equals): Move static_assert for equality
2769 predicate to here.
2770 * include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)):
2771 Remove.
2772 (_Rb_tree::_S_key(_Const_Link_type)): Move assertions here. Access
2773 the value directly instead of calling _S_value.
2774 (_Rb_tree::_S_value(_Const_Base_ptr)): Remove.
2775 (_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to
2776 _S_key(_Const_Link_type).
2777 * testsuite/23_containers/set/85965.cc: Check construction,
2778 destruction, assignment and size() do not trigger the assertions.
2779 * testsuite/23_containers/unordered_set/85965.cc: Likewise.
2780 * testsuite/23_containers/map/48101_neg.cc: Call find and adjust
2781 expected errors.
2782 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
2783 * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
2784 * testsuite/23_containers/set/48101_neg.cc: Likewise.
2785 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
2786 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
2787 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
2788 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
2789
2790 * include/bits/invoke.h [__cplusplus < 201703L] (__invoke_r<void>):
2791 Use _GLIBCXX14_CONSTEXPR because void functions cannot be constexpr
2792 in C++11.
2793
2794 * doc/xml/manual/status_cxx2020.xml: Update P0608R3, P0777R1, and
2795 P1165R1 entries.
2796 * doc/html/*: Regenerate.
2797 * include/std/tuple (make_from_tuple): Use remove_reference_t instead
2798 of decay_t (P0777R1).
2799
2800 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
2801
2802 Move from state of allocators (LWG2593)
2803 * include/bits/stl_deque.h
2804 (_Deque_base(_Deque_base&&, false_type)): Remove.
2805 (_Deque_base(_Deque_base&&, true_type)): Remove.
2806 (_Deque_base(_Deque_base&&)): Adapt.
2807 (_Deque_base::_M_move_impl()): Remove.
2808 * testsuite/util/testsuite_allocator.h
2809 (propagating_allocator(propagating_allocator&&)): Preserve move from
2810 state.
2811 * testsuite/23_containers/deque/allocator/move_assign.cc (test02):
2812 Adapt.
2813 * testsuite/23_containers/forward_list/allocator/move_assign.cc (test02):
2814 Adapt.
2815 * testsuite/23_containers/list/allocator/move_assign.cc (test02): Adapt.
2816 * testsuite/23_containers/map/allocator/move_assign.cc (test02): Adapt.
2817 * testsuite/23_containers/multimap/allocator/move_assign.cc (test02):
2818 Adapt.
2819 * testsuite/23_containers/multiset/allocator/move_assign.cc (test02):
2820 Adapt.
2821 * testsuite/23_containers/set/allocator/move_assign.cc (test02): Adapt.
2822 * testsuite/23_containers/unordered_map/allocator/move_assign.cc
2823 (test02): Adapt.
2824 * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
2825 (test02): Adapt.
2826 * testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
2827 (test02): Adapt.
2828 * testsuite/23_containers/unordered_set/allocator/move_assign.cc
2829 (test02): Adapt.
2830 * testsuite/23_containers/vector/allocator/move_assign.cc (test02):
2831 Adapt.
2832 * testsuite/23_containers/vector/bool/allocator/move_assign.cc (test02):
2833 Adapt.
2834 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc
2835 (test02): Adapt.
2836 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
2837 (test02): Adapt.
2838
2839 2019-05-16 Jonathan Wakely <jwakely@redhat.com>
2840
2841 * src/c++17/fs_ops.cc (absolute(const path&, error_code&))
2842 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
2843
2844 * include/std/variant (__overload_set): Remove.
2845 (_Arr): New helper.
2846 (_Build_FUN): New class template to define a single FUN overload,
2847 with specializations to prevent unwanted conversions, as per P0608R3.
2848 (_Build_FUNs): New class template to build an overload set of FUN.
2849 (_FUN_type): New alias template to perform overload resolution.
2850 (__accepted_type): Use integer_constant base for failure case. Use
2851 _FUN_type for successful case.
2852 (variant::__accepted_index): Use _Tp instead of _Tp&&.
2853 (variant::variant(_Tp&&)): Likewise.
2854 (variant::operator=(_Tp&&)): Likewise.
2855
2856 * include/std/variant (_Variant_storage<false, _Types...>::_M_reset):
2857 Replace raw visitation with a runtime check for the valueless state
2858 and a non-raw visitor.
2859 (_Variant_storage<false, _Types...>::_M_reset_impl): Remove.
2860 (variant::index()): Remove branch.
2861 (variant::swap(variant&)): Use valueless_by_exception() instead of
2862 comparing the index to variant_npos, and add likelihood attribute.
2863
2864 * include/bits/hashtable_policy.h (_Equal_helper): Remove.
2865 (_Hashtable_base::_Equal_hash_code): Define new class template.
2866 (_Hashtable_base::_M_equals): Use _Equal_hash_code instead of
2867 _Equal_helper.
2868
2869 * include/bits/hashtable_policy.h (_Hashtable_ebo_helper::_S_get):
2870 Replace with _M_get non-static member function.
2871 (_Hashtable_ebo_helper::_S_cget): Replace with _M_cget non-static
2872 member function.
2873 (_Hash_code_base, _Local_iterator_base, _Hashtable_base):
2874 (_Hashtable_alloc): Adjust to use non-static members of EBO helper.
2875
2876 * include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
2877 _S_get accessors for members in EBO helpers.
2878 (_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
2879 (_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
2880 overloads.
2881 (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
2882 helpers.
2883 (_Hashtable_base::_M_eq()): Remove non-const overload.
2884
2885 2019-05-15 Jonathan Wakely <jwakely@redhat.com>
2886
2887 * include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
2888
2889 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
2890
2891 * testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
2892 Fix return value.
2893
2894 2019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2895
2896 * config/os/solaris/solaris2.10: Move to ...
2897 * config/os/solaris: ... this.
2898 * configure.host (os_include_dir): Adapt.
2899 (abi_baseline_pair): Remove Solaris 10 handling.
2900 * config/abi/post/i386-solaris2.10: Remove.
2901 * config/abi/post/sparc-solaris2.10: Remove.
2902 * config/abi/post/i386-solaris2.11: Rename to ...
2903 * config/abi/post/i386-solaris: ... this.
2904 * config/abi/post/sparc-solaris2.11: Rename to ...
2905 * config/abi/post/sparc-solaris: ... this.
2906
2907 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
2908 workaround.
2909
2910 * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
2911 xfail.
2912
2913 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
2914
2915 * include/std/variant (__visit_with_index): Remove typedef.
2916 (__deduce_visit_result): New tag type.
2917 (__raw_visit, __raw_idx_visit): New helper functions for "raw"
2918 visitation of possibly-valueless variants, forwarding to __do_visit
2919 with the relevant tag type.
2920 (_Variant_storage<false, _Types...>::_M_reset_impl): Use __raw_visit
2921 and make lambda return void.
2922 (__variant_construct): Likewise.
2923 (_Copy_assign_base::operator=, _Move_assign_base::operator=): Use
2924 __raw_idx_visit and make lambda return void.
2925 (_Multi_array::__untag_result): Add metafunction to check the function
2926 pointer type for a tag type that dictates the kind of visitation.
2927 (_Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>):
2928 Use decltype(auto) instead of tagged function pointer type.
2929 (__gen_vtable_impl): Remove bool non-type parameter and unused
2930 _Variant_tuple parameter.
2931 (__gen_vtable_impl::__visit_invoke_impl): Remove.
2932 (__gen_vtable_impl::__do_visit_invoke): Remove.
2933 (__gen_vtable_impl::__do_visit_invoke_r): Remove.
2934 (__gen_vtable_impl::__visit_invoke): Use if-constexpr and __invoke_r
2935 for the visit<R> case, rather than dispatching to separate functions.
2936 (_VARIANT_RELATION_FUNCTION_TEMPLATE): Use __raw_idx_visit and make
2937 lambda return void.
2938 (variant::swap): Likewise.
2939 (__do_visit): Replace two non-type template parameters with a single
2940 type parameter, so that the caller must specify the visitor's return
2941 type (or one of the tag types).
2942 (visit): Deduce a return type from the visitor and use the
2943 __deduce_visit_result tag to enforce that all overloads return the
2944 same type.
2945 (visit<R>): Call __do_visit<R> with explicit result type.
2946 (__variant_hash_call_base_impl::operator()): Use __raw_visit and make
2947 lambda return void.
2948
2949 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
2950
2951 nonesuch is insufficiently useless (lwg2996)
2952 * include/std/type_traits (struct __nonesuch): Added private base
2953 class to make __nonesuch not an aggregate and removed deleted default
2954 constructor.
2955 * include/bits/stl_pair.h (struct __nonesuch_no_braces): Removed.
2956 (operator=(const pair&)): Use __nonesuch instead of
2957 __nonesuch_no_braces.
2958 (operator=(pair&&)): Likewise
2959 * include/std/tuple (operator=(const tuple&)): Use __nonesuch instead
2960 of __nonesuch_no_braces.
2961 (operator=(tuple&&)): Likewise
2962 * include/experimental/type_traits (struct nonesuch): Added private
2963 base class to make nonesuch not an aggregate and removed deleted
2964 default constructor.
2965 * testsuite/20_util/nonesuch/nonesuch.cc: New.
2966 * testsuite/experimental/type_traits/nonesuch.cc: New.
2967
2968 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
2969
2970 * include/bits/std_function.h (_Simple_type_wrapper): Remove.
2971 (_Function_handler): Remove partial specializations for void return
2972 types and pointers to member.
2973 (_Function_handler::_M_manager): Adapt to removal of
2974 _Simple_type_wrapper.
2975 (_Function_handler::_M_invoke): Use __invoke_r instead of __invoke.
2976 * include/std/functional (_Bind_result::__enable_if_void)
2977 (_Bind_result::__disable_if_void): Remove sfinae helpers.
2978 (_Bind_result::__call): Use __invoke_r and remove overloads for void
2979 return types.
2980 * include/std/future (__future_base::_Task_state::_M_run)
2981 (__future_base::_Task_state::_M_run_delayed): Use __invoke_r and
2982 change return type of lambda expressions.
2983
2984 * include/bits/invoke.h (__invoke_r): Define new function implementing
2985 the INVOKE<R> pseudo-function.
2986 * testsuite/20_util/function_objects/invoke/1.cc: Add more tests.
2987 * testsuite/20_util/function_objects/invoke/2.cc: New test.
2988
2989 * include/std/type_traits (__is_nt_convertible_helper): Define it
2990 unconditionally, not only for C++20.
2991 (__is_nothrow_convertible): Define internal trait for use in C++11.
2992 (__is_nt_invocable_impl: Fix by using __is_nothrow_convertible.
2993 (is_invocable_r_v, is_nothrow_invocable_r_v): Add missing parameter.
2994 * testsuite/20_util/is_nothrow_convertible/value_ext.cc: New test.
2995 * testsuite/20_util/is_nothrow_convertible/value.cc: Check with type
2996 that has nothrow explicit conversion but potentially-throwing implicit
2997 conversion.
2998 * testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
2999 * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix helper
3000 function to only consider implicit conversions.
3001 * testsuite/20_util/tuple/cons/noexcept_specs.cc: Add comment.
3002
3003 * include/std/iterator: Include <iosfwd> instead of <istream> and
3004 <ostream>.
3005
3006 * include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
3007 Remove unused, non-standard function.
3008
3009 * include/bits/regex.h (match_results::max_size()): Adjust return
3010 value to account for prefix/suffix/unmatched subs.
3011 (match_results::_M_resize(unsigned int)): Use _Base_type::assign to
3012 reset the contained sub matches.
3013 (match_results::_M_establish_failed_match(_Bi_iter)): Add new member
3014 function to set result state following a failed match.
3015 * include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
3016 sub_match states after _M_resize. Use _M_establish_failed_match.
3017
3018 PR libstdc++/69724
3019 * include/std/thread (thread::_State_impl, thread::_S_make_state):
3020 Replace single _Callable parameter with variadic _Args pack, to
3021 forward them directly to the tuple of decayed copies.
3022 * testsuite/30_threads/thread/cons/69724.cc: New test.
3023
3024 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
3025
3026 Inconsistency wrt Allocators in basic_string assignment (LWG2579)
3027 * include/bits/basic_string.h: (operator=(const basic_string&):
3028 Move allocator decision to assign.
3029 (assign(const basic_string&)): Move allocator decision here.
3030 * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3031 Add tests.
3032 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3033 Add tests.
3034
3035 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3036
3037 * testsuite/util/testsuite_allocator.h (memory_resource)
3038 (default_resource_mgr): Fix indentation.
3039
3040 * testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
3041 Use operator-> to access raw pointer member.
3042 * testsuite/23_containers/vector/59829.cc: Likewise.
3043 * testsuite/23_containers/vector/bool/80893.cc: Likewise.
3044 * testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
3045 * testsuite/util/testsuite_allocator.h (NullablePointer): New utility
3046 for tests.
3047 (PointerBase, PointerBase_void): Derive from NullablePointer and use
3048 its constructors and equality operators. Change converting
3049 constructors to use operator-> to access private member of the other
3050 pointer type.
3051 (PointerBase_void::operator->()): Add, for access to private member.
3052 (operator-(PointerBase, PointerBase)): Change to hidden friend.
3053 (operator==(PointerBase, PointerBase)): Remove.
3054 (operator!=(PointerBase, PointerBase)): Remove.
3055
3056 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
3057 not assume field called _M_head_impl is the first tuple element.
3058 * testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
3059 implementation more accurate.
3060 * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
3061 empty pointer type and non-empty deleter.
3062
3063 LWG 2899 - Make is_move_constructible correct for unique_ptr
3064 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
3065 move assignment operator.
3066 (__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
3067 (__uniq_ptr_data): New class template with conditionally deleted
3068 special members.
3069 (unique_ptr, unique_ptr<T[], D>): Change type of data member from
3070 __uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
3071 constructor and move assignment operator as defaulted.
3072 (unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
3073 __uniq_ptr_impl::release().
3074 (unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
3075 to __uniq_ptr_impl::reset(pointer).
3076 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
3077 Check for new __uniq_ptr_data type.
3078 * testsuite/20_util/unique_ptr/dr2899.cc: New test.
3079
3080 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
3081
3082 PR libstdc++/90454.cc path construction from void*
3083 * include/bits/fs_path.h (path::_Path): Use remove_pointer so that
3084 pointers to void are rejected as well as void.
3085 * include/experimental/bits/fs_path.h (path::_Path): Likewise.
3086 * testsuite/27_io/filesystem/path/construct/80762.cc: Also check
3087 pointers to void.
3088 * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
3089
3090 * doc/xml/manual/policy_data_structures.xml: Comment out stray
3091 <remark> elements. Fix formatting of bibliography references.
3092
3093 2019-05-13 Edward Smith-Rowland <3dw4rd@verizon.net>
3094
3095 * doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.
3096
3097 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
3098
3099 Remove Profile Mode, deprecated since 7.1.0
3100 * doc/Makefile.am: Remove XML file for profile mode docs.
3101 * doc/Makefile.in: Regenerate.
3102 * doc/xml/authors.xml: Remove authors of profile mode docs.
3103 * doc/xml/manual/appendix_contributing.xml: Remove mention of profile
3104 mode.
3105 * doc/xml/manual/debug.xml: Likewise.
3106 * doc/xml/manual/evolution.xml: Document removal of profile mode.
3107 * doc/xml/manual/profile_mode.xml: Remove profile mode docs.
3108 * doc/xml/manual/spine.xml: Remove profile mode author credit.
3109 * doc/xml/manual/test.xml: Remove docs for dg-require-profile-mode
3110 directive.
3111 * doc/xml/manual/using.xml: Remove docs for profile mode headers and
3112 macro.
3113 * doc/html/*: Regenerate.
3114 * include/Makefile.am: Remove profile mode headers.
3115 * include/Makefile.in: Regenerate.
3116 * include/bits/c++config (std::__profile): Remove namespace.
3117 [_GLIBCXX_PROFILE]: Remove checks for macro.
3118 * include/profile/array: Remove.
3119 * include/profile/base.h: Remove.
3120 * include/profile/bitset: Remove.
3121 * include/profile/deque: Remove.
3122 * include/profile/forward_list: Remove.
3123 * include/profile/impl/profiler.h: Remove.
3124 * include/profile/impl/profiler_algos.h: Remove.
3125 * include/profile/impl/profiler_container_size.h: Remove.
3126 * include/profile/impl/profiler_hash_func.h: Remove.
3127 * include/profile/impl/profiler_hashtable_size.h: Remove.
3128 * include/profile/impl/profiler_list_to_slist.h: Remove.
3129 * include/profile/impl/profiler_list_to_vector.h: Remove.
3130 * include/profile/impl/profiler_map_to_unordered_map.h: Remove.
3131 * include/profile/impl/profiler_node.h: Remove.
3132 * include/profile/impl/profiler_state.h: Remove.
3133 * include/profile/impl/profiler_trace.h: Remove.
3134 * include/profile/impl/profiler_vector_size.h: Remove.
3135 * include/profile/impl/profiler_vector_to_list.h: Remove.
3136 * include/profile/iterator_tracker.h: Remove.
3137 * include/profile/list: Remove.
3138 * include/profile/map: Remove.
3139 * include/profile/map.h: Remove.
3140 * include/profile/multimap.h: Remove.
3141 * include/profile/multiset.h: Remove.
3142 * include/profile/ordered_base.h: Remove.
3143 * include/profile/set: Remove.
3144 * include/profile/set.h: Remove.
3145 * include/profile/unordered_base.h: Remove.
3146 * include/profile/unordered_map: Remove.
3147 * include/profile/unordered_set: Remove.
3148 * include/profile/vector: Remove.
3149 * scripts/run_doxygen: Do not process profile mode headers.
3150 * testsuite/23_containers/array/element_access/60497.cc: Don't use
3151 profile mode type.
3152 * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
3153 Remove dg-skip-if for profile mode.
3154 * testsuite/23_containers/forward_list/capacity/1.cc: Remove
3155 preprocessor check for profile mode.
3156 * testsuite/23_containers/list/capacity/29134.cc: Likewise.
3157 * testsuite/23_containers/map/modifiers/extract.cc: Remove dg-skip-if
3158 for profile mode.
3159 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
3160 Likewise.
3161 * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
3162 * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
3163 * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
3164 * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
3165 * testsuite/23_containers/unordered_map/modifiers/extract.cc:
3166 Likewise.
3167 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
3168 Likewise.
3169 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
3170 Likewise.
3171 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
3172 Likewise.
3173 * testsuite/23_containers/vector/bool/capacity/29134.cc: Remove
3174 preprocessor check for profile mode.
3175 * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
3176 Likewise.
3177 * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
3178 Remove dg-skip-if for profile mode.
3179 * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
3180 * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
3181 * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
3182 * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
3183 * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
3184 * testsuite/Makefile.am: Remove profile_flags variable and
3185 * testsuite/Makefile.am: Remove profile_flags variable and
3186 check-profile target.
3187 * testsuite/Makefile.in: Regenerate.
3188 * testsuite/ext/profile/all.cc: Remove.
3189 * testsuite/ext/profile/mutex_extensions_neg.cc: Remove.
3190 * testsuite/ext/profile/profiler_algos.cc: Remove.
3191 * testsuite/ext/profile/replace_new.cc: Remove.
3192 * testsuite/ext/throw_allocator/deallocate_global.cc: Remove
3193 preprocessor check for profile mode.
3194 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
3195 * testsuite/lib/libstdc++.exp (check_v3_target_profile_mode): Remove.
3196 (check_v3_target_normal_mode): Do not check for profile mode macro.
3197 * testsuite/libstdc++-prettyprinters/80276.cc: Remove dg-skip-if for
3198 profile mode.
3199 * testsuite/libstdc++-prettyprinters/compat.cc: Likewise.
3200 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
3201 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
3202 * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
3203 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
3204 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
3205 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
3206 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3207 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3208 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
3209
3210 Remove array_allocator extension, deprecated since 4.9.0
3211 * doc/xml/manual/allocator.xml: Remove documentation for
3212 array_allocator.
3213 * doc/xml/manual/evolution.xml: Document array_allocator removal.
3214 * doc/xml/manual/using.xml: Remove header from documentation.
3215 * include/Makefile.am: Remove <ext/array_allocator.h> header.
3216 * include/Makefile.in: Regenerate.
3217 * include/ext/array_allocator.h: Remove.
3218 * include/precompiled/extc++.h: Do not include removed header.
3219 * testsuite/ext/array_allocator/1.cc: Remove.
3220 * testsuite/ext/array_allocator/2.cc: Remove.
3221 * testsuite/ext/array_allocator/26875.cc: Remove.
3222 * testsuite/ext/array_allocator/3.cc: Remove.
3223 * testsuite/ext/array_allocator/check_deallocate_null.cc: Remove.
3224 * testsuite/ext/array_allocator/check_delete.cc: Remove.
3225 * testsuite/ext/array_allocator/check_new.cc: Remove.
3226 * testsuite/ext/array_allocator/variadic_construct.cc: Remove.
3227 * testsuite/ext/headers.cc: Do not include removed header.
3228
3229 2019-05-11 François Dumont <fdumont@gcc.gnu.org>
3230
3231 * include/bits/stl_bvector.h
3232 (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3233 Make hidden friend.
3234 (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3235 Likewise.
3236 (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3237 Likewise.
3238 (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3239 Likewise.
3240 (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3241 Likewise.
3242 (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3243 Likewise.
3244 (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3245 Likewise.
3246 (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
3247 copy elision.
3248 (_Bit_iterator::operator-(difference_type)): Likewise.
3249 (operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
3250 (_Bit_const_iterator::operator+(difference_type)): Likewise and allow
3251 NRVO copy elision.
3252 (_Bit_const_iterator::operator-(difference_type)): Likewise.
3253 (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
3254
3255 2019-05-10 Jonathan Wakely <jwakely@redhat.com>
3256
3257 PR libstdc++/81266
3258 * testsuite/util/thread/all.h: Do not use remove_pointer for
3259 std::thread::native_handle_type.
3260
3261 PR libstdc++/90397
3262 * include/std/variant (_Variant_storage<false, Types...>::_M_storage())
3263 (_Variant_storage<true, Types...>::_M_reset()))
3264 (_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
3265 (__get_storage): Likewise.
3266 (variant): Add noexcept to friend declarations for __get and
3267 __get_storage.
3268
3269 PR libstdc++/90388
3270 * include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
3271 Use _Require for constraints.
3272 (operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
3273 per the standard.
3274 (__uniq_ptr_hash): New base class with conditionally-disabled call
3275 operator.
3276 (hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
3277 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
3278 * testsuite/20_util/unique_ptr/hash/90388.cc: New test.
3279
3280 * include/bits/shared_ptr.h: Improve docs.
3281 * include/bits/shared_ptr_base.h: Likewise.
3282 * include/bits/stl_uninitialized.h: Likewise.
3283 * include/bits/unique_ptr.h: Likewise.
3284 * libsupc++/new: Likewise.
3285
3286 2019-05-09 François Dumont <fdumont@gcc.gnu.org>
3287
3288 * include/bits/stl_deque.h
3289 (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3290 Make hidden friend.
3291 (operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3292 Likewise.
3293 (operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3294 Likewise.
3295 (operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3296 Likewise.
3297 (operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3298 Likewise.
3299 (operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3300 Likewise.
3301 (_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
3302 copy elision.
3303 (_Deque_iterator<>::operator-(difference_type)): Likewise.
3304
3305 2019-05-08 François Dumont <fdumont@gcc.gnu.org>
3306
3307 PR libstdc++/90277
3308 * testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
3309 (test01): Reserve for number of insertions to avoid rehash during test.
3310 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
3311 (test01): Likewise.
3312 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
3313 (test01): Likewise.
3314 (test02): Likewise.
3315 (test03): Likewise.
3316
3317 2019-05-08 Jonathan Wakely <jwakely@redhat.com>
3318
3319 * include/experimental/bits/fs_path.h: Improve docs.
3320 * include/experimental/bits/net.h: Fix wrong header name in comment.
3321 Do not document implementation details.
3322 * include/experimental/netfwd: Fix doxygen grouping.
3323
3324 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
3325
3326 * include/bits/stl_pair.h: Improve docs.
3327 * include/std/tuple: Likewise.
3328
3329 * doc/doxygen/doxygroups.cc (std::literals): Add documentation for
3330 inline namespace.
3331 * include/std/chrono: Improve docs.
3332 * include/std/ratio: Do not document implementation details.
3333 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
3334 line numbers.
3335 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
3336
3337 PR libstdc++/89102
3338 * doc/xml/manual/intro.xml: Document DR 2408 and 2465 changes.
3339 * include/std/chrono (__duration_common_type_wrapper): Replace with ...
3340 (__duration_common_type): New helper.
3341 (common_type<chrono::duration<R1, P2>, chrono::duration<R2, P2>>): Use
3342 __duration_common_type.
3343 (__timepoint_common_type_wrapper): Replace with ...
3344 (__timepoint_common_type): New helper.
3345 (common_type<chrono::time_point<C, D2>, chrono::time_point<C, D2>>):
3346 Use __time_point_common_type.
3347 * include/std/type_traits (common_type<>): Define, as per LWG 2408.
3348 (__common_type_impl): If either argument is transformed by decay,
3349 use the common_type of the decayed types.
3350 (__common_type_impl<_Tp, _Up, _Tp, _Up>): If the types are already
3351 decayed, use __do_common_type_impl to get the common_type.
3352 (common_type<_Tp>): Use common_type<_Tp, _Tp>.
3353 (__do_member_type_wrapper, __member_type_wrapper)
3354 (__expanded_common_type_wrapper): Remove.
3355 (__common_type_pack, __common_type_fold): New helpers.
3356 (common_type<_Tp, _Up, _Vp...>): Use new helpers instead of
3357 __member_type_wrapper and __expanded_common_type_wrapper.
3358 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
3359 Test zero-length template argument list.
3360 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
3361 Test single argument cases and argument types that should decay.
3362 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
3363 Adjust expected error.
3364 * testsuite/20_util/duration/literals/range_neg.cc: Use zero for
3365 dg-error lineno.
3366 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
3367 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
3368 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
3369
3370 * doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
3371
3372 2019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
3373
3374 Make allocator propagation more consistent for
3375 operator+(basic_string) (P1165R1)
3376 * include/bits/basic_string.h
3377 (operator+(basic_string&&, basic_string&&): Changed resulting
3378 allocator to always be the one from the first parameter.
3379 * include/bits/basic_string.tcc
3380 (operator+(const _CharT*, const basic_string&)): Changed
3381 resulting allocator to be SOCCC on the second parameter's allocator.
3382 (operator+(_CharT, const basic_string&)): Likewise.
3383 * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
3384 New.
3385 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
3386 New.
3387
3388 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
3389
3390 * include/bits/regex.h: Improve docs.
3391 * include/bits/regex.tcc: Do not document implementation details.
3392
3393 * testsuite/19_diagnostics/error_code/hash.cc: New test.
3394
3395 2019-05-06 François Dumont <fdumont@gcc.gnu.org>
3396
3397 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
3398 Add type printer for container types in std::__debug namespace.
3399 * testsuite/lib/gdb-test.exp (whatis-regexp-test): New.
3400 (gdb-tests): Use distinct parameters for the type of test and use of
3401 regex.
3402 (gdb-test): Check for regex test even if 'whatis' test.
3403 * testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
3404 mode.
3405 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
3406 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
3407 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
3408 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
3409 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3410 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3411 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
3412
3413 2019-05-04 Jonathan Wakely <jwakely@redhat.com>
3414
3415 * include/std/system_error (error_category): Fix comment.
3416
3417 PR libstdc++/90299
3418 * src/c++17/fs_ops.cc (absolute(const path&)): Report an error if the
3419 argument is an empty path.
3420 (absolute(const path&, error_code&)): Use invalid_argument as error
3421 code instead of no_such_file_or_directory.
3422 * testsuite/27_io/filesystem/operations/absolute.cc: Check handling
3423 of non-existent paths and empty paths with both overloads of absolute.
3424
3425 * include/std/system_error (error_category, error_code)
3426 (error_condition): Improve docs.
3427 * libsupc++/exception: Add missing @addtogroup Doxygen command.
3428 * libsupc++/exception_ptr.h (exception_ptr): Link equality operators
3429 to class documentation. Suppress documentation for implementation
3430 details.
3431 * libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
3432 Suppress documentation for implementation details.
3433
3434 * include/std/system_error (error_code): Remove friend declaration
3435 for hash<error_code>.
3436 (hash<error_code>::operator()): Use public member functions to access
3437 value and category.
3438 (hash<error_condition>::operator()): Use address of category, not
3439 its object representation.
3440 * src/c++11/compatibility-c++0x.cc (hash<error_code>::operator()):
3441 Use public member functions to access value and category.
3442 * testsuite/19_diagnostics/error_condition/hash.cc: New test.
3443
3444 2019-05-04 François Dumont <fdumont@gcc.gnu.org>
3445
3446 * include/bits/hashtable.h (_Hashtable<>::rehash): Review comment.
3447 * include/bits/hashtable_policy.h
3448 (_Prime_rehash_policy::_M_bkt_for_elements): Use __builtin_ceill.
3449 (_Power2_rehash_policy::_M_bkt_for_elements): Likewise.
3450 (_Power2_rehash_policy::_M_next_bkt): Enforce returning a result not
3451 smaller than input value rather than always greater. Preserve
3452 _M_next_resize if called with 0 input. Use __builtin_floorl.
3453 (_Power2_rehash_policy::_M_need_rehash): Rehash only if number of
3454 elements + number of insertions is greater than _M_next_resize. Start
3455 with 11 buckets if not told otherwise. Use __builtin_floorl.
3456 (_Rehash_base<>::reserve): Use rehash policy _M_bkt_for_elements.
3457 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
3458 Preserve _M_next_resize if called with 0 input. Use __builtin_floorl.
3459 (_Prime_rehash_policy::_M_need_rehash): Start with 11 buckets if not
3460 told otherwise. Use __builtin_floorl.
3461 * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt test
3462 to also validate _Power2_rehash_policy.
3463 * testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
3464 Adapt.
3465
3466 2019-05-03 Jonathan Wakely <jwakely@redhat.com>
3467
3468 PR libstdc++/61761
3469 * testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
3470 std::copysign.
3471
3472 PR libstdc++/52119
3473 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
3474 overflow warning with -Wpedantic -Wsystem-headers.
3475
3476 2019-05-02 Jonathan Wakely <jwakely@redhat.com>
3477
3478 PR libstdc++/90314
3479 * include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Use variadic macro.
3480 * include/bits/move.h (swap): Remove extra parentheses.
3481
3482 * include/experimental/bits/lfts_config.h: Improve doc markup.
3483 * include/experimental/optional: Improve docs.
3484 (_Has_addressof_mem, _Has_addressof_free, _Has_addressof)
3485 (__constexpr_addressof): Remove.
3486 (optional::operator->()): Use std::__addressof().
3487 * include/std/optional (optional::operator->()): Adjust whitespace.
3488 * testsuite/experimental/optional/constexpr/observers/2.cc: Check
3489 that operator-> is still constexpr with overloaded operator&. Change
3490 to compile-only test.
3491 * testsuite/experimental/optional/constexpr/observers/3.cc: Change to
3492 compile-only test.
3493
3494 * include/bits/shared_ptr.h: Improve docs.
3495 * include/bits/shared_ptr_atomic.h: Likewise.
3496 * include/bits/unique_ptr.h: Likewise. Adjust whitespace.
3497
3498 * include/bits/basic_string.h: Fix iterator/index confusion in
3499 Doxygen comments.
3500 * include/bits/range_access.h: Fix Doxygen warnings.
3501 * include/bits/refwrap.h: Do not document implementation details.
3502 (ref, cref): Group docs with reference_wrapper.
3503 * include/std/fstream: Fix Doxygen markup.
3504 * libsupc++/initializer_list (begin, end): Group docs with
3505 initializer_list.
3506
3507 * doc/doxygen/user.cfg.in: Set MARKDOWN_SUPPORT=YES.
3508
3509 * include/bits/unique_lock.h: Fix/improve doxygen markup.
3510 * include/std/mutex: Likewise.
3511 * include/std/shared_mutex: Likewise.
3512
3513 * include/bits/fs_dir.h: Fix/improve doxygen markup.
3514 * include/bits/fs_fwd.h: Likewise.
3515 * include/bits/fs_ops.h: Likewise.
3516 * include/bits/fs_path.h: Likewise.
3517 * include/std/filesystem: Likewise.
3518
3519 * include/experimental/bits/net.h: Fix/improve doxygen markup.
3520 * include/experimental/buffer: Likewise.
3521 * include/experimental/executor: Likewise.
3522 * include/experimental/internet: Likewise.
3523 * include/experimental/io_context: Likewise.
3524 * include/experimental/net: Likewise.
3525 * include/experimental/netfwd: Likewise.
3526 * include/experimental/socket: Likewise.
3527 * include/experimental/timer: Likewise.
3528
3529 * doc/doxygen/doxygroups.cc: Move description of experimental group
3530 here.
3531 * include/experimental/algorithm: Add to libfund-ts doc group.
3532 * include/experimental/any: Likewise. Do not document implementation
3533 details.
3534 * include/experimental/array: Add to libfund-ts doc group.
3535 * include/experimental/bits/lfts_config.h: Define libfund-ts doc group
3536 for Library Fundamentals.
3537 * include/experimental/chrono: Add to libfund-ts doc group.
3538 * include/experimental/deque: Likewise.
3539 * include/experimental/forward_list: Likewise.
3540 * include/experimental/functional: Likewise.
3541 * include/experimental/iterator: Likewise.
3542 * include/experimental/list: Likewise.
3543 * include/experimental/map: Likewise.
3544 * include/experimental/memory: Likewise.
3545 * include/experimental/memory_resource: Likewise. Improve docs.
3546 details.
3547 * include/experimental/numeric: Add to libfund-ts doc group.
3548 * include/experimental/optional: Likewise.
3549 * include/experimental/propagate_const: Likewise.
3550 * include/experimental/random: Likewise.
3551 * include/experimental/ratio: Likewise.
3552 * include/experimental/regex: Likewise.
3553 * include/experimental/set: Likewise.
3554 * include/experimental/source_location: Likewise.
3555 * include/experimental/string: Likewise.
3556 * include/experimental/string_view: Likewise.
3557 * include/experimental/system_error: Likewise.
3558 * include/experimental/tuple: Likewise.
3559 * include/experimental/type_traits: Likewise.
3560 * include/experimental/unordered_map: Likewise.
3561 * include/experimental/unordered_set: Likewise.
3562 * include/experimental/utility: Likewise.
3563 * include/experimental/vector: Likewise.
3564 * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
3565 * testsuite/experimental/array/neg.cc: Adjust dg-error.
3566 * testsuite/experimental/propagate_const/assignment/move_neg.cc:
3567 Likewise.
3568 * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
3569 * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
3570 * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
3571 * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
3572 * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
3573
3574 * include/experimental/bits/fs_dir.h: Fix Doxygen markup.
3575 * include/experimental/bits/fs_fwd.h: Improve docs.
3576 * include/experimental/bits/fs_ops.h: fix Doxygen markup.
3577 * include/experimental/bits/fs_path.h: Likewise.
3578 (path, filesystem_error, u8path): Improve docs.
3579 * include/experimental/filesystem: Link to docs for TS.
3580
3581 * config/allocator/new_allocator_base.h (__allocator_base): Add
3582 workaround for Doxygen bug #6945.
3583 * include/std/memory: Improve docs. Define group for pointer safety.
3584 * include/std/scoped_allocator: Improve docs. Use "undocumented"
3585 conditional to suppress documentation for implementation details.
3586
3587 * include/bits/specfun.h: Improve docs.
3588 * include/tr1/cmath: Likewise. Fix nesting of preprocessor conditions
3589 and namespaces.
3590
3591 * doc/doxygen/doxygroups.cc (std::tr2, std::__gnu_cxx): Improve docs.
3592 (std::experimental): Add docs.
3593 * doc/doxygen/user.cfg.in (PREDEFINED): Expand macros for __cxx11
3594 namespace to nothing when generating docs.
3595 * include/bits/regex_constants.h (std::regex_constants): Improve docs.
3596 * include/std/chrono (std::chrono): Likewise.
3597 * include/std/functional (std::placeholders): Likewise.
3598 * include/std/thread (std::this_thread): Likewise.
3599
3600 * include/parallel/settings.h: Fix Doxygen markup.
3601
3602 * include/ext/pb_ds/detail/bin_search_tree_/*_imps.hpp: Do not define
3603 anything unless PB_DS_CLASS_C_DEC is defined.
3604 * include/ext/pb_ds/detail/binary_heap_/*_imps.hpp: Likewise.
3605 * include/ext/pb_ds/detail/binomial_heap_/*_imps.hpp: Likewise.
3606 * include/ext/pb_ds/detail/binomial_heap_base_/*_imps.hpp: Likewise.
3607 * include/ext/pb_ds/detail/cc_hash_table_map_/*_imps.hpp: Likewise.
3608 * include/ext/pb_ds/detail/gp_hash_table_map_/*_imps.hpp: Likewise.
3609 * include/ext/pb_ds/detail/hash_fn/*_imp.hpp: Likewise.
3610 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/*_imps.hpp:
3611 Likewise.
3612 * include/ext/pb_ds/detail/list_update_map_/*_imps.hpp: Likewise.
3613 * include/ext/pb_ds/detail/ov_tree_map_/*_imps.hpp: Likewise.
3614 * include/ext/pb_ds/detail/pairing_heap_/*_imps.hpp: Likewise.
3615 * include/ext/pb_ds/detail/pat_trie_/*_imps.hpp: Likewise.
3616 * include/ext/pb_ds/detail/rb_tree_map_/*_imps.hpp: Likewise.
3617 * include/ext/pb_ds/detail/rc_binomial_heap_/*_imps.hpp: Likewise.
3618 * include/ext/pb_ds/detail/resize_policy*_imp.hpp: Likewise.
3619 * include/ext/pb_ds/detail/splay_tree_/*_imps.hpp: Likewise.
3620 * include/ext/pb_ds/detail/thin_heap_/*_imps.hpp: Likewise.
3621 * include/ext/pb_ds/detail/trie_policy*_imp.hpp: Likewise.
3622 * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp:
3623 Likewise.
3624 * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
3625 * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
3626 Likewise.
3627 * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
3628 Likewise.
3629
3630 * doc/doxygen/user.cfg.in: Regenerate with Doxygen 1.8.14 and set
3631 GROUP_NESTED_COMPOUNDS=YES and SORT_BY_SCOPE_NAME=NO. Add various
3632 _GLIBCXX_xxx macros and __attribute__(X) to PREDEFINED macros that
3633 Doxygen expands.
3634
3635 2019-05-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3636
3637 * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
3638 * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
3639 * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
3640 * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
3641 * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
3642 * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
3643 Likewise.
3644 * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
3645 * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
3646 Likewise.
3647
3648 2019-05-01 Jonathan Wakely <jwakely@redhat.com>
3649
3650 PR libstdc++/61761
3651 * include/std/complex (__complex_proj): Return parameter unchanged.
3652 [_GLIBCXX_USE_C99_COMPLEX] (__complex_proj): Change overloads for
3653 floating-point types to take std::complex arguments.
3654 [_GLIBCXX_USE_C99_MATH_TR1] (__complex_proj): Add overloads for
3655 floating-point types.
3656 * testsuite/26_numerics/complex/proj.cc: New test.
3657
3658 2019-04-30 Jakub Jelinek <jakub@redhat.com>
3659
3660 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Change _Lock_policyE2 exports
3661 to _Lock_policyE[012].
3662 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
3663
3664 2019-04-30 Jonathan Wakely <jwakely@redhat.com>
3665
3666 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Remove
3667 macros accidentally left in.
3668 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Remove
3669 unnecessary -lstdc++fs option. Fix test for mingw.
3670 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
3671 Fix test for mingw.
3672
3673 2019-04-30 Jakub Jelinek <jakub@redhat.com>
3674
3675 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
3676
3677 2019-04-29 Jonathan Wakely <jwakely@redhat.com>
3678
3679 * include/bits/stl_algo.h (generate_n): Adjust doxygen comment.
3680
3681 * include/bits/move.h (swap(T&, T&), swap(T (&)[N], T (&)[N])): Use
3682 _GLIBCXX_NOEXCEPT_IF to simplify declarations.
3683
3684 PR libstdc++/71312
3685 * src/c++11/shared_ptr.cc (get_mutex): Align pool mutexes to 64 bytes.
3686
3687 * include/bits/stl_bvector.h (vector<bool>::empty()): Add nodiscard
3688 attribute.
3689
3690 * include/bits/stl_iterator_base_types.h (_Iter_base): Remove unused
3691 class template and partial specialization.
3692
3693 PR libstdc++/87982
3694 * include/bits/stl_algo.h (generate_n): Convert _Size parameter to
3695 an integral type.
3696 * include/bits/stl_algobase.h (__size_to_integer): New overloaded
3697 functions to convert a value to an integral type.
3698 (__fill_n_a, __fill_n_a): Assert that __n is already an integral type.
3699 (fill_n): Convert _Size parameter to an integral type.
3700 * testsuite/25_algorithms/fill_n/87982.cc: New test.
3701 * testsuite/25_algorithms/fill_n/87982_neg.cc: New test.
3702 * testsuite/25_algorithms/fill_n/dr426.cc: New test.
3703 * testsuite/25_algorithms/generate_n/87982.cc: New test.
3704 * testsuite/25_algorithms/generate_n/87982_neg.cc: New test.
3705 * testsuite/25_algorithms/generate_n/dr426.cc: New test.
3706
3707 2019-04-28 Nina Dinka Ranns <dinka.ranns@gmail.com>
3708
3709 Adding noexcept-specification on tuple constructors (LWG 2899)
3710 * libstdc++-v3/include/std/tuple:
3711 (tuple()): Add noexcept-specification.
3712 (tuple(const _Elements&...)): Likewise
3713 (tuple(_UElements&&...)): Likewise
3714 (tuple(const tuple<_UElements...>&)): Likewise
3715 (tuple(tuple<_UElements...>&&)): Likewise
3716 (tuple(const _T1&, const _T2&)): Likewise
3717 (tuple(_U1&&, _U2&&)): Likewise
3718 (tuple(const tuple<_U1, _U2>&): Likewise
3719 (tuple(tuple<_U1, _U2>&&): Likewise
3720 (tuple(const pair<_U1, _U2>&): Likewise
3721 (tuple(pair<_U1, _U2>&&): Likewise
3722 * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc: New
3723
3724 2019-04-27 Marc Glisse <marc.glisse@inria.fr>
3725
3726 PR libstdc++/87106
3727 * include/bits/stl_uninitialized.h (__relocate_object_a): Mark the
3728 arguments with __restrict.
3729
3730 2019-04-26 H.J. Lu <hongjiu.lu@intel.com>
3731
3732 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3733
3734 2019-04-26 Jonathan Wakely <jwakely@redhat.com>
3735
3736 * include/experimental/bits/fs_path.h
3737 (path::_S_convert_loc<_InputIterator>): Create const std::string to
3738 avoid redundant call to _S_convert_loc with non-const pointers.
3739
3740 * testsuite/20_util/variant/run.cc: Use a new Hashable type to test
3741 hashing, because pmr::string depends on _GLIBCXX_USE_CXX11_ABI==1.
3742 * testsuite/21_strings/basic_string/hash/hash.cc
3743 [!_GLIBCXX_USE_CXX11_ABI]: Don't test pmr strings.
3744 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc
3745 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
3746
3747 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace wildcard that matches
3748 wstring::_M_replace_dispatch with more specific patterns.
3749 * include/bits/fs_path.h (path::_S_convert_loc<_InputIterator>):
3750 Create const std::string to avoid redundant call to _S_convert_loc
3751 with non-const pointers.
3752 * include/bits/locale_conv.h (__do_str_codecvt): Use if-constexpr to
3753 avoid unnecessary basic_string::assign instantiations.
3754
3755 * include/std/memory (__uses_alloc_args): Add string-literal to
3756 static_assert, to match the one in __uses_alloc.
3757 [__cpp_concepts] (_Std_pair): Use C++2a syntax for concept.
3758 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: Check
3759 for recursive uses-allocator construction of nested pairs.
3760 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc:: Add
3761 comment.
3762
3763 2019-04-26 Jakub Jelinek <jakub@redhat.com>
3764
3765 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
3766 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
3767 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
3768 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
3769
3770 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3771 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3772 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
3773 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3774 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3775 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3776 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3777
3778 2019-04-25 Jonathan Wakely <jwakely@redhat.com>
3779
3780 PR libstdc++/90239
3781 * doc/xml/manual/status_cxx2020.xml: Amend P0591R4 status.
3782 * include/std/scoped_allocator [__cplusplus > 201703L]
3783 (scoped_allocator_adaptor::construct): Define in terms of
3784 uses_allocator_construction_args, as per P0591R4.
3785 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc: New test.
3786 * testsuite/util/testsuite_allocator.h: Remove name of unused
3787 parameter.
3788
3789 2019-04-24 Jonathan Wakely <jwakely@redhat.com>
3790
3791 * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
3792 * doc/html/*: Regenerate.
3793
3794 * include/bits/fs_path.h (operator<, operator<=, operator>)
3795 (operator>=, operator==, operator!=): Make hidden friends, as per
3796 LWG 3065.
3797 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Fix
3798 string type in test.
3799 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
3800
3801 * include/std/any (any::any(ValueType&&)): Use __and_v.
3802 * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
3803 Likewise.
3804
3805 * include/std/tuple (apply): Use remove_reference_t instead of decay_t
3806 as per P0777R1.
3807 * include/std/type_traits (__result_of_memfun): Use remove_reference
3808 instead of __remove_cvref_t and remove redundant is_same check.
3809 (__inv_unwrap): Use __remove_cvref_t instead of decay_t.
3810
3811 * include/experimental/string_view (basic_string_view::pointer)
3812 (basic_string_view::reference): Fix to refer to non-const value_type.
3813 * include/bits/basic_string.h (basic_string): Use __sv_check and
3814 __sv_limit instead of basic_string_view::_M_check and
3815 basic_string_view::_M_limit.
3816 * include/std/string_view (__sv_check, __sv_limit): New
3817 helper functions to replace basic_string_view::_M_check and
3818 basic_string_view::_M_limit.
3819 (basic_string_view): Add static assertions to enforce ill-formed
3820 requirement for traits_type::char_type from P1148R0, and to enforce
3821 required properties of char-like types.
3822 (basic_string_view::pointer, basic_string_view::reference): Fix to
3823 refer to non-const value_type.
3824 (basic_string_view::operator[], basic_string_view::at)
3825 (basic_string_view::front, basic_string_view::back)
3826 (basic_string_view::data): Use const_reference and const_pointer
3827 typedefs for return types.
3828 (basic_string_view::_M_check, basic_string_view::_M_limit): Remove.
3829 (hash<wstring_view>): Fix argument_type typedef.
3830 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
3831 char/1.cc: Fix expected return type of basic_string_view::data().
3832 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
3833 wchar_t/1.cc: Likewise.
3834 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
3835 char/1.cc: Likewise.
3836 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
3837 wchar_t/1.cc: Likewise.
3838 * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
3839 New test.
3840 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
3841 Check reference and pointer typedefs.
3842 * testsuite/experimental/string_view/requirements/typedefs.cc:
3843 Likewise.
3844 * testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc:
3845 Fix expected return type of basic_string_view::data().
3846 * testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/
3847 1.cc: Likewise.
3848 * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
3849 Likewise.
3850 * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
3851 1.cc: Likewise.
3852
3853 PR libstdc++/90220
3854 * include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
3855 Avoid a runtime check for types that can never be stored in std::any.
3856 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
3857 array types.
3858
3859 PR libstdc++/90220 (partial)
3860 * include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
3861 not attempt ill-formed static_cast to pointers to non-object types.
3862 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
3863 function types.
3864
3865 * testsuite/20_util/variant/run.cc: Catch exception by reference to
3866 prevent -Wcatch-value warning.
3867
3868 * include/std/variant (__variant_construct): Use template parameter
3869 type instead of equivalent decltype-specifier.
3870 (_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
3871 Replace forward with move.
3872 (_Move_ctor_base<false, Types...>::_M_destructive_move)
3873 (_Move_ctor_base<false, Types...>::_M_destructive_copy)
3874 (_Move_ctor_base<true, Types...>::_M_destructive_move)
3875 (_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
3876 index after construction succeeds.
3877 (_Copy_assign_base<false, Types...>::operator=): Remove redundant
3878 if-constexpr checks that are always true. Use __remove_cvref_t instead
3879 of remove_reference so that is_nothrow_move_constructible check
3880 doesn't use a const rvalue parameter. In the potentially-throwing case
3881 construct a temporary and move assign it, as per LWG 2904.
3882 (_Move_assign_base<false, Types...>::operator=): Remove redundant
3883 if-constexpr checks that are always true. Use emplace as per LWG 2904.
3884 (variant::operator=(T&&)): Only use emplace conditionally, otherwise
3885 construct a temporary and move assign from it, as per LWG 2904.
3886 * testsuite/20_util/variant/exception_safety.cc: Check that
3887 assignment operators have strong exception safety guarantee.
3888
3889 2019-04-23 Thomas Rodgers <trodgers@redhat.com>
3890
3891 Document PSTL linker flags
3892
3893 * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
3894
3895 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
3896
3897 * include/std/variant (__detail::__variant::_Traits): Make
3898 _S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
3899 _S_trivial_move_assign depend on _S_trivial_move_ctor, as per
3900 P0602R4.
3901 (__detail::__variant::_Copy_assign_alias): Only depend on
3902 _S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
3903 * testsuite/20_util/variant/compile.cc: Correct checks for trivial
3904 move assignment operators.
3905
3906 PR libstdc++/90165
3907 * include/std/variant (variant::__not_self): New helper for the
3908 is_same_v<remove_cvref_t<T>, variant>==false constraints.
3909 (variant::__to_type_impl): Remove.
3910 (variant::__to_type): Add default argument to check pack size, instead
3911 of using __to_type_impl.
3912 (variant::__accepted_type): Add default argument using __not_self.
3913 (variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
3914 for variant(T&&) constructor constraint.
3915 (variant::variant(T&&)): Use __not_in_place_tag in constraints.
3916 Extract __accepted_type into a named template parameter for reuse in
3917 other constraints and in the exception specification.
3918 (variant::variant(in_place_type_t<T>, Args&&...))
3919 (variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
3920 (variant::variant(in_place_index_t<T>, Args&&...))
3921 (variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
3922 (variant::operator=T&&)): Remove redundant && from trait arguments.
3923 * testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
3924 isn't used for in_place_type or in_place_index arguments.
3925
3926 * include/std/type_traits (unwrap_reference_t): Define for C++2a.
3927 (unwrap_ref_decay): Remove inheritance from unwrap_reference.
3928 * testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.
3929
3930 2019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
3931 Bernd Edlinger <bernd.edlinger@hotmail.de>
3932 Jakub Jelinek <jakub@redhat.com>
3933
3934 PR target/89093
3935 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
3936 general-regs-only target attribute for ARM.
3937
3938 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
3939
3940 PR libstdc++/87431
3941 * include/bits/basic_string.h (_Never_valueless_alt): Make partial
3942 specialization also depend on is_nothrow_move_constructible.
3943 * include/std/variant (__detail::__variant::__never_valueless()):
3944 Only true if the variant would have a move assignment operator.
3945 (__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
3946 Check __never_valueless<T...>().
3947 (variant::emplace): Only perform non-throwing move assignments
3948 for never-valueless alternatives if the variant has a move assignment
3949 operator.
3950 * testsuite/20_util/variant/compile.cc: Check that never-valueless
3951 types can be emplaced into non-assignable variants.
3952 * testsuite/20_util/variant/run.cc: Check that never-valueless types
3953 don't get copied when emplaced into non-assignable variants.
3954
3955 * include/std/variant (__detail::__variant::__ref_cast): Remove
3956 unused function.
3957 (__detail::__variant::_Uninitialized::_M_get)
3958 (__detail::__variant::__get)
3959 (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
3960
3961 2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
3962
3963 * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
3964 to Darwin10.
3965 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
3966 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
3967 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
3968 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
3969
3970 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
3971
3972 Delegate PSTL configuration to pstl/pstl_config.h
3973
3974 * include/bits/c++config: Remove explicit PSTL configuration
3975 macros and use definitions from <pstl/pstl_config.h>.
3976
3977 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
3978
3979 Cleanup algorithm implementations
3980 * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
3981 execution policy.
3982 (mismatch): Forward execution policy.
3983 (equal): Qualify call to std::equal().
3984 (partial_sort): Forward execution policy.
3985 (inplace_merge): Forward execution policy.
3986
3987 2019-04-19 Thomas Rodgers <trodgers@redhat.com>
3988
3989 Improve implementation of parallel equal()
3990 * include/pstl/algorithm_impl.h
3991 (__internal::__brick_equal): use "4 iterator" version of
3992 std::equal().
3993 (__internal::__brick_equal): use simd for random access
3994 iterators on unsequenced execution policies.
3995 (__internal::__pattern_equal): add "4 iterator" version
3996 (__internal::__pattern_equal): dispatch to simd __brick_equal
3997 for vector-only execution policies.
3998 (__internal::__pattern_equal): dispatch to __parallel_or for
3999 parallel execution policies.
4000 * include/pstl/glue_algorithm_impl.h
4001 (std::equal): dispatch to "4 iterator" version of
4002 __internal::__pattern_equal().
4003
4004 2019-04-17 Jonathan Wakely <jwakely@redhat.com>
4005
4006 PR libstdc++/90105
4007 * include/bits/forward_list.h (operator==): Do not use operator!= to
4008 compare elements.
4009 (forward_list<T, A>::sort(Comp)): When elements are equal take the one
4010 earlier in the list, so that sort is stable.
4011 * testsuite/23_containers/forward_list/operations/90105.cc: New test.
4012 * testsuite/23_containers/forward_list/comparable.cc: Test with
4013 types that meet the minimum EqualityComparable and LessThanComparable
4014 requirements. Remove irrelevant comment.
4015
4016 * include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
4017 Do not depend on whether all alternative types are move constructible.
4018 (__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
4019 from the operand when deciding whether to perform the assignment.
4020 * testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
4021 with deleted move constructor and deleted move assignment operator.
4022 (default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
4023 behaviour of variants with DeletedMoves as an alternative.
4024 * testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
4025 (move_ctor, move_assign): Check that moving a variant with a
4026 DeletedMoves alternative falls back to copying instead of moving.
4027
4028 * testsuite/20_util/variant/compile.cc: Remove empty string literals
4029 from static_assert declarations.
4030
4031 * testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
4032 actually match its name.
4033 (MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
4034 (test_swap()): Fix result for MoveCtorOnly and check
4035 MoveCtorAndSwapOnly.
4036
4037 * include/std/optional (optional::value_or(U&&) &&): Add missing
4038 constexpr specifier.
4039 * testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
4040 for disengaged optionals and rvalue optionals.
4041 * testsuite/20_util/optional/observers/4.cc: Likewise.
4042
4043 2019-04-12 Thomas Rodgers <trodgers@redhat.com>
4044
4045 * include/pstl/algorithm_impl.h: Uglify identfiers.
4046 * include/pstl/numeric_impl.h: Uglify identfiers.
4047 * include/pstl/parallel_backend_tbb.h: Uglify identfiers.
4048
4049 2019-04-11 Thomas Rodgers <trodgers@redhat.com>
4050
4051 * include/bits/c++config:
4052 Add definition for __PSTL_ASSERT.
4053 Add definition for __PSTL_ASSERT_MSG.
4054 * include/pstl/algorithm_impl.h: Replace use of assert().
4055 * include/pstl/numeric_impl.h: Replace use of assert().
4056 * include/pstl/parallel_backend_tbb.h:
4057 Replace use of assert().
4058 Replace use of __TBB_ASSERT().
4059 * include/pstl/parallel_backend_utils.h: Replace use of assert().
4060
4061 2019-04-11 Jonathan Wakely <jwakely@redhat.com>
4062
4063 PR libstdc++/90046
4064 * src/c++17/memory_resource.cc
4065 (monotonic_buffer_resource::_Chunk::allocate): Increase alignment if
4066 needed to allow placing a _Chunk at the end of the buffer.
4067 (monotonic_buffer_resource::_M_new_buffer): Remove static_assert.
4068
4069 2019-04-10 Jonathan Wakely <jwakely@redhat.com>
4070
4071 * doc/xml/faq.xml: Add information about emergency EH pool.
4072 * doc/xml/manual/debug.xml: Update list of memory debugging tools.
4073 Move outdated information on mt_allocator to a separate section.
4074 * doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW
4075 doesn't affect the default allocator.
4076
4077 * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
4078 typo.
4079
4080 PR libstdc++/89851
4081 * testsuite/20_util/variant/89851.cc: New test.
4082
4083 2019-04-09 Jonathan Wakely <jwakely@redhat.com>
4084
4085 * include/std/variant: Adjust whitespace. Add comments.
4086 (_Multi_array): Leave primary template undefined.
4087 (_Multi_array<_Tp>): Define partial specialization for base case of
4088 recursion.
4089 (__gen_vtable_impl, __gen_vtable): Remove redundant && from type
4090 which is always a reference.
4091 (__gen_vtable::_S_apply()): Remove function, inline body into
4092 default member initializer.
4093 * testsuite/20_util/variant/visit.cc: Test with noncopyable types.
4094
4095 * include/std/variant (__variant_idx_cookie): Add member type.
4096 (__visitor_result_type): Remove.
4097 (__do_visit): Use invoke_result instead of __visitor_result_type.
4098 * testsuite/20_util/variant/visit.cc: New test.
4099
4100 PR libstdc++/90008
4101 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
4102 unused capture.
4103 * testsuite/20_util/variant/90008.cc: New test.
4104
4105 2019-04-09 Thomas Rodgers <trodgers@redhat.com>
4106
4107 * include/pstl/algorithm_impl.h: Add namespace qualification.
4108 * include/pstl/execution_defs.h: Add namespace qualification.
4109 * include/pstl/execution_impl.h: Add namespace qualification.
4110 * include/pstl/numeric_impl.h: Add namespace qualification.
4111 * include/pstl/parallel_backend_tbb.h: Add namespace qualification.
4112 * include/pstl/unseq_backend_simd.h: Add namespace qualification.
4113 * include/pstl/parallel_backend_utils.h: Include <cassert>.
4114
4115 2019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
4116
4117 Fix visit<R> for variant.
4118 * include/std/variant (__do_visit): Add a template parameter
4119 for enforcing same return types for visit.
4120 (__gen_vtable_impl): Likewise.
4121 (_S_apply_single_alt): Adjust.
4122 (__visit_invoke_impl): New. Handle casting to void.
4123 (__do_visit_invoke): New. Enforces same return types.
4124 (__do_visit_invoke_r): New. Converts return types.
4125 (__visit_invoke): Adjust.
4126 (__gen_vtable): Add a template parameter for enforcing
4127 same return types for visit.
4128 * testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
4129 different return types.
4130 * testsuite/20_util/variant/visit_neg.cc: New. Ensures that
4131 visitors with different return types don't accidentally
4132 compile with regular visitation.
4133
4134 2019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
4135
4136 * testsuite/27_io/filesystem/iterators/caching.cc: Add
4137 dg-require-filesystem-ts.
4138
4139 2019-04-05 Jonathan Wakely <jwakely@redhat.com>
4140
4141 * doc/xml/manual/status_cxx2020.xml: Update status.
4142 * include/std/variant (visit<R>): Define for C++2a (P0655R1).
4143 * testsuite/20_util/variant/visit_r.cc: New test.
4144
4145 * include/bits/fs_dir.h (directory_iterator::operator*)
4146 (directory_iterator::operator->): Add noexcept.
4147 (operator==, operator!=): Replace namespace-scope equality operators
4148 for directory iterators with hidden friends.
4149
4150 PR libstdc++/89986
4151 * config/abi/pre/gnu.ver: Add missing exports.
4152 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
4153 increment member.
4154
4155 * config/abi/pre/gnu.ver: Export new symbols.
4156 * include/bits/fs_dir.h (recursive_directory_iterator::options())
4157 (recursive_directory_iterator::recursion_pending())
4158 (recursive_directory_iterator::disable_recursion_pending()): Remove
4159 inline definitions. Make noexcept.
4160 (recursive_directory_iterator::depth())
4161 (recursive_directory_iterator::operator*())
4162 (recursive_directory_iterator::operator->()): Make noexcept.
4163 (recursive_directory_iterator::_M_options)
4164 (recursive_directory_iterator::_M_pending): Remove data members.
4165 * src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
4166 (recursive_directory_iterator::recursive_directory_iterator): Remove
4167 ctor-initializer. Use new constructor for _Dir_stack.
4168 (recursive_directory_iterator::options())
4169 (recursive_directory_iterator::recursion_pending())
4170 (recursive_directory_iterator::disable_recursion_pending()): Add
4171 non-inline definitions.
4172 (recursive_directory_iterator::depth()): Make noexcept.
4173 (recursive_directory_iterator::increment(error_code&))
4174 (recursive_directory_iterator::pop(error_code&)): Adjust to new
4175 location of options and recursion_pending members.
4176 * testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
4177 * testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
4178 user-declared move constructor and assignment operator, to make the
4179 type move-only.
4180
4181 * src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
4182 d_type == DT_UNKNOWN immediately.
4183 (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
4184 handling here.
4185 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
4186
4187 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
4188 assignment.
4189 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
4190 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
4191 assignment.
4192
4193 PR libstdc++/87431 (again)
4194 * include/bits/basic_string.h (__variant::_Never_valueless_alt):
4195 Define partial specialization for basic_string.
4196 * include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
4197 shared_ptr and weak_ptr.
4198 * include/bits/std_function.h (_Never_valueless_alt): Likewise for
4199 function.
4200 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
4201 vector.
4202 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
4203 unique_ptr.
4204 * include/debug/vector (_Never_valueless_alt): Likewise for debug
4205 vector.
4206 * include/std/any (_Never_valueless_alt): Define explicit
4207 specialization for any.
4208 * include/std/variant (_Never_valueless_alt): Define primary template.
4209 (__never_valueless): Use _Never_valueless_alt instead of
4210 is_trivially_copyable.
4211 (variant::emplace<N>(Args&&...)): Add special case for non-throwing
4212 initializations to avoid try-catch overhead. Add special case for
4213 scalars produced by potentially-throwing conversions. Use
4214 _Never_valueless_alt instead of is_trivially_copyable for the
4215 remaining strong exception-safety cases.
4216 (variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
4217 * testsuite/20_util/variant/87431.cc: Run both test functions.
4218 * testsuite/20_util/variant/exception_safety.cc: New test.
4219 * testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
4220 so the variant becomes valueless.
4221
4222 2019-04-03 Jonathan Wakely <jwakely@redhat.com>
4223
4224 PR libstdc++/85184
4225 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
4226 Remove assertions.
4227 (variant::emplace<_Tp>): Return result of emplace<N> directly.
4228
4229 * include/std/string (__hash_string_base): New class template defining
4230 operator() for hashing strings.
4231 (hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
4232 (hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
4233 * testsuite/21_strings/basic_string/hash/hash.cc: New test.
4234 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.
4235
4236 2019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
4237
4238 Use single-visitation in variant assignment and swap and relops.
4239 Also use indices instead of types when checking whether
4240 variants hold the same thing.
4241 * include/std/variant (__do_visit): Add a template parameter
4242 for index visitation, invoke with indices if index visitation
4243 is used.
4244 (__variant_idx_cookie): New.
4245 (__visit_with_index): Likewise.
4246 (_Copy_assign_base::operator=): Do single-visitation with
4247 an index visitor.
4248 (_Move_assign_base::operator=): Likewise.
4249 (_Extra_visit_slot_needed): Adjust.
4250 (__visit_invoke): Call with indices if it's an index visitor.
4251 (relops): Do single-visitation with an index visitor.
4252 (swap): Likewise.
4253 (__visitor_result_type): New.
4254
4255 2019-03-30 Eric Botcazou <ebotcazou@adacore.com>
4256
4257 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
4258
4259 2019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
4260
4261 Don't revisit a variant we are already visiting.
4262 * include/std/variant (__variant_construct_single): New.
4263 (__variant_construct): Use it.
4264 (_M_destructive_move): Likewise.
4265 (_M_destructive_copy): Likewise.
4266 (_Copy_assign_base::operator=): Adjust.
4267 (_Move_assign_base::operator=): Likewise.
4268 (swap): Likewise.
4269
4270 2019-03-26 Jonathan Wakely <jwakely@redhat.com>
4271
4272 PR libstdc++/85965
4273 * include/bits/hashtable.h (_Hashtable): Move static assertions to
4274 destructor so they are not evaluated until the _Key type is complete.
4275 * include/bits/stl_tree.h (_Rb_tree): Likewise.
4276 * testsuite/23_containers/set/85965.cc: New test.
4277 * testsuite/23_containers/unordered_set/85965.cc: New test.
4278 * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
4279 with regexp matching the corresponding _Rb_tree specialization.
4280 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
4281 * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
4282 * testsuite/23_containers/set/48101_neg.cc: Likewise.
4283 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
4284 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
4285 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
4286 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
4287
4288 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4289
4290 PR libstdc++/89825
4291 Fix based on a suggestion by Antony Polukhin.
4292 * include/std/variant (__never_valueless): New.
4293 (_M_valid): Use it.
4294 (_Extra_visit_slot_needed): New.
4295 (_Multi_array): Use it.
4296 (_S_apply_all_alts): Likewise.
4297
4298 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4299
4300 PR libstdc++/89824
4301 Fix based on a suggestion by Antony Polukhin.
4302 * include/std/variant (__gen_vtable): Don't reserve an
4303 additional table slot, _Multi_array already does that.
4304
4305 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4306
4307 PR libstdc++/89816
4308 Fix based on a suggestion by Antony Polukhin.
4309 * include/std/variant (__variant_construct): Capture a pointer
4310 to the storage and visit just one variant.
4311
4312 2019-03-22 Jonathan Wakely <jwakely@redhat.com>
4313
4314 * doc/xml/manual/backwards_compatibility.xml: Remove link to
4315 Doxygen-generated pages with unstable URL.
4316 * doc/xml/manual/concurrency_extensions.xml: Likewise.
4317 * doc/xml/manual/extensions.xml: Likewise.
4318 * doc/xml/manual/parallel_mode.xml: Likewise.
4319 * doc/xml/manual/support.xml: Likewise.
4320
4321 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
4322 avoid -Wconversion warnings.
4323
4324 2019-03-21 Thomas Rodgers <trodgers@redhat.com>
4325
4326 * include/Makefile.am (std_header): Add ${std_srcdir}/execution.
4327 (pstl_srcdir, pstl_builddir, pstl_headers): New variables.
4328 (allstamped): Add stamp-pstl.
4329 (install-headers): Add ptsl_builddir.
4330 * include/Makefile.in: Regenerate.
4331 * include/bits/c++config: Add pstl configuration.
4332 * include/pstl/LICENSE.txt: New file.
4333 * include/pstl/algorithm_fwd.h: New file.
4334 * include/pstl/algorithm_impl.h: New file.
4335 * include/pstl/execution_defs.h: New file.
4336 * include/pstl/execution_impl.h: New file.
4337 * include/pstl/glue_algorithm_defs.h: New file.
4338 * include/pstl/glue_algorithm_impl.h: New file.
4339 * include/pstl/glue_execution_defs.h: New file.
4340 * include/pstl/glue_memory_defs.h: New file.
4341 * include/pstl/glue_memory_impl.h: New file.
4342 * include/pstl/glue_numeric_defs.h: New file.
4343 * include/pstl/glue_numeric_impl.h: New file.
4344 * include/pstl/memory_impl.h: New file.
4345 * include/pstl/numeric_fwd.h: New file.
4346 * include/pstl/numeric_impl.h: New file.
4347 * include/pstl/parallel_backend.h: New file.
4348 * include/pstl/parallel_backend_tbb.h: New file.
4349 * include/pstl/parallel_backend_utils.h: New file.
4350 * include/pstl/parallel_impl.h: New file.
4351 * include/pstl/pstl_config.h: New file.
4352 * include/pstl/unseq_backend_simd.h: New file.
4353 * include/pstl/utils.h: New file.
4354 * include/std/algorithm: Include parallel algorithm implementations.
4355 * include/std/execution: New file.
4356 * include/std/memory: Include parallel algorithm implementations.
4357 * include/std/numeric: Include parallel algorithm implementations.
4358 * include/std/version: Add parallel algorithms feature test macro.
4359 * testsuite/util/pstl/pstl_test_config.h: New file.
4360 * testsuite/util/pstl/test_utils.h: New file.
4361 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
4362 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
4363 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
4364 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
4365 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
4366 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
4367 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
4368 * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
4369 * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
4370 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
4371 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
4372 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
4373 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
4374 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
4375 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
4376 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
4377 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
4378 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
4379 * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
4380 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
4381 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
4382 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
4383 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
4384 * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
4385 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
4386 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
4387 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
4388 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
4389 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
4390 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
4391 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
4392 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
4393 * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
4394 * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
4395 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
4396 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
4397 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
4398 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
4399 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
4400 * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
4401 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
4402 * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
4403 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
4404 * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
4405 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
4406 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
4407 * testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
4408 * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
4409 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
4410 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
4411 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
4412 * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
4413 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
4414 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
4415 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
4416 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
4417 * testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
4418 * testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
4419 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
4420 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
4421 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
4422 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
4423 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
4424 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
4425 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
4426 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
4427 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
4428 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
4429 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
4430 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
4431 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
4432 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
4433 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
4434 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
4435 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
4436 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
4437 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
4438 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
4439 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
4440 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
4441 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
4442 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
4443 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
4444 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
4445 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
4446 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
4447 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
4448 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
4449 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
4450 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
4451 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
4452 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
4453 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
4454 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
4455 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
4456 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
4457 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
4458 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
4459 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
4460 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
4461 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
4462 * testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
4463 * testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
4464 * testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
4465 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
4466 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
4467
4468 2019-03-21 Jonathan Wakely <jwakely@redhat.com>
4469
4470 * include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
4471 (assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
4472 (assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
4473 (comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
4474 (comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
4475 (cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
4476 (cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
4477 (cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
4478 (ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
4479 (ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
4480 (hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
4481 (legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
4482 (sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
4483 (sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
4484 when the special functions IS is enabled, not for C++17.
4485 * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
4486 Replace with ...
4487 * testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
4488 without checks for special functions in C++17.
4489 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
4490 New test.
4491
4492 PR libstdc++/88066
4493 * include/backward/hash_map: Use <> for includes not "".
4494 * include/backward/hash_set: Likewise.
4495 * include/backward/strstream: Likewise.
4496 * include/tr1/bessel_function.tcc: Likewise.
4497 * include/tr1/exp_integral.tcc: Likewise.
4498 * include/tr1/legendre_function.tcc: Likewise.
4499 * include/tr1/modified_bessel_func.tcc: Likewise.
4500 * include/tr1/riemann_zeta.tcc: Likewise.
4501
4502 2019-03-19 Jonathan Wakely <jwakely@redhat.com>
4503
4504 * doc/xml/manual/allocator.xml: Link to table documenting evolution
4505 of extension allocators.
4506 * doc/xml/manual/evolution.xml: Use angle brackets for header names.
4507 Document new headers in 7.2, 8.1 and 9.1 releases.
4508 * doc/xml/manual/using.xml: Adjust link target for new_allocator.
4509 * doc/html/*: Regenerate.
4510
4511 2019-03-12 John David Anglin <dave.anglin@bell.net>
4512
4513 PR libstdc++/89461
4514 * testsuite/lib/libstdc++.exp: Locate libatomic.
4515 * testsuite/lib/dg-options.exp (add_options_for_libatomic): New.
4516 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
4517 libatomic options.
4518 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
4519 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
4520 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
4521 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
4522
4523 2019-03-11 Jonathan Wakely <jwakely@redhat.com>
4524
4525 PR libstdc++/89460
4526 * configure.ac: Check for sockatmark.
4527 * crossconfig.m4: Check for sockatmark.
4528 * config.h.in: Regenerate.
4529 * configure: Regenerate.
4530 * include/experimental/internet (address_v4::_S_hton): Rename
4531 overloaded functions to _S_hton_16 and _S_ntoh_16.
4532 (address_v4::_S_ntoh): Rename to _S_ntoh_16 and _S_ntoh_32.
4533 (basic_endpoint): Adjust calls to _S_hton and _S_ntoh.
4534 * include/experimental/socket (basic_socket::at_mark): Check
4535 _GLIBCXX_HAVE_SOCKATMARK.
4536
4537 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
4538 const variables instead of macros.
4539
4540 PR libstdc++/89629
4541 * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
4542 Use correct type for len_aligned.
4543 * testsuite/20_util/hash/89629.cc: New test.
4544
4545 2019-03-11 Jakub Jelinek <jakub@redhat.com>
4546
4547 PR libstdc++/89641
4548 * include/std/atomic (atomic<T>::store, atomic<T>::load,
4549 atomic<T>::exchange, atomic<T>::compare_exchange_weak,
4550 atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
4551 * include/bits/atomic_base.h (__atomic_base<T>::operator++,
4552 __atomic_base<T>::operator--, __atomic_base<T>::operator+=,
4553 __atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
4554 __atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
4555 __atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
4556 __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
4557 memory_order_seq_cst to int.
4558
4559 2019-03-08 Jonathan Wakely <jwakely@redhat.com>
4560
4561 * doc/xml/manual/using.xml: Use link element instead of xref.
4562 * doc/html/*: Regenerate.
4563
4564 * include/bits/fs_path.h (path::format): Add fixed underlying type.
4565
4566 2019-03-08 François Dumont <fdumont@gcc.gnu.org>
4567
4568 PR libstdc++/89477
4569 * include/debug/map.h (map): Use _RequireNotAllocator to constrain
4570 parameters in deduction guides.
4571 * include/debug/multimap.h (multimap): Likewise.
4572 * include/debug/set.h (multimap): Likewise.
4573 * include/debug/multiset.h (multimap): Likewise.
4574 * include/debug/unordered_map (unordered_map): Likewise.
4575 (unordered_multimap): Likewise.
4576 * include/debug/unordered_set (unordered_set): Likewise.
4577 (unordered_multiset): Likewise.
4578
4579 PR libstdc++/89608
4580 * include/debug/unordered_map (unordered_map<>::_M_check_rehashed):
4581 Invalidate all iterators in case of rehash.
4582 (unordered_multimap<>::_M_check_rehashed): Likewise.
4583 * include/debug/unordered_set
4584 (unordered_set<>::_M_check_rehashed): Likewise.
4585 (unordered_multiset<>::_M_check_rehashed): Likewise.
4586 * testsuite/23_containers/unordered_set/debug/89608_neg.cc: New.
4587
4588 2019-03-07 Andreas Schwab <schwab@suse.de>
4589
4590 * config/abi/post/riscv64-linux-gnu: New directory.
4591 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
4592
4593 2019-03-07 Jonathan Wakely <jwakely@redhat.com>
4594
4595 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
4596 compile test to run. Fix typo.
4597
4598 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
4599 * doc/html/*: Regenerate.
4600
4601 P0356R5 Simplified partial function application
4602 * include/std/functional [C++20] (_Bind_front, _Bind_front_t): Define
4603 helpers for bind_front.
4604 (bind_front, __cpp_lib_bind_front): Define.
4605 * testsuite/20_util/function_objects/bind_front/1.cc: New test.
4606
4607 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
4608
4609 * include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
4610 * include/std/version (__cpp_lib_bounded_array_traits): Likewise.
4611 * testsuite/20_util/is_bounded_array/value.cc: Check for macro.
4612 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
4613
4614 2019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
4615
4616 PR libstdc++/86655 - std::assoc_legendre should not constrain
4617 the value of m (or x).
4618 * include/tr1/legendre_function.tcc (__assoc_legendre_p,
4619 __sph_legendre): If degree > order Don't throw, return 0.
4620 (__legendre_p, __assoc_legendre_p): Don't constrain x either.
4621 * testsuite/special_functions/02_assoc_legendre/pr86655.cc: New test.
4622 * testsuite/special_functions/20_sph_legendre/pr86655.cc: New test.
4623 * testsuite/tr1/5_numerical_facilities/special_functions/
4624 02_assoc_legendre/pr86655.cc: New test.
4625 * testsuite/tr1/5_numerical_facilities/special_functions/
4626 22_sph_legendre/pr86655.cc: New test.
4627
4628 2019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
4629
4630 Rewrite variant.
4631 Also PR libstdc++/85517
4632 * include/std/variant (__do_visit): New.
4633 (__variant_cast): Likewise.
4634 (__variant_cookie): Likewise.
4635 (__erased_*): Remove.
4636 (_Variant_storage::_S_vtable): Likewise.
4637 (_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
4638 (_Variant_storage::__M_reset): Adjust.
4639 (__variant_construct): New.
4640 (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
4641 __variant_construct.
4642 (_Move_ctor_base(_Move_ctor_base&&)): Likewise.
4643 (_Move_ctor_base::__M_destructive_copy): New.
4644 (_Move_ctor_base::__M_destructive_move): Adjust to use
4645 __variant_construct.
4646 (_Copy_assign_base::operator=): Adjust to use __do_visit.
4647 (_Copy_assign_alias): Adjust to check both copy assignment
4648 and copy construction for triviality.
4649 (_Move_assign_base::operator=): Adjust to use __do_visit.
4650 (_Multi_array): Add support for visitors that accept and return
4651 a __variant_cookie.
4652 (__gen_vtable_impl::_S_apply_all_alts): Likewise.
4653 (__gen_vtable_impl::_S_apply_single_alt): Likewise.
4654 (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
4655 a __variant_cookie temporary for a variant that is valueless and..
4656 (__gen_vtable_impl::__visit_invoke): ..adjust here.
4657 (__gen_vtable::_Array_type): Conditionally make space for
4658 the __variant_cookie visitor case.
4659 (__variant_construct_by_index): New.
4660 (get_if): Adjust to use std::addressof.
4661 (relops): Adjust to use __do_visit.
4662 (variant): Add __variant_cast and __variant_construct_by_index
4663 as friends.
4664 (variant::emplace): Use _M_reset() and __variant_construct_by_index
4665 instead of self-destruction.
4666 (variant::swap): Adjust to use __do_visit.
4667 (visit): Reimplement in terms of __do_visit.
4668 (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
4669 * testsuite/20_util/variant/compile.cc: Adjust.
4670 * testsuite/20_util/variant/run.cc: Likewise.
4671
4672 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
4673
4674 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
4675 constant.
4676 * testsuite/experimental/feat-char8_t.cc: Likewise.
4677
4678 * include/std/type_traits [C++20] (is_bounded_array)
4679 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
4680 Define.
4681 * testsuite/20_util/is_bounded_array/requirements/
4682 explicit_instantiation.cc: New test.
4683 * testsuite/20_util/is_bounded_array/requirements/typedefs.cc: New
4684 test.
4685 * testsuite/20_util/is_bounded_array/value.cc: New test.
4686 * testsuite/20_util/is_unbounded_array/requirements/
4687 explicit_instantiation.cc: New test.
4688 * testsuite/20_util/is_unbounded_array/requirements/typedefs.cc: New
4689 * test.
4690 * testsuite/20_util/is_unbounded_array/value.cc: New test.
4691
4692 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
4693 Add constexpr.
4694 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
4695
4696 2019-03-05 Jonathan Wakely <jwakely@redhat.com>
4697
4698 * include/c_compatibility/math.h [C++20] (lerp): Add using
4699 declaration.
4700 * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define.
4701 (__lerp): Define function template to implement lerp.
4702 (lerp(float, float, float), lerp(double, double, double))
4703 (lerp(long double, long double, long double)): Define for C++20.
4704 * include/std/numeric [C++20] (__cpp_lib_interpolate): Define.
4705 (midpoint(T, T), midpoint(T*, T*)): Define.
4706 * include/std::version [C++20] (__cpp_lib_interpolate): Define.
4707 * testsuite/26_numerics/lerp.cc: New test.
4708 * testsuite/26_numerics/midpoint/floating.cc: New test.
4709 * testsuite/26_numerics/midpoint/integral.cc: New test.
4710 * testsuite/26_numerics/midpoint/pointer.cc: New test.
4711
4712 2019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
4713
4714 PR libstdc++/88996 Implement P0439R0
4715 Make std::memory_order a scoped enumeration.
4716 * include/bits/atomic_base.h: For C++20 make memory_order a scoped enum,
4717 add variables for the old enumerators. Adjust calls.
4718 * testsuite/29_atomics/headers/atomic/types_std_c++2a.cc: New test.
4719 * testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc: New test.
4720
4721 2019-03-04 Jonathan Wakely <jwakely@redhat.com>
4722
4723 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
4724 directive.
4725
4726 * include/std/memory_resource (polymorphic_allocator): Add default
4727 template argument for C++20.
4728 (polymorphic_allocator::allocate_bytes)
4729 (polymorphic_allocator::deallocate_bytes)
4730 (polymorphic_allocator::allocate_object)
4731 (polymorphic_allocator::deallocate_object)
4732 (polymorphic_allocator::new_object)
4733 (polymorphic_allocator::delete_object): New member functions for
4734 C++20.
4735 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
4736 test.
4737
4738 2019-03-03 Jonathan Wakely <jwakely@redhat.com>
4739
4740 PR libstdc++/89562
4741 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
4742 mode for mingw.
4743
4744 2019-03-01 Jonathan Wakely <jwakely@redhat.com>
4745
4746 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
4747 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
4748
4749 * include/std/memory (uses_allocator_construction_args): New set of
4750 overloaded functions.
4751 (make_obj_using_allocator, uninitialized_construct_using_allocator):
4752 New functions.
4753 * include/std/memory_resource (polymorphic_allocator::construct)
4754 [__cplusplus > 201703l]: Replace all overloads with a single function
4755 using uses_allocator_construction_args.
4756 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: New
4757 test.
4758 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
4759
4760 2019-02-27 Jonathan Wakely <jwakely@redhat.com>
4761
4762 PR libstdc++/89466
4763 * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
4764 stylesheet directories before check for xsltproc. Try to use
4765 xmlcatalog to find local stylesheet directory before trying hardcoded
4766 paths. Add path used by suse to hardcoded paths. Adjust xsltproc
4767 check to look for the same stylesheet as doc/Makefile.am uses. Don't
4768 use xsltproc if xmlcatalog fails to find a local stylesheet.
4769 * configure.ac: Check for xmlcatalog.
4770 * Makefile.in: Regenerate.
4771 * configure: Likewise.
4772 * doc/Makefile.in: Likewise.
4773 * include/Makefile.in: Likewise.
4774 * libsupc++/Makefile.in: Likewise.
4775 * po/Makefile.in: Likewise.
4776 * python/Makefile.in: Likewise.
4777 * src/Makefile.in: Likewise.
4778 * src/c++11/Makefile.in: Likewise.
4779 * src/c++17/Makefile.in: Likewise.
4780 * src/c++98/Makefile.in: Likewise.
4781 * src/filesystem/Makefile.in: Likewise.
4782 * testsuite/Makefile.in: Likewise.
4783
4784 2019-02-26 Jonathan Wakely <jwakely@redhat.com>
4785
4786 PR libstdc++/89477
4787 * include/bits/alloc_traits.h (_RequireNotAllocator): New helper for
4788 container deduction guides.
4789 * include/bits/hashtable.h (_RequireNotAllocatorOrIntegral): Likewise.
4790 * include/bits/stl_map.h (map): Use _RequireNotAllocator to constrain
4791 parameters in deduction guides.
4792 * include/bits/stl_multimap.h (multimap): Likewise.
4793 * include/bits/stl_multiset.h (multiset): Likewise.
4794 * include/bits/stl_queue.h (queue, priority_queue): Likewise.
4795 * include/bits/stl_set.h (set): Likewise.
4796 * include/bits/stl_stack.h (stack): Likewise.
4797 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
4798 use _RequireNotAllocator and _RequireNotAllocatorOrIntegral to
4799 constrain parameters in deduction guides.
4800 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
4801 Likewise.
4802 * testsuite/23_containers/map/cons/deduction.cc: Test additional
4803 deduction cases.
4804 * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
4805 * testsuite/23_containers/set/cons/deduction.cc: Likewise.
4806 * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
4807 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
4808 Likewise.
4809 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
4810 Likewise.
4811 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
4812
4813 PR libstdc++/89416
4814 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Change
4815 to class template and partial specialization using void_t.
4816 (__is_copy_insertable, __is_move_insertable): Adjust base class.
4817
4818 2019-02-24 Jonathan Wakely <jwakely@redhat.com>
4819
4820 PR libstdc++/89416
4821 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
4822 copy and move members public.
4823
4824 2019-02-23 Jonathan Wakely <jwakely@redhat.com>
4825
4826 * include/std/type_traits (__underlying_type_impl): New helper to
4827 make underlying_type SFINAE-friendly.
4828 (underlying_type): Derive from __underlying_type_impl.
4829 * testsuite/20_util/underlying_type/requirements/typedefs-3.cc: New
4830 test.
4831
4832 PR libstdc++/89446
4833 * include/bits/char_traits.h (__constant_char_array): Check index is
4834 in range before dereferencing.
4835 (char_traits<char>::compare, char_traits<char>::find)
4836 (char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
4837 immediately if n is zero.
4838 (char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
4839 Remove workarounds for PR 67026.
4840 * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
4841 New test.
4842 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
4843 New test.
4844
4845 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
4846
4847 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
4848 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
4849
4850 2019-02-22 Jakub Jelinek <jakub@redhat.com>
4851
4852 PR libstdc++/89402
4853 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
4854 type to std::size_t and argument to type to long double.
4855
4856 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
4857
4858 * configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
4859 * config/abi/post/sparc64-linux-gnu: New directory.
4860 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
4861 * config/abi/post/sparc64-linux-gnu/32: New directory.
4862 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.
4863
4864 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
4865
4866 * testsuite/29_atomics/headers/atomic/types_std_c++20.cc: New test.
4867 * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: New
4868 test.
4869
4870 2019-02-22 Tom Honermann <tom@honermann.net>
4871
4872 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
4873 printers for u8string and u8string_view.
4874
4875 2019-02-22 Tom Honermann <tom@honermann.net>
4876
4877 * testsuite/18_support/byte/ops.cc: Validate
4878 std::to_integer<char8_t>, std::to_integer<char16_t>, and
4879 std::to_integer<char32_t>.
4880 * testsuite/18_support/numeric_limits/dr559.cc: Validate
4881 std::numeric_limits<char8_t>.
4882 * testsuite/18_support/numeric_limits/lowest.cc: Validate
4883 std::numeric_limits<char8_t>::lowest().
4884 * testsuite/18_support/numeric_limits/max_digits10.cc: Validate
4885 std::numeric_limits<char8_t>::max_digits10.
4886 * testsuite/18_support/type_info/fundamental.cc: Validate
4887 typeinfo for char8_t.
4888 * testsuite/20_util/from_chars/1_c++20_neg.cc: New test, validating
4889 std::from_chars with char8_t.
4890 * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
4891 Validate explicit instantiation of std::hash<char8_t>.
4892 * testsuite/20_util/is_integral/value.cc: Validate
4893 std::is_integral<char8_t>.
4894 * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
4895 Validate std::make_signed<char8_t>.
4896 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
4897 Validate u8string construction from char8_t sources.
4898 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Validate
4899 std::pmr::u8string.
4900 * testsuite/21_strings/basic_string_view/operations/compare/
4901 char/70483.cc: Validate substr operations on u8string_view.
4902 * testsuite/21_strings/basic_string_view/typedefs.cc: Validate that
4903 the u8string_view typedef is defined.
4904 * testsuite/21_strings/char_traits/requirements/
4905 constexpr_functions.cc: Validate char_traits<char8_t> constexpr
4906 member functions.
4907 * testsuite/21_strings/char_traits/requirements/
4908 constexpr_functions_c++17.cc: Validate char_traits<char8_t> C++17
4909 constexpr member functions.
4910 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Validate
4911 that the u8string typedef is defined.
4912 * testsuite/22_locale/locale/cons/unicode.cc: Validate the presence
4913 of the std::codecvt<char16_t, char8_t, std::mbstate_t> and
4914 std::codecvt<char32_t, char8_t, std::mbstate_t> facets.
4915 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Update line
4916 numbers.
4917 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
4918 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
4919 Likewise.
4920 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
4921 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
4922 Validate std::atomic<char8_t>::is_always_lock_free
4923 * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
4924 Update line numbers.
4925 * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
4926 Likewise.
4927 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
4928 Likewise.
4929 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
4930 Validate std::experimental::pmr::u8string.
4931 * testsuite/experimental/string_view/typedefs.cc: Validate that the
4932 u8string_view typedef is defined.
4933 * testsuite/util/testsuite_common_types.h: Add char8_t, char16_t and
4934 char32_t to the typelists.
4935
4936 2019-02-22 Tom Honermann <tom@honermann.net>
4937
4938 * include/ext/typelist.h: Constrain a partial specialization of
4939 typelist::detail::append_ to only match chain<T1,T2>.
4940
4941 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
4942
4943 PR libstdc++/89416
4944 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace
4945 class template with class. Replace move and copy member types with
4946 member alias templates, so they are only instantiated when needed.
4947 (__is_copy_insertable, __is_move_insertable): Adjust base class.
4948 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable
4949 test for C++11/14/17 as well.
4950 * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New
4951 test.
4952
4953 2019-02-20 Jakub Jelinek <jakub@redhat.com>
4954
4955 PR libstdc++/89402
4956 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
4957 _GLIBCXX_PURE to the alias declaration.
4958
4959 2019-02-19 Jonathan Wakely <jwakely@redhat.com>
4960
4961 * testsuite/21_strings/basic_string/literals/types.cc
4962 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
4963 * testsuite/21_strings/basic_string/literals/values.cc
4964 [_GLIBCXX_USE_CHAR8_T]: Likewise.
4965 * testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
4966 potentially having different type.
4967 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
4968 * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
4969 to char.
4970 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
4971 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
4972 * testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
4973 string literals only using basic character set.
4974 * testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
4975 u8 literals to char.
4976 * testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
4977 Test ATOMIC_CHAR8_T_LOCK_FREE.
4978 Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
4979 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
4980 [_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
4981 * testsuite/experimental/string_view/literals/types.cc
4982 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
4983 literal.
4984 * testsuite/experimental/string_view/literals/values.cc
4985 [_GLIBCXX_USE_CHAR8_T]: Likewise.
4986
4987 2019-02-19 Tom Honermann <tom@honermann.net>
4988
4989 * testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
4990 from char16_32_t.cc; validates numeric_limits<char8_t>.
4991 * testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
4992 test cloned from types.cc; validates operator""s for char8_t
4993 returns u8string.
4994 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
4995 test cloned from values.cc; validates construction and comparison
4996 of u8string values.
4997 * testsuite/21_strings/basic_string/requirements/
4998 /explicit_instantiation/char8_t/1.cc: New test cloned from
4999 char16_t/1.cc; validates explicit instantiation of
5000 basic_string<char8_t>.
5001 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
5002 New test cloned from types.cc; validates operator""sv for char8_t
5003 returns u8string_view.
5004 * testsuite/21_strings/basic_string_view/literals/
5005 values-char8_t.cc: New test cloned from values.cc; validates
5006 construction and comparison of u8string_view values.
5007 * testsuite/21_strings/basic_string_view/requirements/
5008 explicit_instantiation/char8_t/1.cc: New test cloned from
5009 char16_t/1.cc; validates explicit instantiation of
5010 basic_string_view<char8_t>.
5011 * testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
5012 New test cloned from char16_t/65049.cc; validates that
5013 char_traits<char8_t> is not vulnerable to the concerns in PR65049.
5014 * testsuite/21_strings/char_traits/requirements/char8_t/
5015 typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
5016 that char_traits<char8_t> member typedefs are present and correct.
5017 * testsuite/21_strings/char_traits/requirements/
5018 explicit_instantiation/char8_t/1.cc: New test cloned from
5019 char16_t/1.cc; validates explicit instantiation of
5020 char_traits<char8_t>.
5021 * testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
5022 from char16_t.cc: validates
5023 codecvt<char16_t, char8_t, mbstate_t>.
5024 * testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
5025 from char32_t.cc: validates
5026 codecvt<char32_t, char8_t, mbstate_t>.
5027 * testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
5028 utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
5029 codecvt<char32_t, char8_t, std::mbstate_t>.
5030 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
5031 test cloned from string.cc; validates filesystem::path construction
5032 from char8_t input.
5033 * testsuite/experimental/feat-char8_t.cc: New test; validates that
5034 the __cpp_lib_char8_t feature test macro is defined with the
5035 correct value.
5036 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
5037 New test cloned from string.cc; validates filesystem::path
5038 construction from char8_t input.
5039 * testsuite/experimental/string_view/literals/types-char8_t.cc: New
5040 test cloned from types.cc; validates operator""sv for char8_t
5041 returns u8string_view.
5042 * testsuite/experimental/string_view/literals/values-char8_t.cc:
5043 New test cloned from values.cc; validates construction and
5044 comparison of u8string_view values.
5045 * testsuite/experimental/string_view/requirements/
5046 explicit_instantiation/char8_t/1.cc: New test cloned from
5047 char16_t/1.cc; validates explicit instantiation of
5048 basic_string_view<char8_t>.
5049 * testsuite/ext/char8_t/atomic-1.cc: New test; validates that
5050 ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
5051 enabled.
5052
5053 2019-02-19 Tom Honermann <tom@honermann.net>
5054
5055 P0482R5 char8_t: Standard library support
5056 * config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
5057 typeinfo symbols for char8_t.
5058 * config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
5059 (GLIBCXX_3.4.26): Add symbols for specializations of
5060 numeric_limits and codecvt that involve char8_t.
5061 (CXXABI_1.3.12): Add typeinfo symbols for char8_t.
5062 * include/bits/atomic_base.h: Add atomic_char8_t.
5063 * include/bits/basic_string.h: Add std::hash<u8string> and
5064 operator""s(const char8_t*, size_t).
5065 * include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
5066 __cpp_lib_char8_t.
5067 * include/bits/char_traits.h: Add char_traits<char8_t>.
5068 * include/bits/codecvt.h: Add
5069 codecvt<char16_t, char8_t, mbstate_t>,
5070 codecvt<char32_t, char8_t, mbstate_t>,
5071 codecvt_byname<char16_t, char8_t, mbstate_t>, and
5072 codecvt_byname<char32_t, char8_t, mbstate_t>.
5073 * include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
5074 recognize char8_t as an integral type.
5075 * include/bits/fs_path.h: (path::__is_encoded_char): Recognize
5076 char8_t.
5077 (path::u8string): Return std::u8string when char8_t support is
5078 enabled.
5079 (path::generic_u8string): Likewise.
5080 (path::_S_convert): Handle conversion from char8_t input.
5081 (path::_S_str_convert): Likewise.
5082 * include/bits/functional_hash.h: Add hash<char8_t>.
5083 * include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
5084 char8_t.
5085 * include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
5086 for new char8_t specializations.
5087 * include/bits/localefwd.h: Add missing declarations of
5088 codecvt<char16_t, char, mbstate_t> and
5089 codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
5090 codecvt<char16_t, char8_t, mbstate_t> and
5091 codecvt<char32_t, char8_t, mbstate_t>.
5092 * include/bits/postypes.h: Add u8streampos
5093 * include/bits/stringfwd.h: Add declarations of
5094 char_traits<char8_t> and u8string.
5095 * include/c_global/cstddef: Add __byte_operand<char8_t>.
5096 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
5097 Recognize char8_t.
5098 (path::u8string): Return std::u8string when char8_t support is
5099 enabled.
5100 (path::generic_u8string): Likewise.
5101 (path::_S_convert): Handle conversion from char8_t input.
5102 (path::_S_str_convert): Likewise.
5103 * include/experimental/string: Add u8string.
5104 * include/experimental/string_view: Add u8string_view,
5105 hash<experimental::u8string_view>, and
5106 operator""sv(const char8_t*, size_t).
5107 * include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
5108 * include/std/charconv (__is_int_to_chars_type): Recognize char8_t
5109 as a character type.
5110 * include/std/limits: Add numeric_limits<char8_t>.
5111 * include/std/string_view: Add u8string_view,
5112 hash<experimental::u8string_view>, and
5113 operator""sv(const char8_t*, size_t).
5114 * include/std/type_traits: Add __is_integral_helper<char8_t>,
5115 __make_unsigned<char8_t>, and __make_signed<char8_t>.
5116 * libsupc++/atomic_lockfree_defines.h: Define
5117 ATOMIC_CHAR8_T_LOCK_FREE.
5118 * src/c++11/Makefile.am: Compile with -fchar8_t when compiling
5119 codecvt.cc and limits.cc so that char8_t specializations of
5120 numeric_limits and codecvt and emitted.
5121 * src/c++11/Makefile.in: Likewise.
5122 * src/c++11/codecvt.cc: Define members of
5123 codecvt<char16_t, char8_t, mbstate_t>,
5124 codecvt<char32_t, char8_t, mbstate_t>,
5125 codecvt_byname<char16_t, char8_t, mbstate_t>, and
5126 codecvt_byname<char32_t, char8_t, mbstate_t>.
5127 * src/c++11/limits.cc: Define members of
5128 numeric_limits<char8_t>.
5129 * src/c++98/Makefile.am: Compile with -fchar8_t when compiling
5130 locale_init.cc and localename.cc.
5131 * src/c++98/Makefile.in: Likewise.
5132 * src/c++98/locale_init.cc: Add initialization for the
5133 codecvt<char16_t, char8_t, mbstate_t> and
5134 codecvt<char32_t, char8_t, mbstate_t> facets.
5135 * src/c++98/localename.cc: Likewise.
5136 * testsuite/util/testsuite_abi.cc: Validate ABI bump.
5137
5138 2019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
5139
5140 * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
5141 * 27_io/filesystem/operations/resize_file.cc: Likewise.
5142 * 27_io/filesystem/path/generation/normal2.cc: Likewise.
5143
5144 2019-02-14 Jonathan Wakely <jwakely@redhat.com>
5145
5146 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
5147 * doc/html/*: Regenerate.
5148
5149 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
5150 * doc/html/*: Regenerate.
5151
5152 * doc/xml/manual/intro.xml: Document LWG 2586 status.
5153 * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
5154 allocator type in is_constructible checks.
5155 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
5156 * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
5157 * testsuite/20_util/tuple/cons/allocators.cc: Add test using
5158 problematic type from LWG 2586 discussion.
5159 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
5160 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
5161
5162 * configure.ac: Check for C11 timespec_get function.
5163 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
5164 (openbsd): Likewise
5165 * config.h.in: Regenerate.
5166 * configure: Regenerate.
5167 * include/c_global/ctime (timespec, timespec_get): Add to namespace
5168 std for C++17 and up.
5169
5170 * doc/xml/manual/intro.xml: Document LWG 2537 status.
5171 * include/bits/stl_queue.h
5172 (priority_queue(const Compare&, const Container&, const Alloc&))
5173 (priority_queue(const Compare&, Container&&, const Alloc&)): Call
5174 make_heap.
5175 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
5176
5177 * doc/xml/manual/intro.xml: Document LWG 2566 status.
5178 * include/bits/stl_queue.h (queue, priority_queue): Add static
5179 assertions to enforce LWG 2566 requirement on value_type.
5180 * include/bits/stl_stack.h (stack): Likewise.
5181
5182 PR middle-end/89303
5183 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
5184
5185 * doc/xml/manual/intro.xml: Document LWG 2735 status.
5186 * include/bits/std_abs.h: Add comment about LWG 2735.
5187 * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
5188
5189 2019-02-13 Jonathan Wakely <jwakely@redhat.com>
5190
5191 PR libstdc++/89345
5192 * include/std/version [__cpp_impl_destroying_delete]
5193 (__cpp_lib_destroying_delete): Only define for C++2a and later.
5194 * libsupc++/new [__cpp_impl_destroying_delete]
5195 (__cpp_lib_destroying_delete): Likewise.
5196 (destroying_delete_t, destroying_delete): Likewise, but define even
5197 when __cpp_impl_destroying_delete is not defined.
5198 * testsuite/18_support/destroying_delete.cc: New test.
5199
5200 2019-02-11 Jonathan Wakely <jwakely@redhat.com>
5201
5202 PR libstdc++/89023
5203 * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
5204 * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
5205 * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
5206 * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
5207
5208 2019-02-09 Jonathan Wakely <jwakely@redhat.com>
5209
5210 PR libstdc++/71044
5211 * include/bits/fs_path.h (path::has_root_name)
5212 (path::has_root_directory, path::has_root_path)
5213 (path::has_relative_path, path::has_parent_path)
5214 (path::has_filename, path::has_stem, path::has_extension)
5215 (path::is_absolute, path::is_relative, path::_M_find_extension): Add
5216 noexcept.
5217 * src/c++17/fs_path.cc (path::has_root_name)
5218 (path::has_root_directory, path::has_root_path)
5219 (path::has_relative_path, path::has_parent_path)
5220 (path::has_filename, path::_M_find_extension): Add noexcept.
5221
5222 2019-02-06 Jonathan Wakely <jwakely@redhat.com>
5223
5224 PR libstdc++/89102 (partial)
5225 * include/std/type_traits (common_type<>): Define.
5226 (common_type<T>): Derive from common_type<T, T>.
5227 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
5228 Test zero-length template argument list.
5229 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
5230 Test additional single argument cases.
5231 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
5232 Adjust expected error.
5233
5234 2019-02-05 Jonathan Wakely <jwakely@redhat.com>
5235
5236 PR libstdc++/89128
5237 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
5238 guides.
5239 * include/bits/stl_stack.h (stack): Likewise.
5240 * testsuite/23_containers/priority_queue/deduction.cc: New test.
5241 * testsuite/23_containers/queue/deduction.cc: New test.
5242 * testsuite/23_containers/stack/deduction.cc: New test.
5243
5244 PR libstdc++/89194
5245 * include/std/type_traits (__is_convertible_helper)
5246 (__is_convertible_helper<_From, _To, false>): Revert changes to
5247 support is_nothrow_convertible.
5248 (__is_nt_convertible_helper): New helper.
5249 (is_nothrow_convertible): Use __is_nt_convertible_helper.
5250
5251 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
5252 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
5253
5254 PR libstdc++/89130
5255 * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
5256 __is_alloc_insertable_impl. Replace single type member with two
5257 members, one for each of copy and move insertable.
5258 (__is_move_insertable): New trait for internal use.
5259 * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
5260 (vector::_S_nothrow_relocate(true_type)): New functions to
5261 conditionally check if __relocate_a can throw.
5262 (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
5263 on __is_move_insertable.
5264 (vector::_S_do_relocate): New overloaded functions to conditionally
5265 call __relocate_a.
5266 (vector::_S_relocate): New function that dispatches to _S_do_relocate
5267 based on _S_use_relocate.
5268 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
5269 (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
5270 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
5271
5272 PR libstdc++/89090
5273 * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
5274 parameter unnamed. Add message to static assertion.
5275 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
5276 (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
5277 in C++11 code.
5278
5279 2019-02-05 Marc Glisse <marc.glisse@inria.fr>
5280
5281 PR libstdc++/87106
5282 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
5283 Rename...
5284 (__is_bitwise_relocatable): ... to this.
5285 (__relocate_a_1): Adapt.
5286 * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
5287 (__is_bitwise_relocatable): ... to this.
5288
5289 2019-01-30 Jonathan Wakely <jwakely@redhat.com>
5290
5291 PR libstdc++/89117
5292 * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
5293 final component as well as from _M_pathname. Append the dot using
5294 operator+= instead of only to _M_pathname.
5295 (path::_M_find_extension): Reformat slightly.
5296 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
5297 Add more test cases.
5298
5299 2019-01-30 Ulrich Drepper <drepper@redhat.com>
5300
5301 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
5302
5303 2019-01-29 Jonathan Wakely <jwakely@redhat.com>
5304
5305 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
5306 constexpr specifiers from arg and proj.
5307
5308 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
5309 __shared_ptr instantiations used by gcc4-compatible ABI.
5310
5311 * include/experimental/forward_list (experimental::erase): Qualify
5312 call to erase_if.
5313 * include/experimental/list (experimental::erase): Likewise.
5314 * include/std/forward_list (std::erase): Likewise.
5315 * include/std/list (std::erase): Likewise.
5316
5317 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
5318 C++2a.
5319 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
5320 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
5321 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
5322 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
5323 * testsuite/ext/array_allocator/26875.cc: Likewise.
5324 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
5325 * testsuite/util/replacement_memory_operators.h: Likewise.
5326 * testsuite/util/testsuite_allocator.h: Likewise.
5327
5328 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
5329 normal mode vector, even for debug mode.
5330 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
5331 Define alias template for normal mode vector.
5332
5333 2019-01-28 Jonathan Wakely <jwakely@redhat.com>
5334
5335 PR libstdc++/68737
5336 * config/locale/generic/c_locale.h (__convert_from_v)
5337 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
5338 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
5339 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
5340 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
5341
5342 2019-01-24 Jonathan Wakely <jwakely@redhat.com>
5343
5344 PR libstdc++/88840
5345 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
5346 data member with static member function _S_use_relocate().
5347 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
5348 (vector::_M_default_append): Use _S_use_relocate() instead of
5349 __use_relocate.
5350
5351 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
5352 sign of results.
5353
5354 2019-01-22 Jonathan Wakely <jwakely@redhat.com>
5355
5356 PR libstdc++/88740
5357 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
5358 write to stderr instead of using printf.
5359
5360 2019-01-21 Jakub Jelinek <jakub@redhat.com>
5361
5362 PR libstdc++/86590
5363 * include/bits/char_traits.h (__constant_string_p,
5364 __constant_char_array_p): Use __builtin_is_constant_evaluated if
5365 available.
5366
5367 2019-01-20 Ulrich Drepper <drepper@redhat.com>
5368
5369 Implement C++20 P0600r1.
5370 * include/backward/hash_map: Add nodiscard attribute to empty.
5371 * include/backward/hash_set: Likewise.
5372 * backward/hashtable.h: Likewise.
5373 * include/bits/basic_string.h: Likewise.
5374 * include/bits/forward_list.h: Likewise.
5375 * include/bits/hashtable.h: Likewise.
5376 * include/bits/regex.h: Likewise.
5377 * include/bits/stl_deque.h: Likewise.
5378 * include/bits/stl_list.h: Likewise.
5379 * include/bits/stl_map.h: Likewise.
5380 * include/bits/stl_multimap.h: Likewise.
5381 * include/bits/stl_multiset.h: Likewise.
5382 * include/bits/stl_queue.h: Likewise.
5383 * include/bits/stl_set.h: Likewise.
5384 * include/bits/stl_stack.h: Likewise.
5385 * include/bits/stl_tree.h: Likewise.
5386 * include/bits/stl_vector.h: Likewise.
5387 * include/bits/unordered_map.h: Likewise.
5388 * include/bits/unordered_set.h: Likewise.
5389 * include/debug/array: Likewise.
5390 * include/experimental/any: Likewise.
5391 * include/experimental/bits/fs_path.h: Likewise.
5392 * include/experimental/internet: Likewise.
5393 * include/experimental/string_view: Likewise.
5394 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
5395 Likewise.
5396 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
5397 Likewise.
5398 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
5399 Likewise.
5400 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
5401 Likewise.
5402 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
5403 Likewise.
5404 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
5405 Likewise.
5406 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
5407 Likewise.
5408 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
5409 Likewise.
5410 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
5411 info_fn_imps.hpp: Likewise.
5412 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
5413 left_child_next_sibling_heap_.hpp: Likewise.
5414 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
5415 Likewise.
5416 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
5417 Likewise.
5418 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
5419 Likewise.
5420 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
5421 Likewise.
5422 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
5423 Likewise.
5424 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
5425 Likewise.
5426 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
5427 Likewise.
5428 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
5429 * include/ext/pb_ds/trie_policy.hpp: Likewise.
5430 * include/ext/rope: Likewise.
5431 * include/ext/slist: Likewise.
5432 * include/ext/vstring.h: Likewise.
5433 * include/profile/array: Likewise.
5434 * include/std/array: Likewise.
5435 * include/tr1/array: Likewise.
5436 * include/tr1/hashtable.h: Likewise.
5437 * include/tr1/regex: Likewise.
5438 * include/tr2/dynamic_bitset: Likewise.
5439 * include/bits/alloc_traits.h: Add nodiscard attribute to
5440 allocate.
5441 * include/experimental/memory_resource: Likewise.
5442 * include/ext/alloc_traits.h: Likewise.
5443 * include/ext/array_allocator.h: Likewise.
5444 * include/ext/bitmap_allocator.h: Likewise.
5445 * include/ext/debug_allocator.h: Likewise.
5446 * include/ext/extptr_allocator.h: Likewise.
5447 * include/ext/mt_allocator.h: Likewise.
5448 * include/ext/new_allocator.h: Likewise.
5449 * include/ext/pool_allocator.h: Likewise.
5450 * include/ext/throw_allocator.h: Likewise.
5451 * include/std/scoped_allocator: Likewise.
5452 * libsupc++/eh_alloc.cc: Likewise.
5453 * include/std/future: Add nodiscard attribute to async.
5454 * libsupc++/new: Add nodiscard attribute to new.
5455
5456 2019-01-18 Jonathan Wakely <jwakely@redhat.com>
5457
5458 PR libstdc++/87514
5459 PR libstdc++/87520
5460 PR libstdc++/88782
5461 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
5462 * include/bits/shared_ptr.h
5463 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
5464 (allocate_shared): Change to use new tag type.
5465 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
5466 Declare new member function.
5467 (_Sp_alloc_shared_tag): Define new type.
5468 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
5469 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
5470 _Sp_make_shared_tag::_S_eq to check type_info.
5471 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
5472 Constrain to prevent being called with _Sp_alloc_shared_tag.
5473 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
5474 Replace constructor with ...
5475 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
5476 reference parameter so address of the new object can be returned to
5477 the caller. Obtain the allocator from the tag type.
5478 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
5479 constructor with ...
5480 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
5481 to the __shared_count constructor.
5482 (__allocate_shared): Change to use new tag type.
5483 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
5484
5485 2019-01-17 Jonathan Wakely <jwakely@redhat.com>
5486
5487 * src/c++17/fs_ops.cc
5488 (equivalent(const path&, const path&, error_code&))
5489 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
5490 compare files instead of relying on incomplete info returned by stat.
5491
5492 PR libstdc++/88884
5493 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
5494 if the path is already absolute.
5495 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
5496 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
5497
5498 PR libstdc++/88881
5499 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
5500 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
5501 of filesystem::exists.
5502 (create_directories(const path&, error_code&)): Add assertions.
5503 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
5504 Add workaround for bug in _wstat for paths with trailing slash.
5505 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
5506 for expected behaviour on mingw.
5507 * testsuite/experimental/filesystem/operations/create_directories.cc:
5508 Likewise.
5509 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
5510 "TMP" instead of "TMPDIR" and clean environment before each test. Do
5511 not test permissions on mingw targets.
5512
5513 2019-01-16 Jonathan Wakely <jwakely@redhat.com>
5514
5515 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
5516 constructors and open members taking wide strings. Fix patterns for
5517 filesystem::path members to match wstring_view parameters. Add
5518 exports for shared_ptr members used by directory iterators.
5519 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
5520 error code parameter if the file doesn't exist.
5521 * src/filesystem/ops.cc (remove(const path&, error_code&)):
5522 Likewise.
5523 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
5524 values for mingw targets, where "/" is not an absolute path. Do not
5525 test symlinks on mingw targets.
5526 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
5527 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
5528 on mingw targets.
5529 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
5530 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
5531 that each component of the path is created.
5532 * testsuite/experimental/filesystem/operations/create_directories.cc:
5533 Likewise.
5534 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
5535 permissions on mingw targets.
5536 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
5537 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
5538 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
5539 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
5540 mingw targets.
5541 * testsuite/experimental/filesystem/operations/permissions.cc:
5542 Likewise.
5543 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
5544 symlinks or permissions on mingw targets.
5545 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
5546 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
5547 symlinks on mingw targets.
5548 * testsuite/experimental/filesystem/operations/remove_all.cc:
5549 Likewise.
5550 * testsuite/27_io/filesystem/operations/status.cc: Do not test
5551 permissions on mingw targets.
5552 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
5553 test symlinks on mingw targets.
5554 * testsuite/experimental/filesystem/operations/space.cc: Fix test
5555 for mingw targets.
5556
5557 2019-02-14 Ulrich Drepper <drepper@redhat.com>
5558
5559 PR libstdc++/88738
5560 Warn about unused comparisons of shared_ptr/unique_ptr
5561 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
5562 * include/bits/shared_ptr.h: Use it for operator ==, !=,
5563 <, <=, >, >= for shared_ptr.
5564 * include/bits/unique_ptr.h: Likewise for unique_ptr.
5565
5566 2019-01-15 Jonathan Wakely <jwakely@redhat.com>
5567
5568 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
5569 as 201611L, because P0497R0 changes are supported.
5570 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
5571
5572 * include/bits/erase_if.h [__cplusplus > 201703L]
5573 (__cpp_lib_erase_if): Only define for C++2a.
5574 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
5575 (__cpp_lib_null_iterators): Define.
5576 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
5577 (__cpp_lib_null_iterators): Define.
5578 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
5579
5580 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
5581 status.
5582 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
5583 Define.
5584 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
5585 changes are supported.
5586 * include/std/optional (__cpp_lib_optional): Likewise.
5587 * include/std/variant (__cpp_lib_variant): Likewise.
5588 * include/std/version [!__STRICT_ANSI__]
5589 (__cpp_lib_uncaught_exceptions): Define as long integer.
5590 [__cplusplus >= 201703L] (__cpp_lib_any)
5591 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
5592 (__cpp_lib_variant): Define for C++17.
5593 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
5594 as long integer.
5595 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
5596 integer.
5597
5598 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
5599
5600 2019-01-12 Jonathan Wakely <jwakely@redhat.com>
5601
5602 PR libstdc++/88811
5603 PR libstdc++/83306
5604 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
5605 before second path.
5606 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
5607 test.
5608
5609 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
5610
5611 * doc/xml/manual/intro.xml: Include new section.
5612 * doc/xml/manual/status_cxx2017.xml: Document more
5613 implementation-defined properties of the library.
5614 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
5615 * doc/html/*: Regenerate.
5616
5617 * include/bits/refwrap.h [__cplusplus > 201703L]
5618 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
5619 (_Reference_wrapper_base_memfun): Do not define for C++2a.
5620 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
5621 for C++2a.
5622 (reference_wrapper::operator()): Add static assertion.
5623 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
5624
5625 * include/std/chrono (duration_values::zero(), duration_values::min())
5626 (duration_values::max()): Add noexcept.
5627 (duration::zero(), duration::min(), duration::max()): Likewise.
5628 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
5629 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
5630 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
5631
5632 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
5633
5634 2019-01-11 Jakub Jelinek <jakub@redhat.com>
5635
5636 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
5637 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
5638
5639 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
5640
5641 PR libstdc++/88802
5642 * include/bits/functional_hash.h (hash<nullptr_t>): Define
5643 specialization for C++17 (P0513R0, LWG 2817).
5644 * testsuite/20_util/hash/nullptr.cc: New test.
5645
5646 PR libstdc++/88125
5647 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
5648 pattern for std::basic_stringbuf::str().
5649
5650 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
5651 basic_ostream::operator<< patterns.
5652
5653 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
5654
5655 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
5656 test failures on targets with 32-bit time_t.
5657
5658 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
5659 * include/std/deque: Likewise.
5660 * include/std/forward_list: Likewise.
5661 * include/std/list: Likewise.
5662 * include/std/string: Likewise.
5663 * include/std/vector: Likewise.
5664 * include/std/version: Likewise.
5665 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
5666 * testsuite/23_containers/deque/erasure.cc: Likewise.
5667 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
5668 * testsuite/23_containers/list/erasure.cc: Likewise.
5669 * testsuite/23_containers/map/erasure.cc: Likewise.
5670 * testsuite/23_containers/set/erasure.cc: Likewise.
5671 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
5672 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
5673 * testsuite/23_containers/vector/erasure.cc: Likewise.
5674
5675 * include/experimental/internet [AI_NUMERICSERV]
5676 (resolver_base::numeric_service): Define conditionally.
5677 * testsuite/experimental/net/internet/resolver/base.cc: Test it
5678 conditionally.
5679 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
5680 Likewise.
5681
5682 2019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
5683 Jonathan Wakely <jwakely@redhat.com>
5684
5685 Implement LWG 2221
5686 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
5687 (GLIBCXX_3.4.26): Add new exports.
5688 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
5689 correct list of sources.
5690 * include/Makefile.in: Regenerate.
5691 * include/std/ostream (operator<<(nullptr_t)): New member function.
5692 * src/c++17/ostream-inst.cc: New file.
5693 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
5694 test.
5695
5696 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
5697
5698 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
5699 of the source file containing the caller.
5700 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
5701 directories created by test.
5702 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
5703 Likewise.
5704 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
5705 Likewise.
5706 * testsuite/experimental/filesystem/iterators/
5707 recursive_directory_iterator.cc: Likewise.
5708
5709 2019-01-10 Jakub Jelinek <jakub@redhat.com>
5710
5711 PR tree-optimization/88775
5712 * include/bits/stl_function.h (greater<_Tp*>::operator(),
5713 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
5714 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
5715 instead of __builtin_constant_p if available. Don't bother with
5716 the pointer comparison in C++11 and earlier.
5717
5718 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
5719
5720 PR other/16615
5721
5722 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
5723 with "cannot".
5724
5725 2019-01-09 Jonathan Wakely <jwakely@redhat.com>
5726
5727 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
5728 for filesystem::path. Give variables more distinctive names.
5729
5730 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
5731 member function to perform non-trivial assignment.
5732 (_Optional_payload_base::_M_move_assign): Likewise.
5733 (_Optional_payload<T, true, false, true>::operator=)
5734 (_Optional_payload<T, true, true, false>::operator=)
5735 (_Optional_payload<T, true, false, false>::operator=): Call
5736 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
5737
5738 PR libstdc++/88204
5739 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
5740 test std::complex<long double> if long double format is IBM128.
5741 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
5742 Likewise.
5743
5744 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
5745
5746 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
5747 for old std::unique_ptr layout.
5748 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
5749 to become valueless. Add filesystem::path tests.
5750
5751 PR libstdc++/87855
5752 * include/std/optional (_Optional_payload_base): New class template
5753 for common code hoisted from _Optional_payload specializations. Use
5754 a template for the union, to allow a partial specialization for
5755 types with non-trivial destructors. Add constructors for in-place
5756 initialization to the union.
5757 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
5758 to perform non-trivial copy construction, instead of relying on
5759 non-standard copy elision in a delegating constructor.
5760 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
5761 non-trivial move construction.
5762 (_Optional_payload): Derive from _Optional_payload_base and use it
5763 for everything except the non-trivial assignment operators, which are
5764 defined as needed.
5765 (_Optional_payload<false, C, M>): Derive from the specialization
5766 _Optional_payload<true, false, false> and add a destructor.
5767 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
5768 Forward to corresponding members of _Optional_payload.
5769 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
5770 Hoist common members from _Optional_base.
5771 (_Optional_base): Make all members and base class public.
5772 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
5773 _Optional_base_impl.
5774 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
5775 support for new std::optional layout.
5776 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
5777
5778 PR libstdc++/88066
5779 * include/bits/locale_conv.h: Use <> for includes not "".
5780 * include/ext/random: Likewise.
5781 * include/ext/vstring.h: Likewise.
5782
5783 2019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5784
5785 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
5786 (GLIBCXX_3.4.21): Likewise.
5787
5788 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
5789
5790 PR libstdc++/88749
5791 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
5792 to match the one that controls whether utimbuf and utime are declared.
5793
5794 2019-01-07 Jonathan Wakely <jwakely@redhat.com>
5795
5796 PR libstdc++/87787
5797 * include/bits/char_traits.h (char_traits::move): Do not pass null
5798 pointers to memmove.
5799 * include/bits/locale_facets.h
5800 (ctype<char>::widen(const char*, const char*, char*)): Do not
5801 pass null pointers to memcpy.
5802 (ctype<char>::narrow(const char*, const char*, char, char*)):
5803 Likewise.
5804 (ctype<char>::do_widen(const char*, const char*, char*)):
5805 Likewise.
5806 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
5807 Likewise.
5808
5809 * doc/xml/manual/spine.xml: Update copyright years.
5810 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
5811 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
5812 for C++17 filesystem library.
5813 * doc/html/*: Regenerate.
5814
5815 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
5816 * config.h.in: Regenerate.
5817 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
5818 alphabetically and add missing entries for copy_symlink,
5819 hard_link_count, rename, and resize_file.
5820 * configure: Regenerate.
5821 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
5822 used unconditionally.
5823 * src/filesystem/ops-common.h (__gnu_posix::truncate)
5824 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
5825 supports truncating to zero length.
5826 * testsuite/27_io/filesystem/operations/all.cc: New test.
5827 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
5828
5829 2019-01-06 Jonathan Wakely <jwakely@redhat.com>
5830
5831 PR libstdc++/86756
5832 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
5833 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
5834 * config.h.in: Regenerate.
5835 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
5836 remaining std::filesystem types and functions.
5837 * configure: Regenerate.
5838 * src/c++17/Makefile.am: Add C++17 filesystem sources.
5839 * src/c++17/Makefile.in: Regenerate.
5840 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
5841 here, and change name of included file.
5842 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
5843 here, and change name of included file.
5844 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
5845 path to dir-common.h.
5846 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
5847 path to ops-common.h. Disable -Wunused-parameter warnings.
5848 (internal_file_clock): Define unconditionally.
5849 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
5850 define.
5851 (do_copy_file, do_space): Move definitions to ops.common.h.
5852 (copy, file_size, hard_link_count, last_write_time, space): Only
5853 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
5854 report an error.
5855 (last_write_time, read_symlink): Remove unused attributes from
5856 parameters.
5857 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
5858 * src/filesystem/Makefile.in: Regenerate.
5859 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
5860 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
5861 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
5862 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
5863 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
5864 dummy types and functions instead of using #error.
5865 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
5866 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
5867 in terms of stat.
5868 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
5869 (do_copy_file, do_space): Move definitions here from std-ops.cc.
5870 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
5871 to account for new namespace.
5872 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
5873 -lstdc++fs from dg-options.
5874 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
5875 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
5876 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
5877 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
5878 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
5879 Likewise.
5880 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
5881 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
5882 Likewise.
5883 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
5884 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
5885 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
5886 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
5887 * testsuite/27_io/filesystem/operations/create_directories.cc:
5888 Likewise.
5889 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
5890 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
5891 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
5892 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
5893 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
5894 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
5895 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
5896 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
5897 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
5898 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
5899 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
5900 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
5901 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
5902 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
5903 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
5904 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
5905 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
5906 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
5907 Likewise.
5908 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
5909
5910
5911 PR libstdc++/86756
5912 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
5913 typeinfo and vtables less greedy.
5914 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
5915 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
5916 * src/c++17/Makefile.in: Regenerate.
5917 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
5918 here, and change name of included file.
5919 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
5920 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
5921 from sources.
5922 * src/filesystem/Makefile.in: Regenerate.
5923 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
5924 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
5925 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
5926 from dg-options and remove dg-require-filesystem-ts.
5927 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
5928 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
5929 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
5930 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
5931 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
5932 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
5933 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
5934 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
5935 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
5936 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
5937 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
5938 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
5939 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
5940 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
5941 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
5942 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
5943 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
5944 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
5945 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
5946 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
5947 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
5948 Likewise.
5949 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
5950 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
5951 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
5952 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
5953 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
5954 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
5955 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
5956 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
5957 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
5958 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
5959 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
5960 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
5961 Likewise.
5962 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
5963 Likewise.
5964 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
5965 Likewise.
5966 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
5967 Likewise.
5968 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
5969 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
5970 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
5971 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
5972 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
5973 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
5974 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
5975 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
5976 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
5977 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
5978 Likewise.
5979 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
5980 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
5981 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
5982 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
5983 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
5984
5985 PR libstdc++/87431
5986 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
5987 Check is_trivially_copyable instead of is_scalar.
5988 (variant::emplace<N, Args>(Args&&...)): If construction of the new
5989 contained value can throw and its type is trivially copyable then
5990 construct into a temporary variant and move from it, to provide the
5991 strong exception safety guarantee.
5992 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
5993 Likewise.
5994 * testsuite/20_util/variant/87431.cc: New test.
5995 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
5996 conversion causes valueless state.
5997
5998 PR libstdc++/88607
5999 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
6000 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
6001 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
6002 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
6003 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
6004
6005 2019-01-05 Jonathan Wakely <jwakely@redhat.com>
6006
6007 * include/bits/fs_fwd.h (__file_clock): Define new clock.
6008 (file_time_type): Redefine in terms of __file_clock.
6009 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
6010 overflow.
6011 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
6012 internal linkage.
6013 (internal_file_lock): New helper type for accessing __file_clock.
6014 (do_copy_file): Use internal_file_lock to convert system time to
6015 file_time_type.
6016 (last_write_time(const path&, error_code&)): Likewise.
6017 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
6018
6019 2019-01-04 Jonathan Wakely <jwakely@redhat.com>
6020
6021 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
6022 for const member functions of std::basic_string.
6023 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
6024 in C++17.
6025 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
6026 Make non-standard constructor private.
6027 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
6028 Likewise.
6029 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
6030 explicit instantiations for C++17 as well as earlier dialects.
6031 * src/c++17/Makefile.am: Add new source files.
6032 * src/c++17/Makefile.in: Regenerate.
6033 * src/c++17/cow-string-inst.cc: New file defining explicit
6034 instantiations for basic_string member functions added in C++17.
6035 * src/c++17/string-inst.cc: Likewise.
6036
6037 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
6038 copy/move constructors for old std::basic_string.
6039 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
6040 (basic_string::reference, basic_string::const_reference): Define
6041 as plain references for C++11 and later.
6042 (basic_string::basic_string()): Put constructor body outside
6043 preprocessor conditional groups.
6044 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
6045 instead of copying it.
6046 (basic_string::basic_string(const basic_string&, const _Alloc&)):
6047 Define.
6048 (basic_string::basic_string(basic_string&&, const _Alloc&)):
6049 Define.
6050 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
6051 cases for old basic_string.
6052 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
6053 allocator-extended constructors unconditionally. Add extra members to
6054 allocator type when using old string ABI.
6055 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
6056 for old string ABI.
6057 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
6058
6059 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
6060 -fno-inline added to test flags.
6061
6062 * testsuite/21_strings/basic_string/requirements/
6063 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
6064
6065 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
6066 assertion failures with old std::string ABI.
6067
6068 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
6069 with ...
6070 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
6071 functions that will only erase elements at the end.
6072 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
6073 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
6074 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
6075 of erase(p, end()).
6076 (path::_List::pop_back()): Define.
6077 (path::_List::_M_erase_from(const_iterator)): Define.
6078 (path::operator/=(const path&)): Use pop_back to remove last component
6079 and _M_erase_from to remove multiple components.
6080 (path::_M_append(basic_string_view<value_type>)): Likewise.
6081 (path::operator+=(const path&)): Likewise.
6082 (path::_M_concat(basic_string_view<value_type>)): Likewise.
6083 (path::remove_filename()): Likewise.
6084 (path::lexically_normal()): Use _List::_Impl iterators instead of
6085 path::iterator. Use pop_back to remove components from the end. Clear
6086 trailing filename, instead of using erase(const_iterator) to remove
6087 a non-final component.
6088 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
6089 additional cases.
6090 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
6091
6092 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
6093 incorrect treatment of empty filename after trailing slash.
6094 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
6095
6096 * testsuite/21_strings/basic_string/modifiers/assign/char/
6097 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
6098 to test flags.
6099 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
6100 move_assign_optim.cc: Likewise.
6101
6102 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
6103 Jakub Jelinek <jakub@redhat.com>
6104
6105 PR libstdc++/88607
6106 * include/experimental/memory: Replace UTF-8 quote characters.
6107 * include/std/future: Replace UTF-8 "em dash" characters.
6108
6109 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
6110
6111 PR libstdc++/88607
6112 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
6113 * include/debug/forward_list: Likewise.
6114 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
6115 character.
6116 * include/experimental/chrono: Likewise.
6117 * include/experimental/functional: Likewise.
6118 * include/experimental/ratio: Likewise.
6119 * include/experimental/system_error: Likewise.
6120 * include/experimental/tuple: Likewise.
6121 * include/experimental/type_traits: Likewise.
6122 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
6123 * include/parallel/multiseq_selection.h: Likewise.
6124
6125 PR libstdc++/88681
6126 * config/abi/pre/gnu.ver: Add missing exports.
6127 * testsuite/22_locale/collate_byname/88681.cc: New test.
6128 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
6129 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
6130
6131 2019-01-02 Jonathan Wakely <jwakely@redhat.com>
6132
6133 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
6134 initializer_list<value_type> and from input iterator ranges.
6135 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
6136
6137 * testsuite/experimental/string_view/element_access/char/empty.cc:
6138 Fix year range in copyright header.
6139
6140 2019-01-02 Joel Brobecker <brobecker@adacore.com>
6141
6142 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
6143 Fix year range in copyright header.
6144
6145 2019-01-01 Jakub Jelinek <jakub@redhat.com>
6146
6147 Update copyright years.
6148 \f
6149 Copyright (C) 2019 Free Software Foundation, Inc.
6150
6151 Copying and distribution of this file, with or without modification,
6152 are permitted in any medium without royalty provided the copyright
6153 notice and this notice are preserved.