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