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