1 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
3 * include/bits/stream_iterator.h (istream_iterator::_M_equal()): Make
5 (istream_iterator::_M_read()): Do not check stream state before
6 attempting extraction. Set stream pointer to null when extraction
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&)):
12 (ostream_iterator::ostream_iterator()): Add default constructor.
13 (ostream_iterator::ostream_iterator(ostream_type*, const C*)): Use
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:
22 2019-06-19 Michael Weghorn <m.weghorn@posteo.de>
23 Jonathan Wakely <jwakely@redhat.com>
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.
31 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
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.
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.
43 2019-06-18 Jonathan Wakely <jwakely@redhat.com>
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
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
62 * include/c_global/cstddef (std::byte): Perform arithmetic operations
63 in unsigned int to avoid promotion (LWG 2950).
65 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
67 * testsuite/20_util/allocator/1.cc: Add sized delete, which fixes a
70 * include/c_global/cmath (__lerp, lerp): Add noexcept (LWG 3201).
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
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
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
93 (path::string): Fix initialization of string types with different
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
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
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
132 2019-06-17 François Dumont <fdumont@gcc.gnu.org>
133 Jonathan Wakely <jwakely@redhat.com>
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
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.
151 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
153 * testsuite/20_util/bad_function_call/what.cc: Include <string> header
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:
162 * testsuite/23_containers/deque/cons/55977.cc: Include <istream> for
164 * testsuite/23_containers/vector/cons/55977.cc: Likewise.
165 * testsuite/experimental/map/erasure.cc: Include <string> for
167 * testsuite/experimental/unordered_map/erasure.cc: Likewise.
169 2019-06-14 Jonathan Wakely <jwakely@redhat.com>
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.
176 * include/std/version (__cpp_lib_bind_front): Add missing macro.
178 2019-06-12 Jonathan Wakely <jwakely@redhat.com>
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.
185 * include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
186 (variant::emplace): Change static_assert messages from "should be"
188 (hash<monostate>::operator()): Remove name of unused parameter.
190 * include/std/mutex (scoped_lock::~scoped_lock()): Use fold
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.
215 2019-06-09 Edward Smith-Rowland <3dw4rd@verizon.net>
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:
223 2019-06-08 Edward Smith-Rowland <3dw4rd@verizon.net>
225 Test for C++20 p0858 - ConstexprIterator requirements.
226 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
228 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
231 2019-06-07 Thomas Rodgers <trodgers@redhat.com>
233 Rename PSTL macro's consistent with libstdc++ (and llvm upstream
235 * include/bits/c++config: Rename all macros of the form __PSTL* to
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:
266 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
268 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
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:
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:
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:
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:
292 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
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:
298 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
300 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
302 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
304 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
306 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
308 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
310 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
312 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
314 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
316 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
318 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.
320 Rename header guards to be consistent with upstream project's
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.
346 Synchronize libstdc++ parallel algorithms with upstream
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.
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.
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
378 2019-06-07 Jonathan Wakely <jwakely@redhat.com>
380 * testsuite/24_iterators/container_access.cc: Move dg-options before
381 dg-do directive so the target check uses the -std option.
384 * configure: Regenerate.
385 * src/Makefile.am (stamp-debug): Also test for missing makefile.
386 * src/Makefile.in: Regenerate.
388 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
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>
395 * testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
397 * testsuite/23_containers/map/erasure.cc: Include <string>.
398 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
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:
404 * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
406 * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
408 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
410 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
412 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
414 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
416 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
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:
424 * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
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.
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
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
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
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
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
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/
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
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
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
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.
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):
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
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.
548 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
550 * include/bits/stl_map.h (map): Disable static assert for C++98 mode.
551 * include/bits/stl_multimap.h (multimap): Likewise.
553 2019-06-03 François Dumont <fdumont@gcc.gnu.org>
555 Rename variables and cleanup comments.
556 * include/bits/hashtable_policy.h
557 * include/bits/hashtable.h
559 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
561 * doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
562 Fix bgcolor for P0340R3.
563 * doc/html/*: Regenerate.
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.
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.
596 2019-05-31 Gerald Pfeifer <gerald@pfeifer.com>
598 * doc/xml/manual/allocator.xml: Move hoard.org back to http.
600 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
602 * include/std/tuple (tuple<>): Add noexcept to allocator-extended
604 (tuple<T1, T2>::__nothrow_default_constructible()): New helper
606 (tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.
608 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
610 * src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.
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.
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):
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):
643 * include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
644 (allocator, __true_type, __false_type): Likewise.
646 2019-05-31 Antony Polukhin <antoshkka@gmail.com>
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
671 * testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
672 * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
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
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.
689 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
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)):
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.
705 2019-05-30 Nina Dinka Ranns <dinka.ranns@gmail.com>
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.
714 2019-05-30 Jonathan Wakely <jwakely@redhat.com>
716 * doc/xml/manual/diagnostics.xml: Update list of headers that define
718 * doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
719 section about new/delete overloads. Improve section on verbose
721 * doc/html/*: Regenerate.
723 * doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
724 P0811R3. Change status of P1353R0.
725 * doc/html/*: Regenerate.
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.
734 2019-05-29 Jonathan Wakely <jwakely@redhat.com>
737 * testsuite/26_numerics/random/random_device/cons/token.cc: Fix test
738 that fails on mingw-w64.
741 * src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
742 (status(const path&, error_code&)): Use parent_path() to remove
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
748 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
749 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
751 * src/c++17/fs_path.cc (path::parent_path()): Create whole path at
752 once instead of building it iteratively.
754 * testsuite/util/testsuite_api.h: Remove names of unused parameters.
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
794 [!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
795 * testsuite/26_numerics/random/random_device/85494.cc: New test.
797 2019-05-28 Jonathan Wakely <jwakely@redhat.com>
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
806 * testsuite/27_io/filesystem/path/construct/90634.cc: New test.
807 * testsuite/experimental/filesystem/path/construct/90634.cc: New test.
809 * testsuite/util/testsuite_fs.h (compare_paths): Use three-argument
810 form of std::equals for C++11 compatibility.
812 2019-05-26 Gerald Pfeifer <gerald@pfeifer.com>
814 * doc/xml/manual/appendix_contributing.xml: Update pointer to
815 C++ standard at ansi.org.
817 2019-05-24 Jonathan Wakely <jwakely@redhat.com>
819 * include/std/numeric (midpoint(T*, T*)): Fix incorrect result.
820 * testsuite/26_numerics/midpoint/pointer.cc: Change "compile" test
823 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Fix test.
824 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused function.
826 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
828 * testsuite/20_util/function_objects/invoke/1.cc: Move C++17-specific
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".
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
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
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.
864 2019-05-23 Hans-Peter Nilsson <hp@axis.com>
866 * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
867 Don't run the libstdc++/83237 part on simulator targets.
869 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
871 * doc/xml/manual/status_cxx2017.xml: Add feature test macro for
873 * doc/html/*: Regenerate.
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.
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
889 2019-05-22 Jonathan Wakely <jwakely@redhat.com>
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.
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.
915 2019-05-21 Thomas Rodgers <trodgers@redhat.com>
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.
921 2019-05-21 Jonathan Wakely <jwakely@redhat.com>
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.
928 * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants.
930 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
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.
937 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
939 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
940 Add check for Thread Building Blocks 2018 or later.
942 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
944 * testsuite/experimental/names.cc: Only include Networking TS headers
945 on targets with the necessary Gthreads support.
947 2019-05-20 Marek Polacek <polacek@redhat.com>
949 CWG 2094 - volatile scalars are trivially copyable.
951 * testsuite/20_util/is_trivially_copyable/value.cc: Change the expected
952 result for volatile int.
954 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
956 * testsuite/17_intro/names.cc: Do not check 'ptr' on Solaris.
957 * testsuite/experimental/names.cc: Include <experimental/filesystem>
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):
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:
971 2019-05-20 Pádraig Brady <pbrady@fb.com>
973 * libstdc++-v3/include/ext/new_allocator.h (deallocate): Pass the size
974 to the deallocator with -fsized-deallocation.
976 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
978 * testsuite/experimental/memory_resource/new_delete_resource.cc: Fix
979 test by passing correct alignment to deallocate function.
981 2019-05-18 Jonathan Wakely <jwakely@redhat.com>
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.
990 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
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
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.
1019 2019-05-17 Jonathan Wakely <jwakely@redhat.com>
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.
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.
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.
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
1049 * include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)):
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
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.
1069 * include/bits/invoke.h [__cplusplus < 201703L] (__invoke_r<void>):
1070 Use _GLIBCXX14_CONSTEXPR because void functions cannot be constexpr
1073 * doc/xml/manual/status_cxx2020.xml: Update P0608R3, P0777R1, and
1075 * doc/html/*: Regenerate.
1076 * include/std/tuple (make_from_tuple): Use remove_reference_t instead
1077 of decay_t (P0777R1).
1079 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
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
1090 * testsuite/23_containers/deque/allocator/move_assign.cc (test02):
1092 * testsuite/23_containers/forward_list/allocator/move_assign.cc (test02):
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):
1098 * testsuite/23_containers/multiset/allocator/move_assign.cc (test02):
1100 * testsuite/23_containers/set/allocator/move_assign.cc (test02): Adapt.
1101 * testsuite/23_containers/unordered_map/allocator/move_assign.cc
1103 * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
1105 * testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
1107 * testsuite/23_containers/unordered_set/allocator/move_assign.cc
1109 * testsuite/23_containers/vector/allocator/move_assign.cc (test02):
1111 * testsuite/23_containers/vector/bool/allocator/move_assign.cc (test02):
1113 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc
1115 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
1118 2019-05-16 Jonathan Wakely <jwakely@redhat.com>
1120 * src/c++17/fs_ops.cc (absolute(const path&, error_code&))
1121 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
1123 * include/std/variant (__overload_set): Remove.
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.
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.
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
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
1152 (_Hash_code_base, _Local_iterator_base, _Hashtable_base):
1153 (_Hashtable_alloc): Adjust to use non-static members of EBO helper.
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
1160 (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
1162 (_Hashtable_base::_M_eq()): Remove non-const overload.
1164 2019-05-15 Jonathan Wakely <jwakely@redhat.com>
1166 * include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
1168 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
1170 * testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
1173 2019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
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.
1186 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
1189 * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
1192 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
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
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
1224 (visit<R>): Call __do_visit<R> with explicit result type.
1225 (__variant_hash_call_base_impl::operator()): Use __raw_visit and make
1228 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
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
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.
1247 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
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
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.
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.
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
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.
1282 * include/std/iterator: Include <iosfwd> instead of <istream> and
1285 * include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
1286 Remove unused, non-standard function.
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.
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.
1303 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
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:
1311 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
1314 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
1316 * testsuite/util/testsuite_allocator.h (memory_resource)
1317 (default_resource_mgr): Fix indentation.
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
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
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.
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.
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
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.
1359 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
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
1367 * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
1369 * doc/xml/manual/policy_data_structures.xml: Comment out stray
1370 <remark> elements. Fix formatting of bibliography references.
1372 2019-05-13 Edward Smith-Rowland <3dw4rd@verizon.net>
1374 * doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.
1376 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
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
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
1390 * doc/xml/manual/using.xml: Remove docs for profile mode headers and
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
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
1438 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
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:
1446 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
1448 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
1450 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
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:
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
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.
1489 Remove array_allocator extension, deprecated since 4.9.0
1490 * doc/xml/manual/allocator.xml: Remove documentation for
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.
1508 2019-05-11 François Dumont <fdumont@gcc.gnu.org>
1510 * include/bits/stl_bvector.h
1511 (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1513 (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1515 (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1517 (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1519 (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1521 (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1523 (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
1525 (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
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
1531 (_Bit_const_iterator::operator-(difference_type)): Likewise.
1532 (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
1534 2019-05-10 Jonathan Wakely <jwakely@redhat.com>
1537 * testsuite/util/thread/all.h: Do not use remove_pointer for
1538 std::thread::native_handle_type.
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
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
1553 (__uniq_ptr_hash): New base class with conditionally-disabled call
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.
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.
1565 2019-05-09 François Dumont <fdumont@gcc.gnu.org>
1567 * include/bits/stl_deque.h
1568 (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1570 (operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1572 (operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1574 (operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1576 (operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1578 (operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
1580 (_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
1582 (_Deque_iterator<>::operator-(difference_type)): Likewise.
1584 2019-05-08 François Dumont <fdumont@gcc.gnu.org>
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
1591 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
1596 2019-05-08 Jonathan Wakely <jwakely@redhat.com>
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.
1603 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
1605 * include/bits/stl_pair.h: Improve docs.
1606 * include/std/tuple: Likewise.
1608 * doc/doxygen/doxygroups.cc (std::literals): Add documentation for
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
1614 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
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
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.
1649 * doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
1651 2019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
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:
1664 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
1667 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
1669 * include/bits/regex.h: Improve docs.
1670 * include/bits/regex.tcc: Do not document implementation details.
1672 * testsuite/19_diagnostics/error_code/hash.cc: New test.
1674 2019-05-06 François Dumont <fdumont@gcc.gnu.org>
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
1681 (gdb-test): Check for regex test even if 'whatis' test.
1682 * testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
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.
1692 2019-05-04 Jonathan Wakely <jwakely@redhat.com>
1694 * include/std/system_error (error_category): Fix comment.
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.
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
1710 * libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
1711 Suppress documentation for implementation details.
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
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.
1723 2019-05-04 François Dumont <fdumont@gcc.gnu.org>
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:
1745 2019-05-03 Jonathan Wakely <jwakely@redhat.com>
1748 * testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
1752 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
1753 overflow warning with -Wpedantic -Wsystem-headers.
1755 2019-05-02 Jonathan Wakely <jwakely@redhat.com>
1758 * include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Use variadic macro.
1759 * include/bits/move.h (swap): Remove extra parentheses.
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
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.
1777 * include/bits/basic_string.h: Fix iterator/index confusion in
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
1786 * doc/doxygen/user.cfg.in: Set MARKDOWN_SUPPORT=YES.
1788 * include/bits/unique_lock.h: Fix/improve doxygen markup.
1789 * include/std/mutex: Likewise.
1790 * include/std/shared_mutex: Likewise.
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.
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.
1808 * doc/doxygen/doxygroups.cc: Move description of experimental group
1810 * include/experimental/algorithm: Add to libfund-ts doc group.
1811 * include/experimental/any: Likewise. Do not document implementation
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.
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:
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.
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.
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.
1866 * include/bits/specfun.h: Improve docs.
1867 * include/tr1/cmath: Likewise. Fix nesting of preprocessor conditions
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.
1879 * include/parallel/settings.h: Fix Doxygen markup.
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:
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:
1903 * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
1904 * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
1906 * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
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
1914 2019-05-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
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:
1923 * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
1924 * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
1927 2019-05-01 Jonathan Wakely <jwakely@redhat.com>
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.
1937 2019-04-30 Jakub Jelinek <jakub@redhat.com>
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.
1943 2019-04-30 Jonathan Wakely <jwakely@redhat.com>
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:
1952 2019-04-30 Jakub Jelinek <jakub@redhat.com>
1954 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
1956 2019-04-29 Jonathan Wakely <jwakely@redhat.com>
1958 * include/bits/stl_algo.h (generate_n): Adjust doxygen comment.
1960 * include/bits/move.h (swap(T&, T&), swap(T (&)[N], T (&)[N])): Use
1961 _GLIBCXX_NOEXCEPT_IF to simplify declarations.
1964 * src/c++11/shared_ptr.cc (get_mutex): Align pool mutexes to 64 bytes.
1966 * include/bits/stl_bvector.h (vector<bool>::empty()): Add nodiscard
1969 * include/bits/stl_iterator_base_types.h (_Iter_base): Remove unused
1970 class template and partial specialization.
1973 * include/bits/stl_algo.h (generate_n): Convert _Size parameter to
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.
1986 2019-04-28 Nina Dinka Ranns <dinka.ranns@gmail.com>
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
2003 2019-04-27 Marc Glisse <marc.glisse@inria.fr>
2006 * include/bits/stl_uninitialized.h (__relocate_object_a): Mark the
2007 arguments with __restrict.
2009 2019-04-26 H.J. Lu <hongjiu.lu@intel.com>
2011 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2013 2019-04-26 Jonathan Wakely <jwakely@redhat.com>
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.
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.
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.
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
2042 2019-04-26 Jakub Jelinek <jakub@redhat.com>
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.
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.
2057 2019-04-25 Jonathan Wakely <jwakely@redhat.com>
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
2068 2019-04-24 Jonathan Wakely <jwakely@redhat.com>
2070 * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
2071 * doc/html/*: Regenerate.
2073 * include/bits/fs_path.h (operator<, operator<=, operator>)
2074 (operator>=, operator==, operator!=): Make hidden friends, as per
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.
2080 * include/std/any (any::any(ValueType&&)): Use __and_v.
2081 * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
2084 * include/std/tuple (apply): Use remove_reference_t instead of decay_t
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.
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:
2119 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
2120 Check reference and pointer typedefs.
2121 * testsuite/experimental/string_view/requirements/typedefs.cc:
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/
2127 * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
2129 * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
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
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
2144 * testsuite/20_util/variant/run.cc: Catch exception by reference to
2145 prevent -Wcatch-value warning.
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.
2168 2019-04-23 Thomas Rodgers <trodgers@redhat.com>
2170 Document PSTL linker flags
2172 * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
2174 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
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
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.
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.
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.
2209 2019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2210 Bernd Edlinger <bernd.edlinger@hotmail.de>
2211 Jakub Jelinek <jakub@redhat.com>
2214 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
2215 general-regs-only target attribute for ARM.
2217 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
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
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.
2234 * include/std/variant (__detail::__variant::__ref_cast): Remove
2236 (__detail::__variant::_Uninitialized::_M_get)
2237 (__detail::__variant::__get)
2238 (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
2240 2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
2242 * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
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.
2249 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
2251 Delegate PSTL configuration to pstl/pstl_config.h
2253 * include/bits/c++config: Remove explicit PSTL configuration
2254 macros and use definitions from <pstl/pstl_config.h>.
2256 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
2258 Cleanup algorithm implementations
2259 * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
2261 (mismatch): Forward execution policy.
2262 (equal): Qualify call to std::equal().
2263 (partial_sort): Forward execution policy.
2264 (inplace_merge): Forward execution policy.
2266 2019-04-19 Thomas Rodgers <trodgers@redhat.com>
2268 Improve implementation of parallel equal()
2269 * include/pstl/algorithm_impl.h
2270 (__internal::__brick_equal): use "4 iterator" version of
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().
2283 2019-04-17 Jonathan Wakely <jwakely@redhat.com>
2286 * include/bits/forward_list.h (operator==): Do not use operator!= to
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.
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.
2307 * testsuite/20_util/variant/compile.cc: Remove empty string literals
2308 from static_assert declarations.
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.
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.
2322 2019-04-12 Thomas Rodgers <trodgers@redhat.com>
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.
2328 2019-04-11 Thomas Rodgers <trodgers@redhat.com>
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().
2340 2019-04-11 Jonathan Wakely <jwakely@redhat.com>
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.
2348 2019-04-10 Jonathan Wakely <jwakely@redhat.com>
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.
2356 * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
2360 * testsuite/20_util/variant/89851.cc: New test.
2362 2019-04-09 Jonathan Wakely <jwakely@redhat.com>
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
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.
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.
2380 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
2382 * testsuite/20_util/variant/90008.cc: New test.
2384 2019-04-09 Thomas Rodgers <trodgers@redhat.com>
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>.
2394 2019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
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.
2413 2019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
2415 * testsuite/27_io/filesystem/iterators/caching.cc: Add
2416 dg-require-filesystem-ts.
2418 2019-04-05 Jonathan Wakely <jwakely@redhat.com>
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.
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.
2430 * config/abi/pre/gnu.ver: Add missing exports.
2431 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
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
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
2464 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
2466 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
2468 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
2469 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
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
2479 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
2481 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
2483 * include/debug/vector (_Never_valueless_alt): Likewise for debug
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.
2501 2019-04-03 Jonathan Wakely <jwakely@redhat.com>
2504 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
2506 (variant::emplace<_Tp>): Return result of emplace<N> directly.
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.
2515 2019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
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
2523 (__variant_idx_cookie): New.
2524 (__visit_with_index): Likewise.
2525 (_Copy_assign_base::operator=): Do single-visitation with
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.
2532 (__visitor_result_type): New.
2534 2019-03-30 Eric Botcazou <ebotcazou@adacore.com>
2536 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
2538 2019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
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.
2549 2019-03-26 Jonathan Wakely <jwakely@redhat.com>
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.
2567 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
2570 Fix based on a suggestion by Antony Polukhin.
2571 * include/std/variant (__never_valueless): New.
2573 (_Extra_visit_slot_needed): New.
2574 (_Multi_array): Use it.
2575 (_S_apply_all_alts): Likewise.
2577 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
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.
2584 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
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.
2591 2019-03-22 Jonathan Wakely <jwakely@redhat.com>
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.
2600 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
2601 avoid -Wconversion warnings.
2603 2019-03-21 Thomas Rodgers <trodgers@redhat.com>
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.
2747 2019-03-21 Jonathan Wakely <jwakely@redhat.com>
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:
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:
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.
2781 2019-03-19 Jonathan Wakely <jwakely@redhat.com>
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.
2790 2019-03-12 John David Anglin <dave.anglin@bell.net>
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
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.
2802 2019-03-11 Jonathan Wakely <jwakely@redhat.com>
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.
2816 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
2817 const variables instead of macros.
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.
2824 2019-03-11 Jakub Jelinek <jakub@redhat.com>
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.
2838 2019-03-08 Jonathan Wakely <jwakely@redhat.com>
2840 * doc/xml/manual/using.xml: Use link element instead of xref.
2841 * doc/html/*: Regenerate.
2843 * include/bits/fs_path.h (path::format): Add fixed underlying type.
2845 2019-03-08 François Dumont <fdumont@gcc.gnu.org>
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.
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.
2867 2019-03-07 Andreas Schwab <schwab@suse.de>
2869 * config/abi/post/riscv64-linux-gnu: New directory.
2870 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
2872 2019-03-07 Jonathan Wakely <jwakely@redhat.com>
2874 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
2875 compile test to run. Fix typo.
2877 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
2878 * doc/html/*: Regenerate.
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.
2886 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
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.
2893 2019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
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.
2907 2019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
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
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
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.
2951 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
2953 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
2955 * testsuite/experimental/feat-char8_t.cc: Likewise.
2957 * include/std/type_traits [C++20] (is_bounded_array)
2958 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
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
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
2969 * testsuite/20_util/is_unbounded_array/value.cc: New test.
2971 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
2973 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
2975 2019-03-05 Jonathan Wakely <jwakely@redhat.com>
2977 * include/c_compatibility/math.h [C++20] (lerp): Add using
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.
2991 2019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
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.
3000 2019-03-04 Jonathan Wakely <jwakely@redhat.com>
3002 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
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
3014 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
3017 2019-03-03 Jonathan Wakely <jwakely@redhat.com>
3020 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
3023 2019-03-01 Jonathan Wakely <jwakely@redhat.com>
3025 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
3026 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
3028 * include/std/memory (uses_allocator_construction_args): New set of
3029 overloaded functions.
3030 (make_obj_using_allocator, uninitialized_construct_using_allocator):
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
3037 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
3039 2019-02-27 Jonathan Wakely <jwakely@redhat.com>
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.
3063 2019-02-26 Jonathan Wakely <jwakely@redhat.com>
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):
3081 * testsuite/23_containers/map/cons/deduction.cc: Test additional
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:
3088 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
3090 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
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.
3097 2019-02-24 Jonathan Wakely <jwakely@redhat.com>
3100 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
3101 copy and move members public.
3103 2019-02-23 Jonathan Wakely <jwakely@redhat.com>
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
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:
3121 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
3124 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
3126 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
3127 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
3129 2019-02-22 Jakub Jelinek <jakub@redhat.com>
3132 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
3133 type to std::size_t and argument to type to long double.
3135 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
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.
3143 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
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
3149 2019-02-22 Tom Honermann <tom@honermann.net>
3151 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
3152 printers for u8string and u8string_view.
3154 2019-02-22 Tom Honermann <tom@honermann.net>
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
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
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
3196 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
3197 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
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:
3206 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
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.
3215 2019-02-22 Tom Honermann <tom@honermann.net>
3217 * include/ext/typelist.h: Constrain a partial specialization of
3218 typelist::detail::append_ to only match chain<T1,T2>.
3220 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
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
3232 2019-02-20 Jakub Jelinek <jakub@redhat.com>
3235 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
3236 _GLIBCXX_PURE to the alias declaration.
3238 2019-02-19 Jonathan Wakely <jwakely@redhat.com>
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
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
3263 * testsuite/experimental/string_view/literals/values.cc
3264 [_GLIBCXX_USE_CHAR8_T]: Likewise.
3266 2019-02-19 Tom Honermann <tom@honermann.net>
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
3273 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
3274 test cloned from values.cc; validates construction and comparison
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
3312 * testsuite/experimental/feat-char8_t.cc: New test; validates that
3313 the __cpp_lib_char8_t feature test macro is defined with the
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
3332 2019-02-19 Tom Honermann <tom@honermann.net>
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
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
3356 (path::u8string): Return std::u8string when char8_t support is
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
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):
3377 (path::u8string): Return std::u8string when char8_t support is
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.
3417 2019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
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.
3423 2019-02-14 Jonathan Wakely <jwakely@redhat.com>
3425 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
3426 * doc/html/*: Regenerate.
3428 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
3429 * doc/html/*: Regenerate.
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.
3441 * configure.ac: Check for C11 timespec_get function.
3442 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
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.
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
3454 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
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.
3462 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
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.
3468 2019-02-13 Jonathan Wakely <jwakely@redhat.com>
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.
3479 2019-02-11 Jonathan Wakely <jwakely@redhat.com>
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.
3487 2019-02-09 Jonathan Wakely <jwakely@redhat.com>
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
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.
3501 2019-02-06 Jonathan Wakely <jwakely@redhat.com>
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.
3513 2019-02-05 Jonathan Wakely <jwakely@redhat.com>
3516 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
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.
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.
3530 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
3531 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
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
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.
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
3558 2019-02-05 Marc Glisse <marc.glisse@inria.fr>
3561 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
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.
3568 2019-01-30 Jonathan Wakely <jwakely@redhat.com>
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.
3578 2019-01-30 Ulrich Drepper <drepper@redhat.com>
3580 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
3582 2019-01-29 Jonathan Wakely <jwakely@redhat.com>
3584 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
3585 constexpr specifiers from arg and proj.
3587 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
3588 __shared_ptr instantiations used by gcc4-compatible ABI.
3590 * include/experimental/forward_list (experimental::erase): Qualify
3592 * include/experimental/list (experimental::erase): Likewise.
3593 * include/std/forward_list (std::erase): Likewise.
3594 * include/std/list (std::erase): Likewise.
3596 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
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.
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.
3612 2019-01-28 Jonathan Wakely <jwakely@redhat.com>
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.
3621 2019-01-24 Jonathan Wakely <jwakely@redhat.com>
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
3630 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
3633 2019-01-22 Jonathan Wakely <jwakely@redhat.com>
3636 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
3637 write to stderr instead of using printf.
3639 2019-01-21 Jakub Jelinek <jakub@redhat.com>
3642 * include/bits/char_traits.h (__constant_string_p,
3643 __constant_char_array_p): Use __builtin_is_constant_evaluated if
3646 2019-01-20 Ulrich Drepper <drepper@redhat.com>
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:
3675 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
3677 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
3679 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
3681 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
3683 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
3685 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
3687 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
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:
3695 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
3697 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
3699 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
3701 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
3703 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
3705 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
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
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.
3735 2019-01-18 Jonathan Wakely <jwakely@redhat.com>
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.
3764 2019-01-17 Jonathan Wakely <jwakely@redhat.com>
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.
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.
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:
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.
3792 2019-01-16 Jonathan Wakely <jwakely@redhat.com>
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&)):
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
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:
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
3820 * testsuite/experimental/filesystem/operations/permissions.cc:
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:
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
3836 2019-02-14 Ulrich Drepper <drepper@redhat.com>
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.
3845 2019-01-15 Jonathan Wakely <jwakely@redhat.com>
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.
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.
3859 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
3861 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
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
3874 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
3877 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
3879 2019-01-12 Jonathan Wakely <jwakely@redhat.com>
3883 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
3885 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
3888 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
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.
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
3901 (reference_wrapper::operator()): Add static assertion.
3902 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
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.
3911 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
3913 2019-01-11 Jakub Jelinek <jakub@redhat.com>
3915 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
3916 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
3918 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
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.
3926 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
3927 pattern for std::basic_stringbuf::str().
3929 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
3930 basic_ostream::operator<< patterns.
3932 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
3934 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
3935 test failures on targets with 32-bit time_t.
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.
3954 * include/experimental/internet [AI_NUMERICSERV]
3955 (resolver_base::numeric_service): Define conditionally.
3956 * testsuite/experimental/net/internet/resolver/base.cc: Test it
3958 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
3961 2019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
3962 Jonathan Wakely <jwakely@redhat.com>
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
3975 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
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:
3983 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3985 * testsuite/experimental/filesystem/iterators/
3986 recursive_directory_iterator.cc: Likewise.
3988 2019-01-10 Jakub Jelinek <jakub@redhat.com>
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.
3997 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
4001 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
4004 2019-01-09 Jonathan Wakely <jwakely@redhat.com>
4006 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
4007 for filesystem::path. Give variables more distinctive names.
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.
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:
4023 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
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.
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
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.
4058 * include/bits/locale_conv.h: Use <> for includes not "".
4059 * include/ext/random: Likewise.
4060 * include/ext/vstring.h: Likewise.
4062 2019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4064 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
4065 (GLIBCXX_3.4.21): Likewise.
4067 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
4070 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
4071 to match the one that controls whether utimbuf and utime are declared.
4073 2019-01-07 Jonathan Wakely <jwakely@redhat.com>
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*)):
4083 (ctype<char>::do_widen(const char*, const char*, char*)):
4085 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
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.
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.
4108 2019-01-06 Jonathan Wakely <jwakely@redhat.com>
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
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
4134 (last_write_time, read_symlink): Remove unused attributes from
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
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:
4159 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
4160 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
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:
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:
4187 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
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
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:
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:
4241 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
4243 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
4245 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
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:
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.
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&&...)):
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.
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.
4284 2019-01-05 Jonathan Wakely <jwakely@redhat.com>
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
4290 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
4292 (internal_file_lock): New helper type for accessing __file_clock.
4293 (do_copy_file): Use internal_file_lock to convert system time to
4295 (last_write_time(const path&, error_code&)): Likewise.
4296 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
4298 2019-01-04 Jonathan Wakely <jwakely@redhat.com>
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
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&)):
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.
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&)):
4327 (basic_string::basic_string(basic_string&&, const _Alloc&)):
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
4336 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
4338 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
4339 -fno-inline added to test flags.
4341 * testsuite/21_strings/basic_string/requirements/
4342 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
4344 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
4345 assertion failures with old std::string ABI.
4347 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
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
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
4369 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
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.
4375 * testsuite/21_strings/basic_string/modifiers/assign/char/
4376 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
4378 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
4379 move_assign_optim.cc: Likewise.
4381 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
4382 Jakub Jelinek <jakub@redhat.com>
4385 * include/experimental/memory: Replace UTF-8 quote characters.
4386 * include/std/future: Replace UTF-8 "em dash" characters.
4388 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
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"
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.
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.
4410 2019-01-02 Jonathan Wakely <jwakely@redhat.com>
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.
4416 * testsuite/experimental/string_view/element_access/char/empty.cc:
4417 Fix year range in copyright header.
4419 2019-01-02 Joel Brobecker <brobecker@adacore.com>
4421 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
4422 Fix year range in copyright header.
4424 2019-01-01 Jakub Jelinek <jakub@redhat.com>
4426 Update copyright years.
4428 Copyright (C) 2019 Free Software Foundation, Inc.
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.