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