1 2018-12-23 François Dumont <fdumont@gcc.gnu.org>
3 * libstdc++-v3/testsuite/util/testsuite_allocator.h
4 (CustomPointerAlloc<>::allocate(size_t, pointer)): Replace by...
5 (CustomPointerAlloc<>::allocate(size_t, const_void_pointer)): ...this.
7 Respect pointer_traits on node deallocation in _ReuseOrAllocNode
10 * include/bits/hashtable_policy.h
11 (_Hashtable_alloc<>::_M_deallocate_node_ptr(__node_type*)): New.
12 (_Hashtable_alloc<>::_M_deallocate_node(__node_type*)): Use latter.
13 (_ReuseOrAllocNode<>::operator<_Arg>()(_Arg&&)): Likewise.
15 2018-12-22 Iain Sandoe <iain@sandoe.co.uk>
17 * /config/os/bsd/darwin/ppc-extra.ver: Append long double symbols.
19 2018-12-20 Jonathan Wakely <jwakely@redhat.com>
21 * testsuite/27_io/filesystem/operations/proximate.cc: Fix test for
23 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
24 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
26 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: New test
27 (missed from previous commit).
29 2018-12-19 Jonathan Wakely <jwakely@redhat.com>
31 * doc/xml/manual/abi.xml: Add missing word.
33 2018-12-18 Jonathan Wakely <jwakely@redhat.com>
35 * include/bits/fs_dir.h (operator<<): Overload for directory_entry,
37 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: New test.
39 * src/filesystem/std-dir.cc (filesystem::_Dir::advance): Move new
40 path instead of copying.
42 * src/filesystem/std-dir.cc (filesystem::_Dir::advance): Append
43 string to lvalue to avoid creating temporary path.
45 * include/bits/fs_path.h (path::compare(const string_type&))
46 (path::compare(const value_type*)): Add noexcept and construct a
47 string view to compare to instead of a path.
48 (path::compare(basic_string_view<value_type>)): Add noexcept. Remove
50 * src/filesystem/std-path.cc (path::_Parser): Track last type read
52 (path::_Parser::next()): Return a final empty component when the
53 input ends in a non-root directory separator.
54 (path::_M_append(basic_string_view<value_type>)): Remove special cases
55 for trailing non-root directory separator.
56 (path::_M_concat(basic_string_view<value_type>)): Likewise.
57 (path::compare(const path&)): Implement LWG 2936.
58 (path::compare(basic_string_view<value_type>)): Define in terms of
59 components returned by parser, consistent with LWG 2936.
60 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: New.
61 * testsuite/27_io/filesystem/path/compare/path.cc: Test more cases.
62 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
64 * include/std/string_view [__cplusplus > 201703L]
65 (basic_string_view::starts_with(basic_string_view)): Implement
66 proposed resolution of LWG 3040 to avoid redundant length check.
67 (basic_string_view::starts_with(_CharT)): Implement proposed
68 resolution of LWG 3040 to check at most one character.
69 (basic_string_view::ends_with(_CharT)): Likewise.
71 2018-12-17 Jonathan Wakely <jwakely@redhat.com>
74 * src/filesystem/std-path.cc (path::_M_append): Fix off-by-one error
75 that caused a component to be lost from the iteration sequence.
76 (path::_M_concat): Likewise.
77 * testsuite/27_io/filesystem/path/append/source.cc: Test appending
79 * testsuite/27_io/filesystem/path/concat/strings.cc: Test
80 concatenating long strings.
81 * testsuite/27_io/filesystem/path/construct/string_view.cc: Test
82 construction from long string.
84 2018-12-13 Jonathan Wakely <jwakely@redhat.com>
86 * src/filesystem/std-path.cc (SLASHSLASH_IS_ROOT_NAME): New macro to
87 control whether interpret paths with two slashes as a root-name.
88 (path::operator/=(const path&)) [SLASHSLASH_IS_ROOT_NAME]: Add a
89 root-directory when appending to a root-name.
90 (path::_M_append(basic_string_view<value_type>))
91 [SLASHSLASH_IS_ROOT_NAME]: Likewise.
92 (path::operator/=(const path&)) [SLASHSLASH_IS_ROOT_NAME]: Likewise.
93 (path::_M_concat(basic_string_view<value_type>))
94 [SLASHSLASH_IS_ROOT_NAME]: Likewise.
95 (path::lexically_normal()) [SLASHSLASH_IS_ROOT_NAME]: Use += instead
96 of /= to add a root-directory to the result.
97 * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Fix
98 expected result for Cygwin.
101 * include/bits/fs_path.h (path::path(path&&)): Add noexcept when
102 appropriate. Move _M_cmpts instead of reparsing the native pathname.
103 (path::operator=(const path&)): Do not define as defaulted.
104 (path::operator/=, path::append): Call _M_append.
105 (path::concat): Call _M_concat.
106 (path::path(string_type, _Type): Change type of first parameter to
107 basic_string_view<value_type>.
108 (path::_M_append(basic_string_view<value_type>)): New member function.
109 (path::_M_concat(basic_string_view<value_type>)): New member function.
110 (_S_convert(value_type*, __null_terminated)): Return string view.
111 (_S_convert(const value_type*, __null_terminated)): Return string view.
112 (_S_convert(value_type*, value_type*))
113 (_S_convert(const value_type*, const value_type*)): Add overloads for
115 (_S_convert(_InputIterator, __null_terminated)): Construct string_type
116 explicitly, for cases where _S_convert returns a string view.
117 (path::_S_is_dir_sep): Replace with non-member is_dir_sep.
118 (path::_M_trim, path::_M_add_root_name, path::_M_add_root_dir)
119 (path::_M_add_filename): Remove.
120 (path::_M_type()): New member function to replace _M_type data member.
121 (path::_List): Define new struct type instead of using std::vector.
122 (path::_Cmpt::_Cmpt(string_type, _Type, size_t)): Change type of
123 first parameter to basic_string_view<value_type>.
124 (path::operator+=(const path&)): Do not define inline.
125 (path::operator+=(const string_type&)): Call _M_concat.
126 (path::operator+=(const value_type*)): Likewise.
127 (path::operator+=(value_type)): Likewise.
128 (path::operator+=(basic_string_view<value_type>)): Likewise.
129 (path::operator/=(const path&)): Do not define inline.
130 (path::_M_append(path)): Remove.
131 * python/libstdcxx/v6/printers.py (StdPathPrinter): New printer that
132 understands the new path::_List type.
133 * src/filesystem/std-path.cc (is_dir_sep): New function to replace
135 (path::_Parser): New helper class to parse strings as paths.
136 (path::_List::_Impl): Define container type for path components.
137 (path::_List): Define members.
138 (path::operator=(const path&)): Define explicitly, to provide the
139 strong exception safety guarantee.
140 (path::operator/=(const path&)): Implement manually by processing
141 each component of the argument, rather than using _M_split_cmpts
142 to parse the entire string again.
143 (path::_M_append(string_type)): Likewise.
144 (path::operator+=(const path&)): Likewise.
145 (path::_M_concat(string_type)): Likewise.
146 (path::remove_filename()): Perform trim directly instead of calling
148 (path::_M_split_cmpts()): Rewrite in terms of _Parser class.
149 (path::_M_trim, path::_M_add_root_name, path::_M_add_root_dir)
150 (path::_M_add_filename): Remove.
151 * testsuite/27_io/filesystem/path/append/source.cc: Test appending a
152 string view that aliases the path.
153 testsuite/27_io/filesystem/path/concat/strings.cc: Test concatenating
154 a string view that aliases the path.
156 * testsuite/27_io/filesystem/path/generation/proximate.cc: Use
157 preferred directory separators for normalized paths.
158 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
160 * testsuite/27_io/filesystem/path/itr/traversal.cc: Fix test for
163 * testsuite/27_io/filesystem/path/construct/80762.cc: Skip test if
164 the Filesystem TS support is not configured.
165 * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
167 2018-12-12 Jonathan Wakely <jwakely@redhat.com>
169 PR libstdc++/71044 (partial)
170 * include/bits/fs_path.h (__path_iter_distance, __path_iter_advance):
171 New friend functions to implement std::distance and std::advance more
173 (distance, advance): Add overloads for path::iterator.
174 * testsuite/27_io/filesystem/path/itr/components.cc: Test new
178 * include/bits/fs_path.h (path::_Path): Use remove_cv_t and is_void.
179 * include/experimental/bits/fs_path.h (path::_Path): Likewise.
180 * testsuite/27_io/filesystem/path/construct/80762.cc: New test.
181 * testsuite/experimental/filesystem/path/construct/80762.cc: New test.
183 2018-12-12 Jakub Jelinek <jakub@redhat.com>
185 P0595R2 - is_constant_evaluated
186 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED):
187 Define if __builtin_is_constant_evaluated is available.
188 * include/std/type_traits (std::is_constant_evaluated): New constexpr
190 * testsuite/20_util/is_constant_evaluated/1.cc: New test.
191 * testsuite/20_util/is_constant_evaluated/noexcept.cc: New test.
193 2018-12-10 Gerald Pfeifer <gerald@pfeifer.com>
195 * doc/xml/manual/documentation_hacking.xml: Update reference
198 2018-12-10 Jonathan Wakely <jwakely@redhat.com>
200 * testsuite/experimental/filesystem/path/query/is_absolute.cc: Fix
201 test to use TS, not C++17.
203 2018-12-06 Iain Sandoe <iain@sandoe.co.uk>
205 * scripts/make_exports.pl (check names): Don’t try to export
206 construction vtable symbols.
208 2018-12-06 Jonathan Wakely <jwakely@redhat.com>
209 Iain Sandoe <iain@sandoe.co.uk>
212 * testsuite/17_intro/headers/c++1998/all_attributes.cc: Don't test
213 always_inline on Darwin.
214 * testsuite/17_intro/headers/c++2011/all_attributes.cc: Likewise.
215 * testsuite/17_intro/headers/c++2014/all_attributes.cc: Likewise.
216 * testsuite/17_intro/headers/c++2017/all_attributes.cc: Likewise.
217 * testsuite/17_intro/headers/c++2020/all_attributes.cc: Likewise.
219 2018-12-03 Edward Smith-Rowland <3dw4rd@verizon.net>
221 PR libstdc++/88341 - Complex norm doesn't compile with C++11
222 * include/std/complex (_S_do_it): Make C++20 constexpr.
223 * testsuite/26_numerics/complex/value_operations/pr88341.cc: New test.
225 2018-11-30 Edward Smith-Rowland <3dw4rd@verizon.net>
227 Implement P0457R2 String Prefix and Suffix Checking.
228 * include/bits/basic_string.h: Add starts_with, ends_with members.
229 * include/std/string_view: Ditto.
230 * testsuite/21_strings/basic_string/operations/starts_with/
232 * testsuite/21_strings/basic_string/operations/starts_with/
233 wchar_t/1.cc: New test.
234 * testsuite/21_strings/basic_string/operations/ends_with/
236 * testsuite/21_strings/basic_string/operations/ends_with/
237 wchar_t/1.cc: New test.
238 * testsuite/21_strings/basic_string_view/operations/starts_with/
240 * testsuite/21_strings/basic_string_view/operations/starts_with/
241 wchar_t/1.cc: New test.
242 * testsuite/21_strings/basic_string_view/operations/ends_with/
244 * testsuite/21_strings/basic_string_view/operations/ends_with/
245 wchar_t/1.cc: New test.
247 2018-11-30 Edward Smith-Rowland <3dw4rd@verizon.net>
249 Pre-emptively support P0646R1 for std container erasure.
250 * include/bits/erase_if.h: Accumulate and return number of erased nodes.
251 * include/std/forward_list (): Return number of erased items.
252 * include/std/list (): Ditto.
253 * include/std/map (): Ditto.
254 * include/std/set (): Ditto.
255 * include/std/string (): Ditto.
256 * include/std/unordered_map (): Ditto.
257 * include/std/unordered_set (): Ditto.
258 * include/std/vector (): Ditto.
259 * include/std/deque (): Ditto.
260 * testsuite/21_strings/basic_string/erasure.cc: Test number of erasures.
261 * testsuite/23_containers/deque/erasure.cc: Ditto.
262 * testsuite/23_containers/forward_list/erasure.cc: Ditto.
263 * testsuite/23_containers/list/erasure.cc: Ditto.
264 * testsuite/23_containers/map/erasure.cc: Ditto.
265 * testsuite/23_containers/set/erasure.cc: Ditto.
266 * testsuite/23_containers/unordered_map/erasure.cc: Ditto.
267 * testsuite/23_containers/unordered_set/erasure.cc: Ditto.
268 * testsuite/23_containers/vector/erasure.cc: Ditto.
270 2018-11-29 Edward Smith-Rowland <3dw4rd@verizon.net>
272 Only include bits/stl_algo.h for C++20.
273 * include/std/deque: Only include bits/stl_algo.h for C++20.
274 * include/std/string: Ditto.
275 * include/std/vector: Ditto.
277 2018-11-29 Edward Smith-Rowland <3dw4rd@verizon.net>
280 * include/experimental/deque: Make inline.
281 * include/std/deque: Include bits/stl_algo.h.
282 (erase, erase_if): Make inline.
283 * include/std/string: Include bits/stl_algo.h.
284 * include/std/unordered_set: Add erase, erase_if!
285 * include/std/vector: Include bits/stl_algo.h.
286 * testsuite/21_strings/basic_string/erasure.cc:
287 Add { dg-options "-std=gnu++2a" }.
288 * testsuite/23_containers/deque/erasure.cc: Ditto.
289 * testsuite/23_containers/forward_list/erasure.cc: Ditto.
290 * testsuite/23_containers/list/erasure.cc: Ditto.
291 * testsuite/23_containers/map/erasure.cc: Ditto.
292 * testsuite/23_containers/set/erasure.cc: Ditto.
293 * testsuite/23_containers/unordered_map/erasure.cc: Ditto.
294 * testsuite/23_containers/unordered_set/erasure.cc: Ditto.
295 * testsuite/23_containers/vector/erasure.cc: Ditto.
297 2018-11-29 Jonathan Wakely <jwakely@redhat.com>
300 * include/ext/aligned_buffer.h (__aligned_membuf): Add comment.
301 (__aligned_buffer): Use __alignof__ instead of std::alignment_of.
302 * include/std/type_traits (alignment_of): Use alignof instead of
304 * testsuite/20_util/alignment_of/value.cc: Fix test to check values
305 match alignof not __alignof__, as required by the standard.
309 * src/filesystem/ops.cc (experimental::create_directories): Report
310 an error when the path resolves to an existing non-directory (P1164).
311 * src/filesystem/std-ops.cc (create_directories): Likewise. Handle
312 empty filenames due to trailing slashes.
313 * testsuite/27_io/filesystem/operations/create_directories.cc: Test
314 when some component of the path exists and is not a directory. Test
316 * testsuite/experimental/filesystem/operations/create_directories.cc:
319 2018-11-28 Jonathan Wakely <jwakely@redhat.com>
322 * src/filesystem/path.cc (filesystem_error::_M_gen_what()): Create
323 string directly, instead of calling fs_err_concat.
326 * include/std/string_view (basic_string_view::substr): Add default
327 argument to first parameter.
328 * include/experimental/string_view (basic_string_view::substr):
330 * testsuite/21_strings/basic_string_view/operations/substr/char/
332 * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/
334 * testsuite/experimental/string_view/operations/substr/char/83511.cc:
336 * testsuite/experimental/string_view/operations/substr/wchar_t/83511.cc:
339 2018-11-28 Edward Smith-Rowland <3dw4rd@verizon.net>
341 Implement uniform container erasure for C++20.
342 * include/Makefile.am: Move erase_if.h.
343 * include/Makefile.in: Move erase_if.h.
344 * include/experimental/bits/erase_if.h: Move ...
345 * include/bits/erase_if.h: ... here.
346 * include/experimental/map: Move erase_if.h.
347 * include/experimental/set: Move erase_if.h.
348 * include/experimental/unordered_map: Move erase_if.h.
349 * include/experimental/unordered_set: Move erase_if.h.
350 * include/std/deque (erase_if, erase): New functions.
351 * include/std/forward_list: Ditto.
352 * include/std/list: Ditto.
353 * include/std/map: Ditto.
354 * include/std/set: Ditto.
355 * include/std/string: Ditto.
356 * include/std/unordered_map: Ditto.
357 * include/std/unordered_set: Ditto.
358 * include/std/vector: Ditto.
359 * testsuite/21_strings/basic_string/erasure.cc: New test.
360 * testsuite/23_containers/deque/erasure.cc: New test.
361 * testsuite/23_containers/forward_list/erasure.cc: New test.
362 * testsuite/23_containers/list/erasure.cc: New test.
363 * testsuite/23_containers/map/erasure.cc: New test.
364 * testsuite/23_containers/set/erasure.cc: New test.
365 * testsuite/23_containers/unordered_map/erasure.cc: New test.
366 * testsuite/23_containers/unordered_set/erasure.cc: New test.
367 * testsuite/23_containers/vector/erasure.cc: New test.
369 2018-11-28 Jonathan Wakely <jwakely@redhat.com>
371 * doc/xml/manual/intro.xml: Document LWG 3096 change.
372 * src/filesystem/std-path.cc (path::lexically_relative(const path&)):
373 Treat a final empty element equivalently to a final dot element.
374 * testsuite/27_io/filesystem/path/generation/relative.cc: Add checks
375 for the examples in the DR.
378 * include/bits/fs_path.h (filesystem_error): Move data members into
379 pimpl class owned by shared_ptr. Remove inline definitions of member
381 * src/filesystem/std-path.cc (filesystem_error::_Impl): Define.
382 (filesystem_error): Define member functions.
383 * testsuite/27_io/filesystem/filesystem_error/cons.cc: New test.
384 * testsuite/27_io/filesystem/filesystem_error/copy.cc: New test.
386 * doc/xml/manual/status_cxx2017.xml: Update C++17 status.
387 * doc/html/*: Regenerate.
389 2018-11-27 Jonathan Wakely <jwakely@redhat.com>
391 * testsuite/27_io/filesystem/operations/canonical.cc: Remove
392 directory created by test.
393 * testsuite/27_io/filesystem/operations/symlink_status.cc: Remove
394 symlink created by test.
397 * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Add new macro
398 that defines _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY.
399 * config.h.in: Regenerate.
400 * configure: Regenerate.
401 * configure.ac: Use GLIBCXX_ENABLE_LOCK_POLICY.
402 * doc/xml/manual/configure.xml: Document new configure option.
403 * include/bits/fs_dir.h (directory_iterator): Use __shared_ptr
404 instead of shared_ptr.
405 (recursive_directory_iterator): Likewise.
406 (__shared_ptr<_Dir>): Add explicit instantiation declaration.
407 (__shared_ptr<recursive_directory_iterator::_Dir_stack>): Likewise.
408 * include/bits/shared_ptr_base.h (__allocate_shared, __make_shared):
409 Add default template argument for _Lock_policy template parameter.
410 * include/ext/concurrence.h (__default_lock_policy): Check macro
411 _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY instead of checking if the current
412 target supports the builtins for compare-and-swap.
413 * src/filesystem/std-dir.cc (__shared_ptr<_Dir>): Add explicit
414 instantiation definition.
415 (__shared_ptr<recursive_directory_iterator::_Dir_stack>): Likewise.
416 (directory_iterator, recursive_directory_iterator): Use __make_shared
417 instead of make_shared.
419 2018-11-27 François Dumont <fdumont@gcc.gnu.org>
422 * include/bits/hashtable.h (_Hashtable<>::_M_assign_elements): New.
423 (_Hashtable<>::operator=(const _Hashtable&)): Use latter.
424 (_Hashtable<>::_M_move_assign(_Hashtable&&, false_type)): Likewise.
425 * testsuite/23_containers/unordered_set/allocator/move_assign.cc
428 2018-11-26 Jonathan Wakely <jwakely@redhat.com>
430 * testsuite/26_numerics/complex/requirements/more_constexpr.cc: Fix
431 failure on targets without __float128.
433 2018-11-23 Edward Smith-Rowland <3dw4rd@verizon.net>
435 Implement P0415 More constexpr for std::complex.
436 * include/std/complex (conj(complex<Tp>), norm(complex<Tp>)): Constexpr;
437 (real(Tp), imag(Tp)): Constexpr;
438 (operator@=(Tp), operator@=(complex<Tp>)): Constexpr;
439 (operator@(Tp,complex<Tp>), operator@(complex<Tp>,Tp)
440 operator@(complex<Tp>,complex<Tp>)): Constexpr.
441 * testsuite/26_numerics/complex/comparison_operators/
442 more_constexpr.cc: New test.
443 * testsuite/26_numerics/complex/operators/more_constexpr.cc: New test.
444 * testsuite/26_numerics/complex/requirements/
445 more_constexpr.cc: New test.
446 * testsuite/26_numerics/complex/value_operations/
447 more_constexpr.cc: New test.
448 * testsuite/26_numerics/headers/complex/synopsis.cc:
449 Add _GLIBCXX20_CONSTEXPR to applicable operators; Add missing proj().
450 * testsuite/26_numerics/headers/complex/synopsis.cc:
451 Add _GLIBCXX20_CONSTEXPR to relevant decls.
453 2018-11-23 Martin Sebor <msebor@redhat.com>
454 Jonathan Wakely <jwakely@redhat.com>
457 * python/libstdcxx/v6/printers.py (StdBitsetPrinter): Handle
458 exception thrown for std::bitset<0>.
459 * testsuite/libstdc++-prettyprinters/simple.cc: Test std::bitset<0>.
461 2018-11-23 Jonathan Wakely <jwakely@redhat.com>
463 PR libstdc++/87308 (partial)
464 * python/libstdcxx/v6/printers.py (StdExpAnyPrinter): Adjust regex to
465 work around PR 88166.
466 * testsuite/libstdc++-prettyprinters/cxx17.cc: Test std::any
467 containing a local type.
469 2018-11-22 Marc Glisse <marc.glisse@inria.fr>
472 * include/bits/stl_algobase.h: Include <type_traits>.
473 (__niter_base): Add noexcept specification.
474 * include/bits/stl_deque.h: Include <bits/stl_uninitialized.h>.
475 (__is_trivially_relocatable): Specialize for deque.
476 * include/bits/stl_iterator.h: Include <type_traits>.
477 (__niter_base): Add noexcept specification.
478 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
479 Add parameter for meta-programming.
480 (__relocate_a_1, __relocate_a): Add noexcept specification.
481 * include/bits/stl_vector.h (__use_relocate): Test __relocate_a.
483 2018-11-22 Jonathan Wakely <jwakely@redhat.com>
487 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti)
488 [__cpp_rtti]: Define even when RTTI is enabled. Use array of
489 sizeof(type_info) so that type-punned reference binds to an object
490 of the correct size as well as correct alignment.
491 (_Sp_counted_ptr_inplace::_M_get_deleter) [__cpp_rtti]: Check for
492 _S_ti() reference even when RTTI is enabled.
493 (__shared_ptr(_Sp_make_shared_tag, const _Alloc&, _Args&&...))
494 [__cpp_rtti]: Pass _S_ti() instead of typeid(_Sp_make_shared_tag).
496 2018-11-21 Jakub Jelinek <jakub@redhat.com>
499 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust expected
501 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
502 * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
503 * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
504 * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
505 * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
506 * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
508 2018-11-21 Jonathan Wakely <jwakely@redhat.com>
511 * include/std/memory_resource (pool_options): Add Doxygen comments.
512 * src/c++17/memory_resource.cc (pool_sizes): Only use suitable values
513 on targets with 16-bit or 20-bit size_t type.
514 (munge_options): Make default values depend on width of size_t type.
517 * src/c++17/memory_resource.cc (bitset::size_type): Use the smaller
518 of uint32_t and size_t.
519 (bitset::size(), bitset::free(), bitset::update_next_word())
520 (bitset::max_blocks_per_chunk(), bitset::max_word_index()): Use
521 size_type consistently instead of size_t.
522 (chunk): Adjust static_assert checking sizeof(chunk).
524 2018-11-20 Ville Voutilainen <ville.voutilainen@gmail.com>
526 Housekeeping for the effective targets of optional's tests.
527 * testsuite/20_util/optional/77288.cc: Adjust.
528 * testsuite/20_util/optional/84601.cc: Likewise.
529 * testsuite/20_util/optional/assignment/1.cc: Likewise.
530 * testsuite/20_util/optional/assignment/2.cc: Likewise.
531 * testsuite/20_util/optional/assignment/3.cc: Likewise.
532 * testsuite/20_util/optional/assignment/4.cc: Likewise.
533 * testsuite/20_util/optional/assignment/5.cc: Likewise.
534 * testsuite/20_util/optional/assignment/6.cc: Likewise.
535 * testsuite/20_util/optional/assignment/7.cc: Likewise.
536 * testsuite/20_util/optional/assignment/8.cc: Likewise.
537 * testsuite/20_util/optional/cons/77727.cc: Likewise.
538 * testsuite/20_util/optional/cons/copy.cc: Likewise.
539 * testsuite/20_util/optional/cons/deduction.cc: Likewise.
540 * testsuite/20_util/optional/cons/default.cc: Likewise.
541 * testsuite/20_util/optional/cons/move.cc: Likewise.
542 * testsuite/20_util/optional/cons/trivial.cc: Likewise.
543 * testsuite/20_util/optional/cons/value.cc: Likewise.
544 * testsuite/20_util/optional/cons/value_neg.cc: Likewise.
545 * testsuite/20_util/optional/constexpr/cons/default.cc: Likewise.
546 * testsuite/20_util/optional/constexpr/cons/value.cc: Likewise.
547 * testsuite/20_util/optional/constexpr/in_place.cc: Likewise.
548 * testsuite/20_util/optional/constexpr/nullopt.cc: Likewise.
549 * testsuite/20_util/optional/constexpr/observers/1.cc: Likewise.
550 * testsuite/20_util/optional/constexpr/observers/4.cc: Likewise.
551 * testsuite/20_util/optional/constexpr/observers/5.cc: Likewise.
552 * testsuite/20_util/optional/constexpr/relops/1.cc: Likewise.
553 * testsuite/20_util/optional/constexpr/relops/2.cc: Likewise.
554 * testsuite/20_util/optional/constexpr/relops/3.cc: Likewise.
555 * testsuite/20_util/optional/constexpr/relops/4.cc: Likewise.
556 * testsuite/20_util/optional/constexpr/relops/5.cc: Likewise.
557 * testsuite/20_util/optional/constexpr/relops/6.cc: Likewise.
558 * testsuite/20_util/optional/in_place.cc: Likewise.
559 * testsuite/20_util/optional/make_optional.cc: Likewise.
560 * testsuite/20_util/optional/nullopt.cc: Likewise.
561 * testsuite/20_util/optional/observers/1.cc: Likewise.
562 * testsuite/20_util/optional/observers/2.cc: Likewise.
563 * testsuite/20_util/optional/observers/3.cc: Likewise.
564 * testsuite/20_util/optional/observers/4.cc: Likewise.
565 * testsuite/20_util/optional/observers/5.cc: Likewise.
566 * testsuite/20_util/optional/observers/6.cc: Likewise.
567 * testsuite/20_util/optional/relops/1.cc: Likewise.
568 * testsuite/20_util/optional/relops/2.cc: Likewise.
569 * testsuite/20_util/optional/relops/3.cc: Likewise.
570 * testsuite/20_util/optional/relops/4.cc: Likewise.
571 * testsuite/20_util/optional/relops/5.cc: Likewise.
572 * testsuite/20_util/optional/relops/6.cc: Likewise.
573 * testsuite/20_util/optional/relops/7.cc: Likewise.
574 * testsuite/20_util/optional/requirements.cc: Likewise.
575 * testsuite/20_util/optional/swap/1.cc: Likewise.
576 * testsuite/20_util/optional/swap/2.cc: Likewise.
577 * testsuite/20_util/optional/typedefs.cc: Likewise.
579 2018-11-19 François Dumont <fdumont@gcc.gnu.org>
581 * include/ext/throw_allocator.h
582 (annotate_base::insert(void*, size_t)): Use insert result to check for
583 double insert attempt.
584 (annotate_base::insert_construct(void*)): Likewise.
585 (annotate_base::check_allocated(void*, size_t)): Return found iterator.
586 (annotate_base::erase(void*, size_t)): Use latter method returned
588 (annotate_base::check_constructed(void*, size_t)): Return found iterator.
589 (annotate_base::erase_construct(void*)): Use latter method returned
592 2018-11-19 Ville Voutilainen <ville.voutilainen@gmail.com>
595 Also implement P0602R4 (variant and optional
596 should propagate copy/move triviality) for std::optional.
597 * include/std/optional (_Optional_payload): Change
598 the main constraints to check constructibility in
599 addition to assignability.
600 (operator=): Make constexpr.
601 (_M_reset): Likewise.
602 (_M_construct): Likewise.
603 (operator->): Likewise.
604 * testsuite/20_util/optional/assignment/8.cc: Adjust.
605 * testsuite/20_util/optional/assignment/9.cc: New.
607 2018-11-19 Jonathan Wakely <jwakely@redhat.com>
609 PR libstdc++/88084 - Implement LWG 2777
610 * include/std/string_view (basic_string_view::copy): Use traits to
612 * testsuite/21_strings/basic_string_view/operations/copy/char/2.cc:
614 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc:
617 2018-11-18 Michele Pezzutti <mpezz@tiscali.it>
618 Edward Smith-Rowland <3dw4rd@verizon.net>
620 PR libstdc++/83566 - cyl_bessel_j returns wrong result for x>1000
622 * include/tr1/bessel_function.tcc: Perform no fewer than nu/2 iterations
623 of the asymptotic series (nu is the Bessel order).
624 * testsuite/tr1/5_numerical_facilities/special_functions/
625 09_cyl_bessel_j/check_value.cc: Add tests at nu=100, 1000<=x<=2000.
626 * testsuite/tr1/5_numerical_facilities/special_functions/
627 11_cyl_neumann/check_value.cc: Ditto.
628 * testsuite/special_functions/08_cyl_bessel_j/check_value.cc: Ditto.
629 * testsuite/special_functions/10_cyl_neumann/check_value.cc: Ditto.
631 2018-11-17 Jonathan Wakely <jwakely@redhat.com>
633 Implement std::pmr::synchronized_pool_resource
634 * config/abi/pre/gnu.ver: Add new symbols.
635 * include/std/memory_resource [_GLIBCXX_HAS_GTHREADS]
636 (__cpp_lib_memory_resource): Define to expected value, 201603.
637 (synchronized_pool_resource): New class.
638 [!_GLIBCXX_HAS_GTHREADS] (__cpp_lib_memory_resource): Define to 1.
639 * include/std/shared_mutex (__glibcxx_rwlock_rdlock)
640 (__glibcxx_rwlock_tryrdlock, __glibcxx_rwlock_wrlock)
641 (__glibcxx_rwlock_trywrlock, __glibcxx_rwlock_unlock)
642 (__glibcxx_rwlock_destroy, __glibcxx_rwlock_init)
643 (__glibcxx_rwlock_timedrdlock, __glibcxx_rwlock_timedwrlock): Define
644 weak symbols for POSIX rwlock functions.
645 (__shared_mutex_pthread): Use weak symbols.
646 * include/std/version (__cpp_lib_memory_resource): Define.
647 * src/c++17/memory_resource.cc [_GLIBCXX_HAS_GTHREADS]
648 (synchronized_pool_resource::_TPools): New class.
649 (destroy_TPools): New function for pthread_key_create destructor.
650 (synchronized_pool_resource::synchronized_pool_resource)
651 (synchronized_pool_resource::~synchronized_pool_resource)
652 (synchronized_pool_resource::release)
653 (synchronized_pool_resource::do_allocate)
654 (synchronized_pool_resource::do_deallocate): Define public members.
655 (synchronized_pool_resource::_M_thread_specific_pools)
656 (synchronized_pool_resource::_M_alloc_tpools)
657 (synchronized_pool_resource::_M_alloc_shared_tpools): Define private
659 * testsuite/20_util/synchronized_pool_resource/allocate.cc: New test.
660 * testsuite/20_util/synchronized_pool_resource/cons.cc: New test.
661 * testsuite/20_util/synchronized_pool_resource/is_equal.cc: New test.
662 * testsuite/20_util/synchronized_pool_resource/multithreaded.cc: New
664 * testsuite/20_util/synchronized_pool_resource/release.cc: New test.
665 * testsuite/performance/20_util/memory_resource/pools.cc: Add
666 multithreaded tests using pmr::synchronized_pool_resource.
668 2018-11-16 Renlin Li <renlin.li@arm.com>
669 Tejas Belagod <tejas.belagod@arm.com>
671 testsuite/lib/libstdc++.exp (check_v3_target_prop_cached): New proc.
672 (check_v3_target): Use the check_v3_target_prop_cached.
674 2018-11-15 Jonathan Wakely <jwakely@redhat.com>
676 * scripts/check_performance: Allow tests to choose a -std flag.
677 * src/c++17/memory_resource.cc (bitset::get_first_unset()): Use local
678 variables of the right types. Call update_next_word() unconditionally.
679 * testsuite/20_util/unsynchronized_pool_resource/cons.cc: New test.
680 * testsuite/performance/20_util/memory_resource/pools.cc: New test.
681 * testsuite/util/testsuite_performance.h (time_counter): Allow
682 timer to be restarted.
684 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Fix
685 test for 32-bit targets. Test additional allocation sizes.
687 2018-11-14 Jonathan Wakely <jwakely@redhat.com>
689 * scripts/create_testsuite_files: Add special_functions to the list
690 of directories to search. Add comment referring to conformance.exp.
691 * testsuite/libstdc++-dg/conformance.exp: Add comment referring
692 to create_testsuite_files.
694 2018-11-13 Jonathan Wakely <jwakely@redhat.com>
696 * src/c++17/memory_resource.cc (select_num_pools): Fix off-by-one
697 error when block_size is equal to one of the values in the array.
699 * src/c++17/memory_resource.cc (_Pool::deallocate): Restore
700 attributes to parameters that are only used in assertions.
702 * src/c++17/memory_resource.cc (bitset::find_first_unset()): Remove
704 (bitset::get_first_unset()): Remove loop, if there's are unset bits
705 then _M_next_word refers to the first one and there's no need to loop.
706 (_Pool::_Pool(size_t, size_t), _Pool::block_size()): Remove dead code.
708 * src/c++17/memory_resource.cc (munge_options): Round up value of
709 largest_required_pool_block to multiple of smallest pool size. Round
710 excessively large values down to largest pool size.
711 (select_num_pools): Increase number of pools by one unless it exactly
712 matches requested largest_required_pool_block.
713 (__pool_resource::_M_alloc_pools()): Make largest pool size equal
714 largest_required_pool_block.
715 * testsuite/20_util/unsynchronized_pool_resource/options.cc: Check
716 that pool_options::largest_required_pool_block is set appropriately.
718 * src/c++17/memory_resource.cc (big_block): Improve comments.
719 (big_block::all_ones): Remove.
720 (big_block::big_block(size_t, size_t)): Use alloc_size.
721 (big_block::size()): Add comment, replace all_ones with equivalent
723 (big_block::align()): Shift value of correct type.
724 (big_block::alloc_size(size_t)): New function to round up size.
725 (__pool_resource::allocate(size_t, size_t)): Add comment.
726 (__pool_resource::deallocate(void*, size_t, size_t)): Likewise. Fix
727 incorrect assertion by using big_block::alloc_size(size_t).
728 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Add
729 more tests for unpooled allocations.
731 * src/c++17/memory_resource.cc (bitset::full()): Handle edge case
732 for _M_next_word maximum value.
733 (bitset::get_first_unset(), bitset::set(size_type)): Use
734 update_next_word() to update _M_next_word.
735 (bitset::update_next_word()): New function, avoiding wraparound of
736 unsigned _M_next_word member.
737 (bitset::max_word_index()): New function.
738 (chunk::chunk(void*, uint32_t, void*, size_t)): Add assertion.
739 (chunk::max_bytes_per_chunk()): New function.
740 (pool::replenish(memory_resource*, const pool_options&)): Prevent
741 _M_blocks_per_chunk from exceeding max_blocks_per_chunk or from
742 causing chunk::max_bytes_per_chunk() to be exceeded.
743 * testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc:
746 2018-11-12 Jason Merrill <jason@redhat.com>
748 * libsupc++/new (std::destroying_delete_t): New.
750 2018-11-12 Jonathan Wakely <jwakely@redhat.com>
753 * src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from
754 unsigned to uint32_t.
755 (chunk): Fix static assertion for 64-bit targets that aren't LP64.
756 (bigblock::all_ones): Fix undefined shift.
758 2018-11-11 Hans-Peter Nilsson <hp@axis.com>
760 PR libstdc++-v3/54005
761 * include/bits/atomic_base.h (__atomic_base<_TTp>::is_lock_free(),
762 __atomic_base<_PTp*>::is_lock_free()): Call __atomic_is_lock_free
763 with the type-derived _S_alignment instead of __alignof the object.
764 * include/std/atomic (atomic<T>::is_lock_free()): Likewise.
766 2018-11-11 Jonathan Wakely <jwakely@redhat.com>
768 Implement P0318R1 unwrap_ref_decay and unwrap_reference
769 * include/std/type_traits (unwrap_reference, unwrap_reference_t)
770 (unwrap_ref_decay, unwrap_ref_decay_t): New traits and aliases.
771 * testsuite/20_util/unwrap_reference/1.cc: New test.
772 * testsuite/20_util/unwrap_reference/2.cc: New test.
774 Implement P1007R3 std::assume_aligned
775 * include/std/memory (assume_aligned): Implement for C++17.
776 * testsuite/20_util/assume_aligned/1.cc: New test.
777 * testsuite/20_util/assume_aligned/2_neg.cc: New test.
778 * testsuite/20_util/assume_aligned/3.cc: New test.
780 2018-11-09 Jonathan Wakely <jwakely@redhat.com>
783 * include/bits/stl_uninitialized.h (__relocate_a_1): Do not call
784 memmove when there's nothing to copy (and pointers could be null).
786 2018-11-07 Hafiz Abid Qadeer <abidh@codesourcery.com>
788 * configure: Regenerated.
790 2018-11-07 Jonathan Wakely <jwakely@redhat.com>
792 * config/abi/pre/gnu.ver: Fix patterns for size_t parameters.
794 2018-11-06 Jonathan Wakely <jwakely@redhat.com>
796 Implement std::pmr::unsynchronized_pool_resource
797 * config/abi/pre/gnu.ver: Add new symbols.
798 * include/std/memory_resource (std::pmr::__pool_resource): New class.
799 (std::pmr::unsynchronized_pool_resource): New class.
800 * src/c++17/Makefile.am: Add -fimplicit-templates to flags for
802 * src/c++17/Makefile.in: Regenerate.
803 * src/c++17/memory_resource.cc (bitset, chunk, big_block): New
805 (__pool_resource::_Pool): Define new class.
806 (munge_options, pool_index, select_num_pools): New internal functions.
807 (__pool_resource::__pool_resource, __pool_resource::~__pool_resource)
808 (__pool_resource::allocate, __pool_resource::deallocate)
809 (__pool_resource::_M_alloc_pools): Define member functions.
810 (unsynchronized_pool_resource::unsynchronized_pool_resource)
811 (unsynchronized_pool_resource::~unsynchronized_pool_resource)
812 (unsynchronized_pool_resource::release)
813 (unsynchronized_pool_resource::_M_find_pool)
814 (unsynchronized_pool_resource::do_allocate)
815 (unsynchronized_pool_resource::do_deallocate): Define member
817 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: New
819 * testsuite/20_util/unsynchronized_pool_resource/is_equal.cc: New
821 * testsuite/20_util/unsynchronized_pool_resource/options.cc: New
823 * testsuite/20_util/unsynchronized_pool_resource/release.cc: New
826 2018-11-06 John Bytheway <jbytheway@gmail.com>
829 * include/debug/safe_sequence.tcc
830 (_Safe_sequence<>::_M_transfer_from_if): Skip transfer to self.
832 2018-10-31 Joseph Myers <joseph@codesourcery.com>
835 * Makefile.am: Include multilib.am.
836 * configure.ac: Remove AC_PREREQ.
837 * Makefile.in, aclocal.m4, configure, doc/Makefile.in,
838 include/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
839 python/Makefile.in, src/Makefile.in, src/c++11/Makefile.in,
840 src/c++17/Makefile.in, src/c++98/Makefile.in,
841 src/filesystem/Makefile.in, testsuite/Makefile.in: Regenerate.
843 2018-10-31 Jonathan Wakely <jwakely@redhat.com>
845 * testsuite/20_util/pair/87822.cc: Test deeper nesting.
848 * include/bits/stl_pair.h (__pair_base): Change to class template.
849 (pair): Make base class type depend on template parameters.
850 * testsuite/20_util/pair/87822.cc: New test.
852 2018-10-30 Marek Polacek <polacek@redhat.com>
854 Implement P0892R2, explicit(bool).
855 * testsuite/20_util/any/cons/explicit.cc: Adjust dg-error.
856 * testsuite/20_util/pair/cons/explicit_construct.cc: Likewise.
857 * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
859 2018-10-30 Jonathan Wakely <jwakely@redhat.com>
862 * include/bits/forward_list.h (_Fwd_list_impl::_Fwd_list_impl()): Use
863 trait in exception-specification instead of possibly invalid
865 * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
867 * include/bits/stl_list.h (_List_impl::_List_impl()): Likewise.
868 * include/bits/stl_vector.h (_Vector_impl::_Vector_impl()): Likewise.
869 * testsuite/23_containers/forward_list/cons/87809.cc: New test.
870 * testsuite/23_containers/list/cons/87809.cc: New test.
871 * testsuite/23_containers/vector/bool/cons/87809.cc: New test.
872 * testsuite/23_containers/vector/cons/87809.cc: New test.
875 * include/tr2/dynamic_bitset (dynamic_bitset::push_back): When there
876 are no unused bits in the last block, append a new block with the
877 right value so the bit doesn't need to be set. Only increment size
878 after setting the new bit, not before.
879 * testsuite/tr2/dynamic_bitset/pr87784.cc: New test.
881 2018-10-29 David Malcolm <dmalcolm@redhat.com>
883 * testsuite/17_intro/using_namespace_std_exp_neg.cc: Remove
884 "expected namespace-name before" error.
885 * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Likewise.
887 2018-10-28 François Dumont <fdumont@gcc.gnu.org>
889 * testsuite/23_containers/deque/48101_neg.cc: Remove dg-prune-output
890 'std' from regex pattern for versioned namespace compatibility.
891 * testsuite/23_containers/vector/48101_neg.cc: Likewise.
892 * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
894 2018-10-25 Jonathan Wakely <jwakely@redhat.com>
897 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
898 (basic_string::operator=(basic_string&&)): For short strings copy the
899 buffer inline. Only fall back to using assign(const basic_string&) to
900 do a deep copy when reallocation is needed.
901 * testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
903 * testsuite/21_strings/basic_string/modifiers/assign/char/
904 move_assign_optim.cc: New test.
905 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
907 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
908 move_assign_optim.cc: New test.
910 2018-10-25 Marc Glisse <marc.glisse@inria.fr>
913 * include/bits/alloc_traits.h (_S_construct, _S_destroy, construct,
914 destroy): Add noexcept specification.
915 * include/bits/allocator.h (construct, destroy): Likewise.
916 * include/ext/alloc_traits.h (construct, destroy): Likewise.
917 * include/ext/malloc_allocator.h (construct, destroy): Likewise.
918 * include/ext/new_allocator.h (construct, destroy): Likewise.
919 * include/bits/stl_uninitialized.h (__relocate_object_a, __relocate_a,
920 __relocate_a_1): New functions.
921 (__is_trivially_relocatable): New class.
922 * include/bits/stl_vector.h (__use_relocate): New static member.
923 * include/bits/vector.tcc (reserve, _M_realloc_insert,
924 _M_default_append): Use __relocate_a.
925 (reserve, _M_assign_aux, _M_realloc_insert, _M_fill_insert,
926 _M_default_append, _M_range_insert): Move _GLIBCXX_ASAN_ANNOTATE_REINIT
928 * testsuite/23_containers/vector/modifiers/push_back/49836.cc:
929 Replace CopyConsOnlyType with DelAnyAssign.
931 2018-10-24 François Dumont <fdumont@gcc.gnu.org>
933 * include/debug/safe_unordered_container.h
934 (_Safe_unordered_container<>::_M_invalidate_locals): Take lambda
935 parameter type from local end variable.
936 (_Safe_unordered_container<>::_M_invalidate_all): Likewise.
937 * include/debug/unordered_map
938 (unordered_map<>::begin()): Use C++11 direct initialization.
939 (unordered_map<>::end()): Likewise.
940 (unordered_map<>::cbegin()): Likewise.
941 (unordered_map<>::cend()): Likewise.
942 (unordered_map<>::begin(size_type)): Likewise.
943 (unordered_map<>::end(size_type)): Likewise.
944 (unordered_map<>::cbegin(size_type)): Likewise.
945 (unordered_map<>::cend(size_type)): Likewise.
946 (unordered_map<>::emplace<>(_Args&&...)): Likewise.
947 (unordered_map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
948 (unordered_map<>::insert(const value_type&)): Likewise.
949 (unordered_map<>::insert(value_type&&)): Likewise.
950 (unordered_map<>::insert<>(_Pair&&)): Likewise.
951 (unordered_map<>::insert(const_iterator, const value_type&)): Likewise.
952 (unordered_map<>::insert(const_iterator, value_type&&)): Likewise.
953 (unordered_map<>::insert<>(const_iterator, _Pair&&)): Likewise.
954 (unordered_map<>::try_emplace<>(const key_type&, _Args&&...)): Likewise.
955 (unordered_map<>::try_emplace<>(key_type&&, _Args&&...)): Likewise.
956 (unordered_map<>::try_emplace<>(const_iterator, const key_type&,
957 _Args&&...)): Likewise.
958 (unordered_map<>::try_emplace<>(const_iterator, key_type&&,
959 _Args&&...)): Likewise.
960 (unordered_map<>::insert_or_assign<>(const key_type&, _Obj&&)): Likewise.
961 (unordered_map<>::insert_or_assign<>(key_type&&, _Obj&&)): Likewise.
962 (unordered_map<>::insert_or_assign<>(const_iterator, const key_type&,
964 (unordered_map<>::insert_or_assign<>(const_iterator, key_type&&,
966 (unordered_map<>::insert(note_type&&)): Likewise.
967 (unordered_map<>::find(const key_type&)): Likewise.
968 (unordered_map<>::equal_range(const key_type&)): Likewise.
969 (unordered_map<>::_M_extract): New.
970 (unordered_map<>::extract(const_iterator)): Use latter.
971 (unordered_map<>::extract(const key_type&)): Likewise.
972 (unordered_map<>::_M_erase): New.
973 (unordered_map<>::erase(const key_type&)): Use latter.
974 (unordered_map<>::erase(const_iterator)): Likewise.
975 (unordered_map<>::erase(iterator)): Likewise.
976 (unordered_map<>::_M_invalidate): New.
977 (unordered_map<>::erase(const_iterator, const_iterator)): Use latter.
978 (unordered_multimap<>::begin()): Use C++11 direct initialization.
979 (unordered_multimap<>::end()): Likewise.
980 (unordered_multimap<>::cbegin()): Likewise.
981 (unordered_multimap<>::cend()): Likewise.
982 (unordered_multimap<>::begin(size_type)): Likewise.
983 (unordered_multimap<>::end(size_type)): Likewise.
984 (unordered_multimap<>::cbegin(size_type)): Likewise.
985 (unordered_multimap<>::cend(size_type)): Likewise.
986 (unordered_multimap<>::emplace<>(_Args&&...)): Likewise.
987 (unordered_multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
988 (unordered_multimap<>::insert(const value_type&)): Likewise.
989 (unordered_multimap<>::insert(const_iterator, const value_type&)): Likewise.
990 (unordered_multimap<>::insert(const_iterator, value_type&&)): Likewise.
991 (unordered_multimap<>::insert<>(_Pair&&)): Likewise.
992 (unordered_multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
993 (unordered_multimap<>::insert(note_type&&)): Likewise.
994 (unordered_multimap<>::insert(const_iterator, note_type&&)): Likewise.
995 (unordered_multimap<>::find(const key_type&)): Likewise.
996 (unordered_multimap<>::equal_range(const key_type&)): Likewise.
997 (unordered_multimap<>::_M_extract): New.
998 (unordered_multimap<>::extract(const_iterator)): Use latter.
999 (unordered_multimap<>::extract(const key_type&)): Likewise.
1000 (unordered_multimap<>::_M_erase): New.
1001 (unordered_multimap<>::erase(const_iterator)): Likewise.
1002 (unordered_multimap<>::erase(iterator)): Likewise.
1003 (unordered_multimap<>::_M_invalidate): New.
1004 (unordered_multimap<>::erase(const key_type&)): Use latter.
1005 (unordered_multimap<>::erase(const_iterator, const_iterator)): Likewise.
1006 * include/debug/unordered_set
1007 (unordered_set<>::begin()): Use C++11 direct initialization.
1008 (unordered_set<>::end()): Likewise.
1009 (unordered_set<>::cbegin()): Likewise.
1010 (unordered_set<>::cend()): Likewise.
1011 (unordered_set<>::begin(size_type)): Likewise.
1012 (unordered_set<>::end(size_type)): Likewise.
1013 (unordered_set<>::cbegin(size_type)): Likewise.
1014 (unordered_set<>::cend(size_type)): Likewise.
1015 (unordered_set<>::emplace<>(_Args&&...)): Likewise.
1016 (unordered_set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1017 (unordered_set<>::insert(const value_type&)): Likewise.
1018 (unordered_set<>::insert(value_type&&)): Likewise.
1019 (unordered_set<>::insert(const_iterator, const value_type&)): Likewise.
1020 (unordered_set<>::insert(const_iterator, value_type&&)): Likewise.
1021 (unordered_set<>::insert(note_type&&)): Likewise.
1022 (unordered_set<>::insert(const_iterator, note_type&&)): Likewise.
1023 (unordered_set<>::find(const key_type&)): Likewise.
1024 (unordered_set<>::equal_range(const key_type&)): Likewise.
1025 (unordered_set<>::_M_extract): New.
1026 (unordered_set<>::extract(const_iterator)): Use latter.
1027 (unordered_set<>::extract(const key_type&)): Likewise.
1028 (unordered_set<>::_M_erase): New.
1029 (unordered_set<>::erase(const key_type&)): Use latter.
1030 (unordered_set<>::erase(const_iterator)): Likewise.
1031 (unordered_set<>::erase(iterator)): Likewise.
1032 (unordered_set<>::_M_invalidate): New.
1033 (unordered_set<>::erase(const_iterator, const_iterator)): Use latter.
1034 (unordered_multiset<>::begin()): Use C++11 direct initialization.
1035 (unordered_multiset<>::end()): Likewise.
1036 (unordered_multiset<>::cbegin()): Likewise.
1037 (unordered_multiset<>::cend()): Likewise.
1038 (unordered_multiset<>::begin(size_type)): Likewise.
1039 (unordered_multiset<>::end(size_type)): Likewise.
1040 (unordered_multiset<>::cbegin(size_type)): Likewise.
1041 (unordered_multiset<>::cend(size_type)): Likewise.
1042 (unordered_multiset<>::emplace<>(_Args&&...)): Likewise.
1043 (unordered_multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1044 (unordered_multiset<>::insert(const value_type&)): Likewise.
1045 (unordered_multiset<>::insert(const_iterator, const value_type&)): Likewise.
1046 (unordered_multiset<>::insert(value_type&&)): Likewise.
1047 (unordered_multiset<>::insert(const_iterator, value_type&&)): Likewise.
1048 (unordered_multiset<>::insert(node_type&&)): Likewise.
1049 (unordered_multiset<>::insert(const_iterator, node_type&&)): Likewise.
1050 (unordered_multiset<>::find(const key_type&)): Likewise.
1051 (unordered_multiset<>::equal_range(const key_type&)): Likewise.
1052 (unordered_multiset<>::_M_extract): New.
1053 (unordered_multiset<>::extract(const_iterator)): Use latter.
1054 (unordered_multiset<>::extract(const key_type&)): Likewise.
1055 (unordered_multiset<>::_M_erase): New.
1056 (unordered_multiset<>::erase(const_iterator)): Likewise.
1057 (unordered_multiset<>::erase(iterator)): Likewise.
1058 (unordered_multiset<>::_M_invalidate): New.
1059 (unordered_multiset<>::erase(const key_type&)): Use latter.
1060 (unordered_multiset<>::erase(const_iterator, const_iterator)): Likewise.
1062 * include/c_global/cstddef: Add versioned namespace.
1064 2018-10-23 Jonathan Wakely <jwakely@redhat.com>
1067 * include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
1068 not delegate to default constructor.
1069 (unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
1070 * testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.
1072 2018-10-20 François Dumont <fdumont@gcc.gnu.org>
1074 * testsuite/util/testsuite_containers.h
1075 (forward_members_unordered<>::forward_members_unordered
1076 (const value_type&)): Add local_iterator pre and post increment checks.
1077 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 new symbol.
1079 2018-10-19 Jonathan Wakely <jwakely@redhat.com>
1081 * testsuite/23_containers/array/requirements/explicit_instantiation/
1082 3.cc: Skip test when compiled with a -std=c++NN strict mode.
1083 * testsuite/23_containers/deque/requirements/explicit_instantiation/
1085 * testsuite/23_containers/forward_list/requirements/
1086 explicit_instantiation/3.cc: Likewise.
1087 * testsuite/23_containers/list/requirements/explicit_instantiation/
1089 * testsuite/23_containers/map/requirements/explicit_instantiation/
1091 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
1093 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
1095 * testsuite/23_containers/set/requirements/explicit_instantiation/
1097 * testsuite/23_containers/unordered_map/requirements/
1098 explicit_instantiation/3.cc: Likewise.
1099 * testsuite/23_containers/unordered_multimap/requirements/
1100 explicit_instantiation/3.cc: Likewise.
1101 * testsuite/23_containers/unordered_multiset/requirements/
1102 explicit_instantiation/3.cc: Likewise.
1103 * testsuite/23_containers/unordered_set/requirements/
1104 explicit_instantiation/3.cc: Likewise.
1105 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
1107 * testsuite/23_containers/vector/requirements/explicit_instantiation/
1110 * testsuite/23_containers/deque/48101_neg.cc: Prune additional errors
1111 printed when __STRICT_ANSI__ is defined.
1112 * testsuite/23_containers/forward_list/48101_neg.cc: Likewise.
1113 * testsuite/23_containers/list/48101_neg.cc: Likewise.
1114 * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
1115 * testsuite/23_containers/set/48101_neg.cc: Likewise.
1116 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
1117 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
1118 * testsuite/23_containers/vector/48101_neg.cc: Likewise.
1120 * testsuite/23_containers/forward_list/requirements/
1121 explicit_instantiation/5.cc [__STRICT_ANSI__]: Don't test non-standard
1123 * testsuite/23_containers/list/requirements/explicit_instantiation/
1124 5.cc [__STRICT_ANSI__]: Likewise.
1125 * testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
1126 [__STRICT_ANSI__]: Likewise.
1127 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
1128 5.cc [__STRICT_ANSI__]: Likewise.
1129 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
1130 5.cc [__STRICT_ANSI__]: Likewise.
1131 * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
1132 [__STRICT_ANSI__]: Likewise.
1133 * testsuite/23_containers/unordered_map/requirements/debug_container.cc
1134 [__STRICT_ANSI__]: Likewise.
1135 * testsuite/23_containers/unordered_map/requirements/
1136 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
1137 * testsuite/23_containers/unordered_multimap/requirements/
1138 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
1139 * testsuite/23_containers/unordered_multiset/requirements/
1140 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
1141 * testsuite/23_containers/unordered_set/requirements/
1142 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
1144 * testsuite/20_util/scoped_allocator/1.cc: Use allocator with correct
1145 value type for the container.
1146 * testsuite/23_containers/forward_list/cons/14.cc: Likewise.
1147 * testsuite/23_containers/map/56613.cc: Likewise.
1148 * testsuite/23_containers/unordered_map/55043.cc: Likewise.
1149 * testsuite/23_containers/unordered_map/allocator/copy.cc: Likewise.
1150 * testsuite/23_containers/unordered_map/allocator/copy_assign.cc:
1152 * testsuite/23_containers/unordered_map/allocator/minimal.cc:
1154 * testsuite/23_containers/unordered_map/allocator/move.cc: Likewise.
1155 * testsuite/23_containers/unordered_map/allocator/move_assign.cc:
1157 * testsuite/23_containers/unordered_map/allocator/noexcept.cc:
1159 * testsuite/23_containers/unordered_map/cons/81891.cc: Likewise.
1160 * testsuite/23_containers/unordered_map/requirements/exception/
1162 * testsuite/23_containers/unordered_map/requirements/exception/
1163 generation_prohibited.cc: Likewise.
1164 * testsuite/23_containers/unordered_map/requirements/exception/
1165 propagation_consistent.cc: Likewise.
1166 * testsuite/23_containers/unordered_multimap/55043.cc: Likewise.
1167 * testsuite/23_containers/unordered_multimap/allocator/copy.cc:
1169 * testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc:
1171 * testsuite/23_containers/unordered_multimap/allocator/minimal.cc:
1173 * testsuite/23_containers/unordered_multimap/allocator/move.cc:
1175 * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc:
1177 * testsuite/23_containers/unordered_multimap/allocator/noexcept.cc:
1179 * testsuite/23_containers/unordered_multimap/requirements/exception/
1181 * testsuite/23_containers/unordered_multimap/requirements/exception/
1182 generation_prohibited.cc: Likewise.
1183 * testsuite/23_containers/unordered_multimap/requirements/exception/
1184 propagation_consistent.cc: Likewise.
1185 * testsuite/23_containers/unordered_multimap/requirements/
1186 explicit_instantiation/5.cc: Likewise.
1187 * testsuite/ext/malloc_allocator/sanity.cc: Likewise.
1189 * ext/special_functions/airy_ai/check_nan.cc: Skip test for
1190 non-standard extension when a strict -std=c++NN dialect is used.
1191 * ext/special_functions/airy_ai/check_value.cc: Likewise.
1192 * ext/special_functions/airy_ai/compile.cc: Likewise.
1193 * ext/special_functions/airy_bi/check_nan.cc: Likewise.
1194 * ext/special_functions/airy_bi/check_value.cc: Likewise.
1195 * ext/special_functions/airy_bi/compile.cc: Likewise.
1196 * ext/special_functions/conf_hyperg/check_nan.cc: Likewise.
1197 * ext/special_functions/conf_hyperg/check_value.cc: Likewise.
1198 * ext/special_functions/conf_hyperg/compile.cc: Likewise.
1199 * ext/special_functions/hyperg/check_nan.cc: Likewise.
1200 * ext/special_functions/hyperg/check_value.cc: Likewise.
1201 * ext/special_functions/hyperg/compile.cc: Likewise.
1203 * testsuite/23_containers/list/requirements/explicit_instantiation/
1204 5_c++0x.cc: Remove redundant test that is functionally identical to
1206 * testsuite/23_containers/map/requirements/explicit_instantiation/
1207 5_c++0x.cc: Likewise.
1208 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
1209 5_c++0x.cc: Likewise.
1210 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
1211 5_c++0x.cc: Likewise.
1212 * testsuite/23_containers/set/requirements/explicit_instantiation/
1213 5_c++0x.cc: Likewise.
1215 * include/bits/regex_executor.tcc (_Backref_matcher::_M_apply): Use
1216 _GLIBCXX_STD_A to refer to normal mode algorithms.
1217 * testsuite/28_regex/headers/regex/parallel_mode.cc: New test.
1218 * testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Remove empty
1221 * include/debug/map.h (map::erase(iterator)): Add abi-tag so that
1222 C++11 version mangles differently from incompatible C++98 version.
1223 * include/debug/multimap.h (multimap::erase(iterator)): Likewise.
1224 * include/debug/multiset.h (multiset::erase(iterator))
1225 (multiset::erase(const_iterator, const_iterator)): Likewise.
1226 * include/debug/set.h (set::erase(iterator))
1227 (multiset::erase(const_iterator, const_iterator)): Likewise.
1229 2018-10-18 Jonathan Wakely <jwakely@redhat.com>
1231 * testsuite/20_util/duration/cons/2.cc: Add -ffloat-store to fix
1232 failure when compiled without optimisation.
1233 * testsuite/ext/profile/mutex_extensions_neg.cc: Prune additional
1234 errors caused by C++17 std::pmr alias templates.
1237 * config/locale/gnu/monetary_members.cc
1238 (moneypunct<char, true>::_M_initialize_moneypunct): Use
1239 __narrow_multibyte_chars to convert multibyte thousands separators
1241 * config/locale/gnu/numeric_members.cc
1242 (numpunct<char>::_M_initialize_numpunct): Likewise.
1243 (__narrow_multibyte_chars): New function.
1246 * include/bits/valarray_array.h (__valarray_sum): Use first element
1247 to initialize accumulator instead of value-initializing it.
1248 (__valarray_product<_Tp>): Move to ...
1249 * src/c++98/valarray.cc (__valarray_product<_Tp>): Here. Use first
1250 element to initialize accumulator.
1251 (__valarray_product(const valarray<size_t>&)): Remove const_cast made
1252 unnecessary by LWG 389.
1253 * testsuite/26_numerics/valarray/87641.cc: New test.
1255 2018-10-18 François Dumont <fdumont@gcc.gnu.org>
1258 2018-10-08 François Dumont <fdumont@gcc.gnu.org>
1260 * include/debug/list (list<>::cbegin()): Use C++11 direct
1262 (list<>::cend()): Likewise.
1263 (list<>::erase(const_iterator, const_iterator)): Ensure consistent
1264 iterator comparisons.
1265 (list<>::splice(const_iterator, list&&, const_iterator,
1266 const_iterator)): Likewise.
1269 2018-10-15 François Dumont <fdumont@gcc.gnu.org>
1271 * include/debug/vector (vector<>::cbegin()): Use C++11 direct
1273 (vector<>::cend()): Likewise.
1274 (vector<>::insert(const_iterator, const _Tp&)): Use consistent
1275 iterator comparison.
1276 (vector<>::erase(const_iterator)): Likewise.
1277 (vector<>::erase(const_iterator, const_iterator)): Likewise.
1279 2018-10-17 Ville Voutilainen <ville.voutilainen@gmail.com>
1282 * include/std/variant (__select_index): Fix an off-by-one.
1283 * testsuite/20_util/variant/87619.cc: New.
1285 2018-10-16 Jonathan Wakely <jwakely@redhat.com>
1287 * include/bits/random.h (random_device) [!_GLIBCXX_USE_DEV_RANDOM]:
1288 Fix default constructor to call correct function.
1290 * testsuite/experimental/net/internet/address/v4/creation.cc: Do not
1291 declare ip in global namespace, to avoid collision with struct ip
1292 defined in <netinet/ip.h>.
1294 * include/experimental/bits/net.h: Move versioned namespace macros
1295 to correct location.
1296 * include/experimental/buffer: Likewise.
1297 * include/experimental/executor: Likewise.
1298 * include/experimental/internet: Likewise.
1299 * include/experimental/io_context: Likewise.
1300 * include/experimental/netfwd: Likewise.
1301 * include/experimental/socket: Likewise.
1302 * include/experimental/timer: Likewise.
1304 * config.h.in: Regenerate.
1305 * configure: Regenerate.
1306 * configure.ac: Check for headers used by Networking TS.
1307 * include/experimental/executor: Include <condition_variable>
1309 * include/experimental/internet: Use autoconf macros for available
1310 headers. Include <sys/socket.h> for. Remove <cstring> and use
1311 __builtin_memcpy and __builtin_strchr.
1312 (resolver_errc) [!_GLIBCXX_HAVE_NETDB_H]: Do not define.
1313 (address_v4::to_string, address_v6::to_string)
1314 [!_GLIBCXX_HAVE_ARPA_INET_H]: Likewise.
1315 (basic_resolver_results) [!_GLIBCXX_HAVE_NETDB_H]: Make private
1316 constructors report errors.
1317 [!_GLIBCXX_HAVE_NETINET_TCP_H] (tcp::no_delay): Do not define.
1318 * include/experimental/io_context: Likewise.
1319 * include/experimental/socket: Likewise.
1320 [!_GLIBCXX_HAVE_SYS_SOCKET_H, !_GLIBCXX_HAVE_POLL_H] (socket_base): Do
1321 not define nested types when relevant header not available.
1322 (__socket_impl::native_non_blocking) [!_GLIBCXX_HAVE_FCNTL_H]: Report
1324 (__basic_socket_impl::open, __basic_socket_impl::local_endpoint)
1325 (__basic_socket_impl::bind) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1326 (__basic_socket_impl::io_control) [!_GLIBCXX_HAVE_SYS_IOCTL_H]:
1328 (basic_socket::at_mark, basic_socket::shutdown)
1329 (basic_socket::remote_endpoint, basic_socket::connect)
1330 (basic_socket::async_connect) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1331 (basic_socket::available) [_GLIBCXX_HAVE_SYS_IOCTL_H]: Check macro
1332 for <sys/ioctl.h> availability.
1333 (basic_socket::wait) [!_GLIBCXX_HAVE_POLL_H]: Likewise.
1334 (basic_datagram_socket::receive, basic_datagram_socket::async_receive)
1335 (basic_datagram_socket::receive_from)
1336 (basic_datagram_socket::async_receive_from)
1337 (basic_datagram_socket::send, basic_datagram_socket::async_send)
1338 (basic_datagram_socket::send_to, basic_datagram_socket::async_send_to)
1339 [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1340 (basic_stream_socket::receive, basic_stream_socket::async_receive)
1341 (basic_stream_socket::send, basic_stream_socket::async_send)
1342 [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1343 (basic_socket_acceptor::listen, basic_socket_acceptor::accept)
1344 (basic_socket_acceptor::async_accept) [!_GLIBCXX_HAVE_SYS_SOCKET_H]:
1346 (basic_socket_acceptor::wait) [!_GLIBCXX_HAVE_POLL_H]: Likewise.
1348 * testsuite/experimental/net/headers.cc: Remove dg-options.
1349 * testsuite/experimental/net/buffer/arithmetic.cc: Replace dg-options
1350 with dg-do using effective target.
1351 * testsuite/experimental/net/buffer/const.cc: Likewise.
1352 * testsuite/experimental/net/buffer/creation.cc: Likewise.
1353 * testsuite/experimental/net/buffer/mutable.cc: Likewise.
1354 * testsuite/experimental/net/buffer/size.cc: Likewise.
1355 * testsuite/experimental/net/buffer/traits.cc: Likewise.
1356 * testsuite/experimental/net/execution_context/use_service.cc:
1358 * testsuite/experimental/net/internet/address/v4/comparisons.cc:
1360 * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
1361 * testsuite/experimental/net/internet/address/v4/creation.cc:
1363 * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
1364 * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
1365 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
1367 * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
1369 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
1370 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
1371 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
1373 * include/experimental/socket (basic_socket::at_mark): Add missing
1376 * acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Replace with ...
1377 (GLIBCXX_CHECK_DEV_RANDOM): New macro with more descriptive name.
1378 Define _GLIBCXX_USE_DEV_RANDOM as well as _GLIBCXX_USE_RANDOM_TR1.
1379 * config.h.in: Regenerate.
1380 * configure: Regenerate.
1381 * configure.ac: Use GLIBCXX_CHECK_DEV_RANDOM instead of
1382 GLIBCXX_CHECK_RANDOM_TR1.
1383 crossconfig.m4: Likewise.
1384 * include/bits/random.h (random_device): Use _GLIBCXX_USE_DEV_RANDOM
1385 instead of _GLIBCXX_USE_RANDOM_TR1.
1386 * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
1388 2018-10-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1390 * testsuite/lib/dg-options.exp (add_options_for_net_ts): New proc.
1391 * testsuite/experimental/net/internet/address/v4/comparisons.cc:
1392 Add dg-add-options net_ts.
1393 * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
1394 * testsuite/experimental/net/internet/address/v4/creation.cc: Likewise.
1395 * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
1396 * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
1397 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise.
1398 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise.
1400 2018-10-16 Jonathan Wakely <jwakely@redhat.com>
1402 * testsuite/20_util/duration/literals/range_neg.cc: Adjust pruned
1403 diagnostic to account for quotes around 'constexpr'.
1404 * testsuite/23_containers/deque/capacity/max_size.cc: Define static
1406 * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
1409 * config/abi/pre/gnu.ver: Fix typos in patterns for basic_stringbuf.
1410 * testsuite/27_io/basic_stringbuf/cons/char/default.cc: Disable
1411 optimisation to check constructor definition can be linked to.
1412 * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: Likewise.
1414 2018-10-15 Jonathan Wakely <jwakely@redhat.com>
1416 * testsuite/22_locale/numpunct/members/char/3.cc: Adjust test to
1417 account for change to glibc it_IT localedata (glibc bz#10797).
1420 * src/c++11/cxx11-shim_facets.cc: Suppress -Wabi warnings.
1422 2018-10-15 François Dumont <fdumont@gcc.gnu.org>
1424 * include/debug/vector (vector<>::cbegin()): Use C++11 direct
1426 (vector<>::cend()): Likewise.
1427 (vector<>::emplace(const_iterator, _Args&&...)): Likewise and use
1428 consistent iterator comparison.
1429 (vector<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
1430 (vector<>::insert(const_iterator, _InputIterator, _InputIterator)):
1432 (vector<>::erase(const_iterator)): Likewise.
1433 (vector<>::erase(const_iterator, const_iterator)): Likewise.
1435 2018-10-12 Jonathan Wakely <jwakely@redhat.com>
1437 Initial commit of Networking TS implementation.
1438 * include/Makefile.am: Add new headers.
1439 * include/Makefile.in: Regenerate.
1440 * include/experimental/bits/net.h: New header for common
1441 implementation details of Networking TS.
1442 * include/experimental/buffer: New header.
1443 * include/experimental/executor: New header.
1444 * include/experimental/internet: New header.
1445 * include/experimental/io_context: New header.
1446 * include/experimental/net: New header.
1447 * include/experimental/netfwd: New header.
1448 * include/experimental/socket: New header.
1449 * include/experimental/timer: New header.
1450 * testsuite/experimental/net/buffer/arithmetic.cc: New test.
1451 * testsuite/experimental/net/buffer/const.cc: New test.
1452 * testsuite/experimental/net/buffer/creation.cc: New test.
1453 * testsuite/experimental/net/buffer/mutable.cc: New test.
1454 * testsuite/experimental/net/buffer/size.cc: New test.
1455 * testsuite/experimental/net/buffer/traits.cc: New test.
1456 * testsuite/experimental/net/execution_context/use_service.cc: New
1458 * testsuite/experimental/net/headers.cc: New test.
1459 * testsuite/experimental/net/internet/address/v4/comparisons.cc: New
1461 * testsuite/experimental/net/internet/address/v4/cons.cc: New test.
1462 * testsuite/experimental/net/internet/address/v4/creation.cc: New
1464 * testsuite/experimental/net/internet/address/v4/members.cc: New
1466 * testsuite/experimental/net/internet/resolver/base.cc: New test.
1467 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: New
1469 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: New
1471 * testsuite/experimental/net/timer/waitable/cons.cc: New test.
1472 * testsuite/experimental/net/timer/waitable/dest.cc: New test.
1473 * testsuite/experimental/net/timer/waitable/ops.cc: New test.
1476 * include/experimental/memory_resource (__resource_adaptor_imp): Do
1477 not allocate sizes smaller than alignment when relying on guaranteed
1479 * testsuite/experimental/memory_resource/new_delete_resource.cc:
1480 Adjust expected number of bytes allocated for alignof(max_align_t).
1482 2018-10-11 François Dumont <fdumont@gcc.gnu.org>
1484 * include/debug/forward_list
1485 (forward_list<>::before_begin()): Use C++11 direct initialization.
1486 (forward_list<>::begin()): Likewise.
1487 (forward_list<>::end()): Likewise.
1488 (forward_list<>::cbefore_begin()): Likewise.
1489 (forward_list<>::cbegin()): Likewise.
1490 (forward_list<>::cend()): Likewise.
1491 (forward_list<>::emplace_after<>(const_iterator, _Args&&...)): Likewise.
1492 (forward_list<>::insert_after(const_iterator, const _Tp&)): Likewise.
1493 (forward_list<>::insert_after(const_iterator, _Tp&&)): Likewise.
1494 (forward_list<>::insert_after(const_iterator, size_type, const _Tp&)):
1496 (forward_list<>::insert_after(const_iterator, initializer_list<>)):
1498 (forward_list<>::erase_after(const_iterator)): Likewise.
1499 (forward_list<>::erase_after(const_iterator, const_iterator)): Likewise
1500 and ensure consistent iterator comparison.
1502 * include/bits/forward_list.h
1503 (_Fwd_list_iterator<>::operator==): Replace member function with inline
1505 (_Fwd_list_iterator<>::operator!=): Likewise.
1506 (_Fwd_list_const_iterator<>::operator==): Likewise.
1507 (_Fwd_list_const_iterator<>::operator!=): Likewise.
1508 (operator==(const _Fwd_list_iterator<>&,
1509 const _Fwd_list_const_iterator<>&)): Remove.
1510 (operator!=(const _Fwd_list_iterator<>&,
1511 const _Fwd_list_const_iterator<>&)): Remove.
1512 (forward_list<>::_Node): Take typedef from base type.
1513 (forward_list<>::iterator): Likewise.
1514 (forward_list<>::const_iterator): Likewise.
1516 2018-10-11 Jonathan Wakely <jwakely@redhat.com>
1519 * src/c++11/thread.cc (this_thread::__sleep_for)
1520 [_GLIBCXX_HAVE_SLEEP]: Only call sleep for non-zero values.
1521 Loop while sleep call is interrupted and until steady_clock
1522 shows requested duration has elapsed.
1523 (!_GLIBCXX_HAVE_USLEEP]: Use the _GLIBCXX_HAVE_SLEEP code path, but
1524 avoiding the usleep call.
1525 * testsuite/30_threads/this_thread/60421.cc: Test repeated
1526 signal interruptions.
1528 * include/bits/allocator.h
1529 (operator==(const allocator<_Tp>&, const allocator<_Tp>))
1530 (operator!=(const allocator<_Tp>&, const allocator<_Tp>)): Replace
1531 with inline friends.
1532 * include/ext/debug_allocator.h (operator==, operator!=): Replace
1533 with inline friend functions that compare to rebound allocators.
1534 * include/ext/malloc_allocator.h (operator==, operator!=): Likewise.
1535 * include/ext/new_allocator.h (operator==, operator!=): Likewise.
1536 * testsuite/ext/debug_allocator/eq.cc: New test.
1537 * testsuite/ext/ext_pointer/alloc_eq.cc: New test.
1538 * testsuite/ext/malloc_allocator/eq.cc: New test.
1539 * testsuite/ext/new_allocator/eq.cc: New test.
1541 2018-10-10 Jonathan Wakely <jwakely@redhat.com>
1544 * include/bits/stl_vector.h (vector::_S_max_size): Limit size to
1545 PTRDIFF_MAX / sizeof(value_type).
1546 * include/ext/malloc_allocator.h (malloc_allocator::max_size):
1548 * include/ext/new_allocator.h (new_allocator::max_size): Likewise.
1549 * testsuite/23_containers/vector/allocator/minimal.cc: Adjust
1550 expected value for max_size().
1551 * testsuite/23_containers/vector/capacity/87544.cc: New test.
1553 2018-10-09 François Dumont <fdumont@gcc.gnu.org>
1555 * include/bits/stl_list.h
1556 (_List_operator<>::operator==): Replace member function with inline
1558 (_List_operator<>::operator!=): Likewise.
1559 (_List_const_operator<>::operator==): Likewise.
1560 (_List_const_operator<>::operator!=): Likewise.
1561 (operator==(const _List_iterator<>&, const _List_const_iterator<>&)):
1563 (operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
1566 2018-10-09 Jonathan Wakely <jwakely@redhat.com>
1568 * include/bits/stringfwd.h (string, wstring, u16string, u32string):
1569 Define typedefs outside of __cxx11 inline namespace.
1570 * python/libstdcxx/v6/printers.py (register_type_printers): Also
1571 register printers for typedefs in new location.
1573 2018-10-08 Jonathan Wakely <jwakely@redhat.com>
1576 * testsuite/experimental/functional/87538.cc: New test.
1579 * include/std/functional (_Not_fn::operator()): Check value of
1580 __is_nothrow_invocable as well.
1581 * testsuite/20_util/function_objects/not_fn/87538.cc: New test.
1583 2018-10-08 François Dumont <fdumont@gcc.gnu.org>
1585 * include/debug/list (list<>::cbegin()): Use C++11 direct
1587 (list<>::cend()): Likewise.
1588 (list<>::emplace<>(const_iterator, _Args&&...)): Likewise.
1589 (list<>::insert(const_iterator, initializer_list<>)): Likewise.
1590 (list<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
1591 (list<>::erase(const_iterator, const_iterator)): Ensure consistent
1592 iterator comparisons.
1593 (list<>::splice(const_iterator, list&&, const_iterator,
1594 const_iterator)): Likewise.
1596 2018-10-05 François Dumont <fdumont@gcc.gnu.org>
1598 * include/bits/stl_tree.h
1599 (_Rb_tree_iterator<>::operator==): Make inline friend.
1600 (_Rb_tree_iterator<>::operator!=): Likewise.
1601 (_Rb_tree_const_iterator<>::operator==): Likewise.
1602 (_Rb_tree_const_iterator<>::operator!=): Likewise.
1603 (operator==(const _Rb_tree_iterator<>&,
1604 const _Rb_tree_const_iterator&)): Remove.
1605 (operator!=(const _Rb_tree_iterator<>&,
1606 const _Rb_tree_const_iterator&)): Remove.
1607 (operator==(const _Rb_tree<>&, const _Rb_tree<>&)): Make inline friend.
1608 (operator<(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1609 (operator!=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise and
1611 (operator>(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1612 (operator<=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1613 (operator>=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1614 * include/debug/map.h (map<>::erase(const_iterator, const_iterator)):
1615 Compare __victim with _Base::cend().
1616 * include/debug/multimap.h
1617 (multimap<>::erase(const_iterator, const_iterator)): Likewise.
1618 * include/debug/set.h (set<>::erase(const_iterator, const_iterator)):
1619 Compare __victim with _Base::cend().
1620 * include/debug/multiset.h
1621 (multiset<>::erase(const_iterator, const_iterator)): Likewise.
1623 2018-10-03 Jonathan Wakely <jwakely@redhat.com>
1626 * src/c++98/locale.cc (locale::locale(const locale&)): Bypass
1627 reference count updates for the classic locale.
1628 (locale::~locale()): Likewise.
1629 (locale::operator=(const locale&)): Likewise.
1630 * src/c++98/locale_init.cc (locale::locale()): Likewise.
1631 (locale::global(const locale&)): Likewise.
1633 2018-10-03 François Dumont <fdumont@gcc.gnu.org>
1635 * include/debug/map.h
1636 (map<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1637 (map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1638 (map<>::insert(value_type&&)): Likewise.
1639 (map<>::insert<>(_Pair&&)): Likewise.
1640 (map<>::insert<>(const_iterator, _Pair&&)): Likewise.
1641 (map<>::try_emplace): Likewise.
1642 (map<>::insert_or_assign): Likewise.
1643 (map<>::insert(node_type&&)): Likewise.
1644 (map<>::insert(const_iterator, node_type&&)): Likewise.
1645 (map<>::erase(const_iterator)): Likewise.
1646 (map<>::erase(const_iterator, const_iterator)): Likewise.
1647 * include/debug/multimap.h
1648 (multimap<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1649 (multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1650 (multimap<>::insert<>(_Pair&&)): Likewise.
1651 (multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
1652 (multimap<>::insert(node_type&&)): Likewise.
1653 (multimap<>::insert(const_iterator, node_type&&)): Likewise.
1654 (multimap<>::erase(const_iterator)): Likewise.
1655 (multimap<>::erase(const_iterator, const_iterator)): Likewise.
1656 * include/debug/set.h
1657 (set<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1658 (set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1659 (set<>::insert(value_type&&)): Likewise.
1660 (set<>::insert<>(const_iterator, value_type&&)): Likewise.
1661 (set<>::insert(const_iterator, node_type&&)): Likewise.
1662 (set<>::erase(const_iterator)): Likewise.
1663 (set<>::erase(const_iterator, const_iterator)): Likewise.
1664 * include/debug/multiset.h
1665 (multiset<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1666 (multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1667 (multiset<>::insert<>(value_type&&)): Likewise.
1668 (multiset<>::insert<>(const_iterator, value_type&&)): Likewise.
1669 (multiset<>::insert(node_type&&)): Likewise.
1670 (multiset<>::insert(const_iterator, node_type&&)): Likewise.
1671 (multiset<>::erase(const_iterator)): Likewise.
1672 (multiset<>::erase(const_iterator, const_iterator)): Likewise.
1674 2018-10-02 Marc Glisse <marc.glisse@inria.fr>
1677 * include/bits/stl_bvector.h (vector::begin(), vector::cbegin()):
1678 Rebuild _M_start with an explicit 0 offset.
1680 2018-10-02 Jonathan Wakely <jwakely@redhat.com>
1682 * include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
1683 directly instead of get, as caller ensures correct index is used.
1684 (holds_alternative, get, get_if): Remove redundant inline specifiers.
1685 (_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.
1687 2018-10-02 Joseph Myers <joseph@codesourcery.com>
1689 * testsuite/lib/libstdc++.exp (libstdc++_init): Use
1690 -fno-show-column in default cxxflags.
1692 2018-10-01 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1694 * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.
1696 2018-10-01 Gerald Pfeifer <gerald@pfeifer.com>
1698 * doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
1699 Custom Memory Allocation".
1701 2018-10-01 Jonathan Wakely <jwakely@redhat.com>
1703 * doc/html/*: Regenerate.
1705 2018-09-30 Gerald Pfeifer <gerald@pfeifer.com>
1707 * doc/xml/manual/messages.xml: Switch link to www.oracle.com
1710 2018-09-30 Gerald Pfeifer <gerald@pfeifer.com>
1712 * doc/xml/manual/policy_data_structures_biblio.xml: Update
1713 link to Microsoft Component Model Object Technologies.
1715 2018-09-29 Gerald Pfeifer <gerald@pfeifer.com>
1717 * doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
1718 site now uses https. Also omit the unnecessary trailing slash.
1719 * doc/xml/gnu/gpl-3.0.xml: Ditto.
1721 2018-09-28 François Dumont <fdumont@gcc.gnu.org>
1723 * include/debug/functions.h
1724 (__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
1725 const _InputIter&, __true_type)): Use empty() rather than begin() ==
1728 2018-09-25 Mike Crowe <mac@mcrowe.com>
1730 * include/std/condition_variable (condition_variable::wait_for): Use
1731 steady clock in overload that uses a predicate.
1733 2018-09-25 Jonathan Wakely <jwakely@redhat.com>
1736 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
1737 Avoid runtime test when all alternatives are scalars and so cannot
1738 throw during initialization.
1740 2018-09-25 Gerald Pfeifer <gerald@pfeifer.com>
1742 * doc/xml/manual/codecvt.xml: Move link to "UTF-8 and Unicode FAQ"
1745 2018-09-24 Gerald Pfeifer <gerald@pfeifer.com>
1747 * doc/xml/manual/policy_data_structures_biblio.xml: Update link
1748 to "Priority Queues and the STL".
1750 2018-09-23 Gerald Pfeifer <gerald@pfeifer.com>
1752 * doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
1755 2018-09-21 François Dumont <fdumont@gcc.gnu.org>
1758 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
1759 Use __builtin_floor to compute _M_next_resize.
1760 * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt.
1761 * testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc:
1764 2018-09-21 Jonathan Wakely <jwakely@redhat.com>
1766 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Remove.
1767 * testsuite/26_numerics/headers/cmath/hypot.cc: Restore test for
1768 long double unconditionally, but use lower tolerance when
1769 sizeof(long double) == sizeof(double).
1771 2018-09-20 Christophe Lyon <christophe.lyon@linaro.org>
1773 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
1776 2018-09-19 Jonathan Wakely <jwakely@redhat.com>
1778 * include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
1779 Remove __glibcxx_assert statements and use map::find instead of
1782 2018-09-18 François Dumont <fdumont@gcc.gnu.org>
1785 * src/c++11/hashtable_c++0x.cc:
1786 (_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
1787 requested size, but not necessarily greater.
1788 (_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
1789 strictly greater than next resize threshold.
1790 * testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
1791 to validate that there is no rehash as long as number of insertion is
1792 lower or equal to the reserved number of elements.
1794 2018-09-18 Jonathan Wakely <jwakely@redhat.com>
1796 * include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
1797 checking invocable condition.
1798 (unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
1799 here, where types must be complete. Pass pointer to deleter as an
1801 * testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
1803 2018-09-13 Jonathan Wakely <jwakely@redhat.com>
1805 * include/std/variant (variant) [__clang__]: Limit workaround to
1808 2018-09-11 Jonathan Wakely <jwakely@redhat.com>
1811 * include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
1813 * testsuite/20_util/shared_ptr/creation/87278.cc: New test.
1815 Implement LWG 2905 changes to constrain unique_ptr constructors
1816 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
1818 (unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
1819 constructible constraint.
1820 (unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
1821 deleters of reference type and add move constructible constraint.
1822 (unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
1823 Disable for deleters of non-reference type. Define as deleted.
1824 (unique_ptr<T[], D>): Likewise.
1825 * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
1826 directives with unstable line numbers with dg-prune-output.
1827 * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
1828 * testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
1829 * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
1830 Make deleter types invocable.
1832 2018-09-05 Jonathan Wakely <jwakely@redhat.com>
1834 * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
1836 2018-09-03 Jonathan Wakely <jwakely@redhat.com>
1839 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test
1840 that runs the long double part of hypot.cc.
1841 * testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double
1842 tests unless TEST_HYPOT_LONG_DOUBLE is defined.
1844 * include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
1845 Return raw pointer not allocator's pointer type.
1846 (vector::_Temporary_value::_M_val): Use _M_ptr.
1849 * include/bits/stl_map.h
1850 (map::map(initializer_list<value_type>, const Compare&, const Alloc&))
1851 (map::map(initializer_list<value_type>, const Alloc&))
1852 (map::map(InputIterator, InputIterator, const Alloc&))
1853 (map::map(InputIterator, InputIterator))
1854 (map::map(InputIterator, InputIterator, const Compare&, const Alloc&))
1855 (map::insert(InputIterator, InputIterator)):
1856 Call _M_insert_range_unique instead of _M_insert_unique.
1857 * include/bits/stl_multimap.h
1858 (multimap::multimap(initializer_list<value_type>, const C&, const A&))
1859 (multimap::multimap(initializer_list<value_type>, const A&))
1860 (multimap::multimap(InputIterator, InputIterator, const A&))
1861 (multimap::multimap(InputIterator, InputIterator))
1862 (multimap::multimap(InputIterator, InputIterator, const C&, const A&))
1863 (multimap::insert(InputIterator, InputIterator)): Call
1864 _M_insert_range_equal instead of _M_insert_equal.
1865 * include/bits/stl_multiset.h
1866 (multiset::multiset(InputIterator, InputIterator))
1867 (multiset::multiset(InputIterator, InputIterator, const C&, const A&))
1868 (multiset::multiset(initializer_list<value_type>, const C&, const A&))
1869 (multiset::multiset(initializer_list<value_type>, const A&))
1870 (multiset::multiset(InputIterator, InputIterator, const A&))
1871 (multiset::insert(InputIterator, InputIterator)): Call
1872 _M_insert_range_equal instead of _M_insert_equal.
1873 * include/bits/stl_set.h
1874 (set::set(InputIterator, InputIterator))
1875 (set::set(InputIterator, InputIterator, const Compare&, const Alloc&))
1876 (set::set(initializer_list<value_type>, const Compare&, const Alloc&))
1877 (set::set(initializer_list<value_type>, const Alloc&))
1878 (set::set(InputIterator, InputIterator, const Alloc&))
1879 (set::insert(InputIterator, InputIterator)):
1880 Call _M_insert_range_unique instead of _M_insert_unique.
1881 * include/bits/stl_tree.h
1882 [__cplusplus >= 201103L] (_Rb_tree::__same_value_type): New alias
1883 template for SFINAE constraints.
1884 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_unique): Pair of
1885 constrained overloads that either insert or emplace, depending on
1886 iterator's value_type.
1887 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_equal): Likewise.
1888 [__cplusplus < 201103L] (_Rb_tree::_M_insert_range_unique)
1889 (_Rb_tree::_M_insert_range_equal): New functions replacing range
1890 versions of _M_insert_unique and _M_insert_equal.
1891 (_Rb_tree::_M_insert_unique(_InputIterator, _InputIterator))
1892 (_Rb_tree::_M_insert_equal(_InputIterator, _InputIterator)): Remove.
1893 * testsuite/23_containers/map/modifiers/insert/87194.cc: New test.
1894 * testsuite/23_containers/multimap/modifiers/insert/87194.cc: New test.
1895 * testsuite/23_containers/multiset/modifiers/insert/87194.cc: New test.
1896 * testsuite/23_containers/set/modifiers/insert/87194.cc: New test.
1899 * include/bits/stl_map.h (map::insert(_Pair&&))
1900 (map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
1901 * include/bits/stl_multimap.h (multimap::insert(_Pair&&))
1902 (multimap::insert(const_iterator, _Pair&&)): Likewise.
1903 * include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
1904 (unordered_map::insert(const_iterator, _Pair&&))
1905 (unordered_multimap::insert(_Pair&&))
1906 (unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
1907 * testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
1908 * testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
1909 * testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
1910 * testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
1913 2018-09-02 François Dumont <fdumont@gcc.gnu.org>
1915 * include/debug/safe_iterator.h
1916 (_Safe_iterator<_It, _Seq, _Cat>::_Self): New.
1917 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>::_Self):
1919 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1921 (_GLIBCXX_DEBUG_VERIFY_OPERANDS, _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS)
1922 (_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS)
1923 (_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS): Define macros.
1924 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1925 ::operator+(difference_type)): Use latters, inline as friend.
1926 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1927 ::operator-(difference_type)): Likewise.
1928 (operator==(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1930 (operator!=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1932 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1933 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1935 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1936 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1938 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1939 (operator+(difference_type, const _Safe_iterator<>&)): Likewise.
1940 (operator-(const _Safe_iterator<>&, difference_type)): Likewise.
1941 * include/debug/safe_iterator.tcc
1942 (_Safe_iterator<>::_M_can_advance(difference_type)): Take parameter by
1944 * include/debug/safe_local_iterator.h
1945 (_Safe_local_iterator<_It, _Seq>::_Self): New.
1946 (_Safe_local_iterator<_It, _Seq>::_OtherSelf): New.
1947 (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Define macro.
1948 (operator==(const _Safe_local_iterator<>&,
1949 const _Safe_local_iterator<>&)): Use latter, inline as friend.
1950 (operator!=(const _Safe_local_iterator<>&,
1951 const _Safe_local_iterator<>&)): Likewise.
1952 * testsuite/util/testsuite_containers.h: Include utility.
1953 (struct forward_members_unordered<_Tp, bool>): Remove 2nd template
1955 (forward_members_unordered<>::forward_members_unordered(value_type&)):
1956 Add using namespace std::rel_ops.
1957 Add iterator_concept_checks on local_iterator and const_local_iterator.
1958 Add asserts on comparison between const_local_iterator and
1960 (struct forward_members_unordered<_Tp, false>): Remove partial
1962 * testsuite/23_containers/forward_list/types/1.cc: New.
1963 * testsuite/23_containers/list/types/1.cc: New.
1965 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1967 * doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
1970 2018-08-31 Sandra Loosemore <sandra@codesourcery.com>
1972 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
1973 Add dg-require-fileio.
1974 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
1976 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
1978 * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
1980 * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
1982 * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
1984 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
1985 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
1986 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
1987 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
1988 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
1989 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc:
1991 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
1993 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
1995 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
1997 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
1999 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
2001 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
2003 * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
2004 * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
2005 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: Likewise.
2006 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
2007 * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
2009 * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
2011 * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
2012 * testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
2013 * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
2014 * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
2015 * testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
2016 * testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
2017 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: Likewise.
2018 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: Likewise.
2019 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
2021 * testsuite/27_io/objects/wchar_t/10.cc: Likewise.
2022 * testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
2023 * testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
2024 * testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
2025 * testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
2026 * testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
2027 * testsuite/experimental/string_view/inserters/wchar_t/2.cc:
2029 * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
2031 2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
2033 * testsuite/experimental/propagate_const/observers/1.cc: Make
2034 dependence on -fdelete-null-pointer-checks explicit.
2036 2018-08-30 Jonathan Wakely <jwakely@redhat.com>
2038 * include/bits/hashtable_policy.h (__clp2): Fix calculation for LLP64
2039 targets where sizeof(size_t) > sizeof(long). Avoid undefined shifts
2040 of the number of bits in the type.
2041 * include/std/bit (__ceil2): Avoid undefined shifts.
2042 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Test values with
2043 the most signifiant bit set.
2045 * config/abi/pre/gnu.ver: Add missing exports for mingw.
2047 * include/ext/pointer.h (_Pointer_adapter): Define operators for
2048 pointer arithmetic using long long offsets.
2049 * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
2052 2018-08-29 Jonathan Wakely <jwakely@redhat.com>
2055 * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT
2056 string for alternative format.
2058 2018-08-28 Jonathan Wakely <jwakely@redhat.com>
2061 * src/filesystem/std-path.cc (path::lexically_normal): When handling
2062 a dot-dot filename, preserve an empty final component in the iteration
2064 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
2066 * testsuite/27_io/filesystem/path/generation/normal.cc: Add new tests
2067 for more than two adjacent dot-dot filenames.
2068 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Replace slashes with
2069 preferred-separator in expected normalized strings.
2071 2018-08-25 Iain Sandoe <iain@sandoe.co.uk>
2074 * configure.host (OPT_LDFLAGS): Don't append
2075 -fvisibility-inlines-hidden for newer Darwin.
2077 2018-08-24 Marc Glisse <marc.glisse@inria.fr>
2080 * libsupc++/new (operator new(size_t, nothrow_t), operator
2081 new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
2082 operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
2084 2018-08-24 Jonathan Wakely <jwakely@redhat.com>
2086 * include/debug/deque (std::__debug::deque): Declare.
2087 * include/debug/forward_list (std::__debug::forward_list): Declare.
2088 * include/debug/list (std::__debug::list): Declare.
2089 * include/debug/map (std::__debug::map): Declare.
2090 * include/debug/set (std::__debug::set): Declare.
2091 * include/debug/unordered_map (std::__debug::unordered_map): Declare.
2092 * include/debug/unordered_set (std::__debug::unordered_set): Declare.
2093 * include/debug/vector (std::__debug::vector): Declare.
2094 * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
2095 * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
2097 * testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
2098 * testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
2099 * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
2100 * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
2101 * testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
2102 * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
2104 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
2106 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
2108 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
2110 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
2111 Adjust dg-error lineno.
2112 * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
2115 2018-08-23 Jonathan Wakely <jwakely@redhat.com>
2117 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
2118 Only define when RTTI is enabled.
2120 * include/debug/vector (__niter_base): Define for C++98.
2122 * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
2123 Fix C++98 test to not use C++11 features.
2124 * testsuite/25_algorithms/fill_n/2.cc: Likewise.
2126 * scripts/check_compile: Fix comments.
2128 * include/debug/string (insert(__const_iterator, _InIter, _InIter)):
2129 [!_GLIBCXX_USE_CXX11_ABI]: Replace use of C++11-only cbegin() with
2130 begin(), for C++98 compatibility.
2132 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2133 (basic_string::__const_iterator): Change access to protected.
2134 [!_GLIBCXX_USE_CXX11_ABI] (basic_string::__const_iterator): Define
2135 as typedef for iterator.
2136 * include/debug/string (__const_iterator): Use typedef from base.
2137 (insert(const_iterator, _CharT))
2138 (replace(const_iterator, const_iterator, const basic_string&))
2139 (replace(const_iterator, const_iterator, const _CharT*, size_type))
2140 (replace(const_iterator, const_iterator, const CharT*))
2141 (replace(const_iterator, const_iterator, size_type, _CharT))
2142 (replace(const_iterator, const_iterator, _InputIter, _InputIter))
2143 (replace(const_iterator, const_iterator, initializer_list<_CharT>)):
2144 Change const_iterator parameters to __const_iterator.
2145 (insert(iterator, size_type, _CharT)): Add C++98 overload.
2146 (insert(const_iterator, _InputIterator, _InputIterator)): Change
2147 const_iterator parameter to __const_iterator.
2148 [!_GLIBCXX_USE_CXX11_ABI]: Add workaround for incorrect return type
2149 of base's member function.
2150 (insert(const_iterator, size_type, _CharT)) [!_GLIBCXX_USE_CXX11_ABI]:
2152 (insert(const_iterator, initializer_list<_CharT>))
2153 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
2154 * testsuite/21_strings/basic_string/init-list.cc: Remove effective
2157 * testsuite/20_util/reference_wrapper/lwg2993.cc: Fix C++11 test to
2158 not use C++14 feature.
2159 * testsuite/23_containers/list/68222_neg.cc: Likewise.
2161 * testsuite/21_strings/basic_string/init-list.cc:
2163 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
2165 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
2168 * testsuite/23_containers/deque/capacity/max_size.cc: Fix test for
2170 * testsuite/23_containers/deque/modifiers/assign/1.cc: Likewise.
2171 * testsuite/23_containers/list/modifiers/assign/1.cc: Likewise.
2172 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: Likewise.
2173 * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
2174 * testsuite/23_containers/vector/modifiers/assign/1.cc: Likewise.
2176 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
2179 * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
2180 (experimental::pmr::match_results, experimental::pmr::cmatch)
2181 (experimental::pmr::smatch, experimental::pmr::wcmatch)
2182 (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
2183 because COW strings don't support C++11 allocator model.
2184 * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
2185 (experimental::pmr::basic_string, experimental::pmr::string)
2186 (experimental::pmr::u16string, experimental::pmr::u32string)
2187 (experimental::pmr::wstring): Likewise.
2188 * include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results)
2189 (pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise.
2190 * include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string)
2191 (pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise.
2192 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require
2194 * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
2197 * include/bits/deque.tcc (deque::_M_range_initialize): Use
2198 _S_check_init_len to check size.
2199 (deque::_M_push_back_aux, deque::_M_push_front_aux): Throw length
2200 error if size would exceed max_size().
2201 * include/bits/stl_deque.h (_Deque_base::size_type): Remove typedef.
2202 (_Deque_base(_Deque_base&&, const allocator_type&, size_t)): Use
2203 size_t instead of size_type.
2204 (deq(size_type, const allocator_type&)
2205 (deq(size_type, const value_type&, const allocator_type&)
2206 (deque::_M_initialize_dispatch): Use _S_check_init_len to check size.
2207 (deque::max_size): Call _S_max_size.
2208 (deque::_S_check_init_len, deque::_S_max_size): New functions.
2209 * include/bits/stl_vector.h (vector(size_type, const allocator_type&))
2210 (vector(size_type, const value_type&, const allocator_type&))
2211 (vector::_M_initialize_dispatch, vector::_M_range_initialize): Use
2212 _S_check_init_len to check size.
2213 (vector::max_size): Call _S_max_size.
2214 (vector::_M_check_len): Prevent max from being expanded as a
2215 function-like macro.
2216 (vector::_S_check_init_len, vector::_S_max_size): New functions.
2217 * include/bits/vector.tcc (vector::_M_assign_aux): Use
2218 _S_check_init_len to check size.
2219 * testsuite/23_containers/deque/capacity/max_size.cc: New test.
2220 * testsuite/23_containers/vector/capacity/max_size.cc: New test.
2222 2018-08-22 François Dumont <fdumont@gcc.gnu.org>
2225 * include/debug/safe_iterator.h
2226 (_Safe_iterator<_It, _Sq, _Cat>): Add category template parameter.
2227 (_Safe_iterator<>::_Const_iterator): Remove.
2228 (_Safe_iterator<>::_IsConstant): New.
2229 (_Safe_iterator<>::_OtherIterator): New.
2230 (_Safe_iterator<_It, _Sq, _Cat>::_Safe_iterator<_MutIte>(
2231 const _Safe_iterator<_MutIte, _Sq, _Cat>&)): Add _IsConstant::__value in
2232 __gnu_cxx::__enable_if condition.
2233 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to): New.
2234 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_from_begin): New.
2235 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to_end): New.
2236 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>): New.
2237 (_Safe_iterator<_It, _Sq, _Cat>::operator--()): Move...
2238 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
2239 ::operator--()): ...here.
2240 (_Safe_iterator<_It, _Sq, _Cat>::operator--(int)): Move...
2241 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
2242 ::operator--(int)): ...here.
2243 (_Safe_iterator<_It, _Sq, _Cat>::_M_decrementable()): Move...
2244 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
2245 ::_M_decrementable()): ...here.
2246 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>): New.
2247 (_Safe_iterator<_It, _Sq, _Cat>::operator[](const difference_type&)):
2249 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
2250 ::operator[](const difference_type&)): ...here.
2251 (_Safe_iterator<_It, _Sq, _Cat>::operator+=(const difference_type&)):
2253 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
2254 ::operator+=(const difference_type&)): ...here.
2255 (_Safe_iterator<_It, _Sq, _Cat>::operator+(const difference_type&)):
2257 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
2258 ::operator+(const difference_type&)): ...here.
2259 (_Safe_iterator<_It, _Sq, _Cat>::operator-=(const difference_type&)):
2261 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
2262 ::operator-=(const difference_type&)): ...here.
2263 (_Safe_iterator<_It, _Sq, _Cat>::operator-(const difference_type&)):
2265 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
2266 ::operator-(const difference_type&)): ...here.
2267 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2268 Constraint to random access iterators.
2269 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2271 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
2272 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2274 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
2275 (operator+(const difference_type&, const _Safe_iterator<>&)): Likewise.
2276 (__check_dereferenceable(const _Safe_iterator<>&)): Remove.
2277 (__get_distance): Remove.
2278 (__get_distance_from_begin): Remove.
2279 (__get_distance_to_end): Remove.
2280 (struct __is_safe_random_iterator<_Safe_iterator<>>): Remove partial
2282 (__base(const _Safe_iterator<>&, std::input_iterator_tag)): Remove.
2283 (__base(const _Safe_iterator<>&, std::random_access_iterator_tag)): Remove.
2284 (__base(const _Safe_iterator<>&)): Constraint to random access iterator.
2285 * include/debug/safe_iterator.tcc
2286 (_Safe_iterator<>::_M_get_distance_from_begin()): New.
2287 (_Safe_iterator<>::_M_get_distance_to_end()): New.
2288 (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator<>&)): New.
2289 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
2290 ::_M_valid_range): New.
2291 * include/debug/safe_local_iterator.h
2292 (_Safe_local_iterator<>::_Const_local_iterator): Remove.
2293 (_Safe_local_iterator<>::_IsConstant): New.
2294 (_Safe_local_iterator<>::_OtherIterator): New.
2295 (_Safe_local_iterator<_It, _Cont>::_Safe_local_iterator<_MutIte, _Cont>(
2296 const _Safe_local_iterator<_MutIte, _Seq>&)): Add _IsConstant::__value
2297 in __gnu_cxx::__enable_if condition. If singular compare base iterator
2298 with _MutIte rather than _It.
2299 (_Safe_local_iterator<>::_S_constant): Make constexpr.
2300 (_Safe_local_iterator<>::_M_get_distance_to): New.
2301 (__check_dereferenceable(const _Safe_local_iterator<>&)): Remove.
2302 (__get_distance(const _Safe_local_iterator<>&,
2303 const _Safe_local_iterator<>&, std::input_iterator_tag)): Remove.
2304 (__valid_range(const _Safe_local_iterator<>&,
2305 const _Safe_local_iterator<>&)): New.
2306 * include/debug/safe_local_iterator.tcc
2307 (_Safe_local_iterator<>::_M_get_distance_to): New.
2308 * include/debug/deque (std::__debug::deque<>): Add
2309 ::__gnu_debug::_Safe_iterator<> friend declaration.
2310 * include/debug/forward_list (std::__debug::forward_list<>): Likewise.
2311 * include/debug/list (std::__debug::list<>): Likewise.
2312 * include/debug/map.h (std::__debug::map<>): Likewise.
2313 * include/debug/multimap.h (std::__debug::multimap<>): Likewise.
2314 * include/debug/set.h (std::__debug::set<>): Likewise.
2315 * include/debug/multiset.h (std::__debug::multiset<>): Likewise.
2316 * include/debug/string (std::__debug::basic_string<>): Likewise.
2317 * include/debug/unordered_map (std::__debug::unordered_map<>): Likewise
2318 and add ::__gnu_debug::_Safe_local_iterator<> friend declaration.
2319 (std::__debug::unordered_multimap<>): Likewise.
2320 * include/debug/unordered_set (std::__debug::unordered_set<>): Likewise.
2321 (std::__debug::unordered_multiset<>): Likewise.
2322 * include/debug/formatter.h: Adapt.
2323 * include/debug/helper_functions.h
2324 (__gnu_debug::_Safe_local_iterator<>): Add declaration.
2325 (__get_distance<_Ite>(_Ite, _Ite, std::random_access_iterator_tag):
2326 Pass parameter by copy.
2327 (__get_distance<_Ite>(_Ite, _Ite, std::input_iterator_tag): Likewise.
2328 (__get_distance<_Ite>(_Ite, _Ite): Likewise.
2329 (__valid_range_aux<_Integral>): Pass _Integral by copy.
2330 (__valid_range<_InputIterator>): Pass _InputIterator by copy.
2331 (__valid_range<>(const _Safe_iterator<>&,
2332 const _Safe_iterator<>&, typename _Distance_traits<>::__type&)):
2334 (__valid_range(const _Safe_local_iterator<>&,
2335 const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)):
2337 (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2339 (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)):
2341 (__can_advance): Adapt.
2342 (struct __is_safe_random_iterator<>): Remove.
2343 (struct _SIter_base<>): Remove.
2344 * include/debug/functions.h: Include <bits/stl_iterator.h>.
2345 (__check_dereferenceable): Remove.
2346 (__foreign_iterator_aux4, __foreign_iterator_aux3): Adapt.
2347 (__foreign_iterator_aux2, __foreign_iterator_aux): Adapt.
2348 (__foreign_iterator): Adapt.
2349 * include/debug/stl_iterator.h
2350 (__is_safe_random_iterator<std::reverse_iterator<>>): Remove.
2351 (__base(const std::reverse_iterator<_Safe_iterator<_It, _Sq>)):
2352 Constraint for random access iterators.
2353 (__niter_base): Adapt.
2354 * testsuite/util/testsuite_containers.h:
2355 Include <bits/boost_concept_check.h>.
2356 (iterator_concept_checks<_It, _Mutable, _Category>): New.
2357 (citerator<_Cont>::forward_members::forward_members()): Instantiate
2358 latter for container iterator and const_iterator.
2359 * testsuite/23_containers/list/68222_neg.cc: New.
2360 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adapt
2362 * testsuite/23_containers/unordered_set/debug/debug_functions.cc:
2364 * testsuite/23_containers/vector/debug/debug_functions.cc (test01):
2367 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
2370 * doc/xml/manual/status_cxx1998.xml: Document size_type and
2371 difference_type for containers.
2372 * doc/html/*: Regenerate.
2374 2018-08-21 François Dumont <fdumont@gcc.gnu.org>
2376 P0646R1 Improving the Return Value of Erase-Like Algorithms I
2377 * include/debug/forward_list (forward_list::__remove_return_type):
2378 Define typedef as size_type or void, according to __cplusplus value.
2379 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2380 empty, according to __cplusplus value.
2381 (_GLIBCXX20_ONLY): Define macro.
2382 (forward_list::remove, forward_list::unique): Use typedef and macro
2383 to change return type and add abi-tag for C++2a. Return number of
2384 removed elements for C++2a.
2385 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
2386 typedef to change return type for C++2a. Return number of removed
2388 * include/debug/list (list::__remove_return_type): Define typedef as
2389 size_type or void, according to __cplusplus value.
2390 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2391 empty, according to __cplusplus value.
2392 (_GLIBCXX20_ONLY): Define macro.
2393 (list::remove, list::unique): Use typedef and macro to change return
2394 type and add abi-tag for C++2a. Return number of removed elements for
2396 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
2397 to change return type for C++2a. Return number of removed elements for
2400 2018-08-21 David Edelsohn <dje.gcc@gmail.com>
2402 * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
2404 2018-08-21 Jonathan Wakely <jwakely@redhat.com>
2406 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
2407 redundant dg-do directive.
2408 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
2409 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
2410 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
2411 * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
2413 2018-08-20 Jonathan Wakely <jwakely@redhat.com>
2416 * include/std/tuple (_Tuple_impl::operator=): Define as deleted.
2417 (_Tuple_impl::_M_assign): New functions to perform assignment instead
2418 of assignment operators.
2419 (_Tuple_impl::_M_swap): Remove exception specification.
2420 (_Tuple_impl<_Idx, _Head>): Likewise.
2421 (_TC::_NonNestedTuple, _TC::_NotSameTuple): Use __remove_cvref_t.
2422 (__tuple_base): Remove.
2423 (tuple, tuple<_T1, _T2>): Remove inheritance from __tuple_base.
2424 (tuple::operator=, tuple<_T1, _T2>::operator=): Call _M_assign.
2425 (tuple::swap, tuple<_T1, _T2>::swap): Define exception specification
2426 using __is_nothrow_swappable.
2427 (tuple<_T1, _T2>::tuple(_U1&&, _U2&&)): Use __remove_cvref_t.
2429 * include/std/optional (_Optional_payload): Use variable templates
2430 for conditions in default template arguments and exception
2432 (optional): Likewise. Adjust indentation.
2433 (optional::__not_self, optional::__not_tag, optional::_Requires): New
2435 (optional::optional): Use new helpers in constructor constraints.
2436 * include/std/type_traits (__or_v, __and_v): New variable templates.
2437 * testsuite/20_util/optional/cons/value_neg.cc: Change dg-error to
2438 dg-prune-output. Remove unused header.
2440 2018-08-18 François Dumont <fdumont@gcc.gnu.org>
2442 * testsuite/25_algorithms/copy/86658.cc: Use dg-options to define
2445 2018-08-17 Jonathan Wakely <jwakely@redhat.com>
2448 * include/std/tuple (__tuple_base): New class template with deleted
2449 copy assignment operator.
2450 (tuple, tuple<_T1, _T2>): Derive from __tuple_base<tuple> so that
2451 implicit copy/move assignment operator will be deleted/suppressed.
2452 (tuple::__assignable, tuple<_T1, _T2>::__assignable): New helper
2453 functions for SFINAE constraints on assignment operators.
2454 (tuple::__nothrow_assignable, tuple<_T1, _T2>::__nothrow_assignable):
2455 New helper functions for exception specifications.
2456 (tuple::operator=(const tuple&), tuple::operator=(tuple&&))
2457 (tuple<_T1, _T2>::operator=(const tuple&))
2458 (tuple<_T1, _T2>::operator=(tuple&&)): Change parameter types to
2459 __nonesuch_no_braces when the operator should be defined implicitly.
2460 Use __nothrow_assignable for exception specifications.
2461 (tuple::operator=(const tuple<_UElements...>&))
2462 (tuple::operator=(tuple<_UElements...>&&))
2463 (tuple<_T1, _T2>::operator=(const tuple<_U1, _U2>&))
2464 (tuple<_T1, _T2>::operator=(tuple<_U1, _U2>&&))
2465 (tuple<_T1, _T2>::operator=(const pair<_U1, _U2>&))
2466 (tuple<_T1, _T2>::operator=(pair<_U1, _U2>&&)): Constrain using
2467 __assignable and use __nothrow_assignable for exception
2469 * python/libstdcxx/v6/printers.py (is_specialization_of): Accept
2470 gdb.Type as first argument, instead of a string.
2471 (StdTuplePrinter._iterator._is_nonempty_tuple): New method to check
2472 tuple for expected structure.
2473 (StdTuplePrinter._iterator.__init__): Use _is_nonempty_tuple.
2474 * testsuite/20_util/tuple/dr2729.cc: New test.
2475 * testsuite/20_util/tuple/element_access/get_neg.cc: Change dg-error
2478 2018-08-16 Jonathan Wakely <jwakely@redhat.com>
2480 * include/tr1/legendre_function.tcc (__sph_legendre): Avoid warning
2481 about signed/unsigned comparison.
2483 * include/std/ostream (basic_ostream::sentry::~sentry): Suppress
2484 deprecation warnings for using uncaught_exception().
2487 * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
2488 (logic_error::logic_error(logic_error&&))
2489 (logic_error::operator=(logic_error&&))
2490 (runtime_error::runtime_error(runtime_error&&))
2491 (runtime_error::operator=(runtime_error&&)): Copy strings instead of
2492 moving, to avoid allocating empty reps for moved-from strings.
2494 2018-08-15 Jonathan Wakely <jwakely@redhat.com>
2496 * include/experimental/regex: Remove begin/end macros for namespace.
2497 * include/experimental/string: Likewise.
2498 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
2500 * testsuite/experimental/polymorphic_allocator/
2501 pmr_typedefs_forward_list.cc: New test.
2502 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
2504 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
2506 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
2508 * testsuite/experimental/polymorphic_allocator/
2509 pmr_typedefs_multimap.cc: New test.
2510 * testsuite/experimental/polymorphic_allocator/
2511 pmr_typedefs_multiset.cc: New test.
2512 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
2514 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
2516 * testsuite/experimental/polymorphic_allocator/
2517 pmr_typedefs_unordered_map.cc: New test.
2518 * testsuite/experimental/polymorphic_allocator/
2519 pmr_typedefs_unordered_multimap.cc: New test.
2520 * testsuite/experimental/polymorphic_allocator/
2521 pmr_typedefs_unordered_multiset.cc: New test.
2522 * testsuite/experimental/polymorphic_allocator/
2523 pmr_typedefs_unordered_set.cc: New test.
2524 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
2527 * include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
2528 calls to __uses_allocator_construct_impl and __use_alloc.
2529 * include/experimental/memory_resource
2530 (polymorphic_allocator::_M_construct): Remove.
2531 (polymorphic_allocator::construct): Call __uses_allocator_construct.
2532 Qualify calls to __use_alloc.
2533 * include/std/memory_resource (polymorphic_allocator::construct): Fix
2534 type in SFINAE constraint. Use constexpr if instead of tag dispatching
2535 to _S_construct overloads.
2536 (polymorphic_allocator::construct(pair<T1, T2>*, ...)): Fix order of
2537 arguments to _S_construct_p.
2538 (polymorphic_allocator::_S_construct): Remove.
2539 (polymorphic_allocator::_S_construct_p): Return allocators by value
2541 * include/std/scoped_allocator (scoped_allocator_adaptor::construct):
2542 Qualify calls to __use_alloc.
2543 * testsuite/20_util/polymorphic_allocator/construct_pair.cc: New test,
2544 copied from testsuite/20_util/scoped_allocator/construct_pair.cc.
2545 * testsuite/experimental/polymorphic_allocator/1.cc: New test.
2546 * testsuite/experimental/polymorphic_allocator/construct_pair.cc:
2549 * src/c++17/memory_resource.cc [!_GLIBCXX_HAS_GTHREADS]
2550 (atomic_mem_res): Add unsynchronized definition for single-threaded.
2552 2018-08-14 Jonathan Wakely <jwakely@redhat.com>
2555 * include/bits/stl_tempbuf.h (return_temporary_buffer): Use
2556 non-placement delete.
2558 * include/std/chrono (__check_overflow): Simplify definition.
2559 (_Checked_integral_constant): Remove.
2562 * src/c++17/default_resource.h: New file, defining default_res.
2563 * src/c++17/memory_resource.cc [ATOMIC_POINTER_LOCK_FREE != 2]
2564 (atomic_mem_res): Define alternative for atomic<memory_resource*>
2565 using a mutex instead of atomics.
2568 * config/abi/pre/gnu.ver: Export new symbol.
2569 * doc/xml/manual/abi.xml: Document new versions.
2570 * include/bits/fstream.tcc (basic_filebuf<C, T>::underflow)
2571 (basic_filebuf<C, T>::xsgetn): Pass errno to __throw_ios_failure.
2572 * include/bits/functexcept.h (__throw_ios_failure(const char*, int)):
2573 Declare new overload.
2574 * src/c++11/cxx11-ios_failure.cc (__ios_failure): Add new constructor
2575 and static member function.
2576 (__throw_ios_failure(const char*, int)): Define.
2577 * src/c++98/ios_failure.cc [!_GLIBCXX_USE_DUAL_ABI]
2578 (__throw_ios_failure(const char*, int)): Define.
2580 2018-08-14 Jeremy Sawicki <jeremy-gcc@sawicki.us>
2582 * include/ext/rope (_Rope_iterator_base(const _Rope_iterator_base&))
2583 (_Rope_const_iterator::operator=(const _Rope_const_iterator&))
2584 (_Rope_iterator::operator=(const _Rope_iterator&)): Ensure
2585 copied/assigned rope iterators don't retain pointers to the iterator
2586 they were copied/assigned from.
2587 * testsuite/ext/rope/7.cc: New.
2589 2018-08-13 Jonathan Wakely <jwakely@redhat.com>
2592 * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
2593 Combine definitions to avoid --detect-odr-violations warning.
2595 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Use
2596 __is_pow2 to check for valid alignment. Avoid branching when rounding
2597 size to multiple of alignment.
2599 * include/Makefile.am: Install <bit> and <version> for freestanding.
2600 * include/Makefile.in: Regenerate.
2601 * testsuite/17_intro/freestanding.cc: Check for <bit> and <version>.
2604 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
2607 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
2609 * configure: Regenerate.
2611 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
2614 * doc/xml/manual/intro.xml: Document LWG 206 change.
2615 * libsupc++/del_op.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
2616 * libsupc++/del_opa.cc: Likewise.
2617 * libsupc++/del_opant.cc: Likewise.
2618 * libsupc++/del_opnt.cc: Likewise. Call operator delete(ptr) instead
2620 * libsupc++/del_ops.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
2621 * libsupc++/del_opsa.cc: Likewise.
2622 * libsupc++/del_opva.cc: Likewise.
2623 * libsupc++/del_opvant.cc: Likewise.
2624 * libsupc++/del_opvnt.cc: Likewise. Call operator delete[](ptr)
2625 instead of operator delete(ptr).
2626 * libsupc++/del_opvs.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
2627 * libsupc++/del_opvsa.cc: Likewise.
2628 * libsupc++/new_op.cc: Use __builtin_expect in check for zero size.
2629 * libsupc++/new_opa.cc: Use nullptr instead of literal 0.
2630 * libsupc++/new_opant.cc: Likewise. Replace _GLIBCXX_USE_NOEXCEPT
2632 * libsupc++/new_opnt.cc: Likewise. Call operator new(sz) instead of
2634 * libsupc++/new_opvant.cc: Use nullptr and noexcept.
2635 * libsupc++/new_opvnt.cc: Likewise. Call operator new[](sz) instead of
2636 operator new(sz, nothrow).
2637 * testsuite/18_support/new_nothrow.cc: New test.
2639 2018-08-10 Martin Liska <mliska@suse.cz>
2641 * libsupc++/new_op.cc (new): Remove __builtin_expect as malloc
2642 predictor can handle that.
2643 * libsupc++/new_opa.cc: Likewise.
2644 * libsupc++/new_opnt.cc (new): Likewise.
2646 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
2649 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
2651 * configure: Regenerate.
2653 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
2655 * include/std/deque (std::pmr::deque): Declare alias.
2656 * include/std/forward_list (std::pmr::forward_list): Likewise.
2657 * include/std/list (std::pmr::list): Likewise.
2658 * include/std/map (std::pmr::map, std::pmr::multimap): Likewise.
2659 * include/std/regex (std::pmr::match_results, std::pmr::cmatch)
2660 (std::pmr::smatch, std::pmr::wcmatch, std::pmr::wsmatch): Likewise.
2661 * include/std/set (std::pmr::set, std::pmr::multiset): Likewise.
2662 * include/std/string (std::pmr::basic_string, std::pmr::string)
2663 (std::pmr::u16string, std::pmr::u32string, std::pmr::wstring):
2665 * include/std/unordered_map (std::pmr::unordered_map)
2666 (std::pmr::unordered_multimap): Likewise.
2667 * include/std/unordered_set (std::pmr::unordered_set)
2668 (std::pmr::unordered_multiset): Likewise.
2669 * include/std/vector (std::pmr::vector): Likewise.
2670 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: New test.
2671 * testsuite/23_containers/deque/types/pmr_typedefs.cc: New test.
2672 * testsuite/23_containers/forward_list/pmr_typedefs.cc: New test.
2673 * testsuite/23_containers/list/pmr_typedefs.cc: New test.
2674 * testsuite/23_containers/map/pmr_typedefs.cc: New test.
2675 * testsuite/23_containers/multimap/pmr_typedefs.cc: New test.
2676 * testsuite/23_containers/multiset/pmr_typedefs.cc: New test.
2677 * testsuite/23_containers/set/pmr_typedefs.cc: New test.
2678 * testsuite/23_containers/unordered_map/pmr_typedefs.cc: New test.
2679 * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: New
2681 * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
2683 * testsuite/23_containers/unordered_set/pmr_typedefs.cc: New test.
2684 * testsuite/23_containers/vector/pmr_typedefs.cc: New test.
2685 * testsuite/28_regex/match_results/pmr_typedefs.cc: New test.
2687 2018-08-08 François Dumont <fdumont@gcc.gnu.org>
2689 * include/bits/stl_algo.h
2690 (__rotate(_Ite, _Ite, _Ite, forward_iterator_tag))
2691 (__rotate(_Ite, _Ite, _Ite, bidirectional_iterator_tag))
2692 (__rotate(_Ite, _Ite, _Ite, random_access_iterator_tag)): Move code
2694 (rotate(_Ite, _Ite, _Ite)): ...here.
2695 (__stable_partition_adaptive(_FIt, _FIt, _Pred, _Dist, _Pointer, _Dist)):
2696 Simplify rotate call.
2697 (__rotate_adaptive(_BIt1, _BIt1, _BIt1, _Dist, _Dist, _Bit2, _Dist)):
2699 (__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
2702 2018-08-08 Jonathan Wakely <jwakely@redhat.com>
2704 * libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
2705 avoid clashing with an ::aligned_alloc function that was not detected
2708 * doc/xml/manual/using.xml: Fix markup for empty table entry.
2709 * doc/html/*: Regenerate.
2711 * doc/xml/manual/using.xml: Add missing header to table and fix typo.
2712 * doc/html/*: Regenerate.
2715 * include/bits/fs_dir.h (directory_entry::_M_file_type(error_code&)):
2716 Clear error_code when cached type is used.
2717 * testsuite/27_io/filesystem/directory_entry/86597.cc: New test.
2719 2018-08-07 Jonathan Wakely <jwakely@redhat.com>
2722 * include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
2723 here instead of in _Move_assign_base.
2724 (_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
2725 (_Copy_assign_base::operator=): Use _M_destructive_move when changing
2726 the contained value to another alternative.
2727 (_Move_assign_base::operator=): Likewise.
2728 (_Move_assign_base::_M_destructive_move): Remove.
2729 * testsuite/20_util/variant/86874.cc: New test.
2732 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
2733 Replace macro with inline function.
2734 [__sun]: Increase alignment to meet memalign precondition.
2735 [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
2736 (aligned_alloc): Move check for valid alignment to operator new.
2737 Remove redundant check for non-zero size, it's enforced by the caller.
2738 (operator new): Move check for valid alignment here. Use
2739 __builtin_expect on check for zero size.
2741 * config/abi/pre/gnu.ver: Export monotonic_buffer_resource members.
2742 * include/std/memory_resource (monotonic_buffer_resource::release):
2743 Call _M_release_buffers to free buffers.
2744 (monotonic_buffer_resource::do_allocate): Call _M_new_buffer to
2745 allocate a new buffer from upstream.
2746 (monotonic_buffer_resource::_M_new_buffer): Declare.
2747 (monotonic_buffer_resource::_M_release_buffers): Declare.
2748 (monotonic_buffer_resource::_Chunk): Replace definition with
2749 declaration as opaque type.
2750 * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk):
2752 (monotonic_buffer_resource::_M_new_buffer): Define.
2753 (monotonic_buffer_resource::_M_release_buffers): Define.
2755 2018-08-05 François Dumont <fdumont@gcc.gnu.org>
2757 * include/bits/stl_iterator.h: Fix comment.
2759 2018-08-03 Jonathan Wakely <jwakely@redhat.com>
2761 * src/c++11/system_error.cc
2762 (system_error_category::default_error_condition): Add workaround for
2763 ENOTEMPTY and EEXIST having the same value on AIX.
2764 * testsuite/19_diagnostics/error_category/system_category.cc: Add
2765 extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
2767 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
2769 * configure: Regenerate.
2770 * configure.ac: Add -D_GLIBCXX_ASSERTIONS to default DEBUG_FLAGS.
2771 * src/c++11/futex.cc: Use __glibcxx_assert instead of
2772 _GLIBCXX_DEBUG_ASSERT.
2774 2018-08-01 Mike Crowe <mac@mcrowe.com>
2776 * include/std/condition_variable (wait_for): Use steady_clock.
2778 2018-08-01 Mike Crowe <mac@mcrowe.com>
2780 * include/std/condition_variable (wait_until): Only report timeout
2781 if we really have timed out when measured against the
2782 caller-supplied clock.
2783 * testsuite/30_threads/condition_variable/members/2.cc: Add test
2784 case to confirm above behaviour.
2786 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
2789 * src/c++11/system_error.cc
2790 (system_error_category::default_error_condition): New override to
2791 check for POSIX errno values.
2792 * testsuite/19_diagnostics/error_category/generic_category.cc: New
2793 * testsuite/19_diagnostics/error_category/system_category.cc: New
2796 2018-07-31 Jonathan Wakely <jwakely@redhat.com>
2799 * include/bits/stl_pair.h (__pair_base): New class with deleted copy
2800 assignment operator.
2801 (pair): Derive from __pair_base.
2802 (pair::operator=): Remove deleted overload.
2803 * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
2804 so that new base class isn't shown in GDB.
2805 * testsuite/20_util/pair/86751.cc: New test.
2806 * testsuite/20_util/pair/ref_assign.cc: New test.
2808 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
2809 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Move definitions here.
2810 (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Likewise. Use !__is_identifier
2811 instead of __has_builtin.
2812 * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
2813 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Remove definitions from here.
2814 * include/std/version [!_GLIBCXX_HAS_GTHREADS]
2815 (__cpp_lib_shared_timed_mutex, __cpp_lib_scoped_lock)
2816 (__cpp_lib_shared_mutex): Don't define when Gthreads not in use.
2817 [!_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP]
2818 (__cpp_lib_has_unique_object_representations): Don't define when
2819 builtin not available.
2820 [!_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE] (__cpp_lib_is_aggregate):
2822 [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
2823 * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
2826 * doc/xml/manual/test.xml: Improve documentation on writing tests for
2828 * doc/xml/manual/using.xml: Document all headers for C++11 and later.
2829 * doc/html/*: Regenerate.
2831 * include/ext/pointer.h [__cplusplus >= 201103L]
2832 (_Pointer_adapter::operator bool): Add explicit conversion operator
2833 to replace safe bool idiom.
2835 2018-07-30 Jonathan Wakely <jwakely@redhat.com>
2838 * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
2839 _S_to_pointer (LWG 1052, LWG 2118).
2840 (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
2841 * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
2842 * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
2844 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
2845 workaround for aligned_alloc bug on AIX.
2846 * testsuite/18_support/new_aligned.cc: New test.
2848 2018-07-26 Marek Polacek <polacek@redhat.com>
2850 * testsuite/30_threads/condition_variable_any/cond.cc: New.
2852 2018-07-26 Marek Polacek <polacek@redhat.com>
2854 * src/c++98/locale_init.cc: Fix #ifdef condition.
2856 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
2858 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
2859 dg-require-cstdint directive.
2860 * testsuite/20_util/allocator/overaligned.cc: Likewise.
2861 * testsuite/20_util/any/cons/aligned.cc: Likewise.
2862 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
2863 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
2864 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
2866 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
2867 * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
2868 * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
2869 * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
2870 * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
2871 random_device effective-target.
2872 * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
2873 * testsuite/25_algorithms/sample/1.cc: Require cstdint.
2874 * testsuite/25_algorithms/sample/2.cc: Likewise.
2875 * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
2877 * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
2879 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
2881 * testsuite/26_numerics/random/discard_block_engine/requirements/
2882 constexpr_data.cc: Likewise.
2883 * testsuite/26_numerics/random/discard_block_engine/requirements/
2884 constexpr_functions.cc: Likewise.
2885 * testsuite/26_numerics/random/independent_bits_engine/requirements/
2886 constexpr_functions.cc: Likewise.
2887 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
2888 constexpr_data.cc: Likewise.
2889 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
2890 constexpr_functions.cc: Likewise.
2891 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
2892 constexpr_data.cc: Likewise.
2893 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
2894 constexpr_functions.cc: Likewise.
2895 * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
2896 * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
2897 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
2898 constexpr_data.cc: Add dg-require-cstdint directive.
2899 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
2900 constexpr_functions.cc: Likewise.
2901 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
2902 constexpr_data.cc: Likewise.
2903 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
2904 constexpr_functions.cc: Likewise.
2905 * testsuite/26_numerics/random/uniform_real_distribution/operators/
2907 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
2908 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
2909 * testsuite/experimental/algorithm/sample.cc: Likewise.
2910 * testsuite/experimental/algorithm/search.cc: Likewise.
2911 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2912 * testsuite/experimental/any/cons/aligned.cc: Likewise.
2913 * testsuite/experimental/memory_resource/new_delete_resource.cc:
2915 * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
2916 * testsuite/experimental/random/randint.cc: Likewise.
2917 * testsuite/experimental/source_location/1.cc: Likewise.
2918 * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
2919 * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
2920 * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
2921 * testsuite/ext/new_allocator/overaligned.cc: Likewise.
2922 * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
2923 * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
2924 * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
2925 * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
2926 * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
2927 * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
2928 * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
2929 * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
2930 * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
2931 * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
2932 * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
2933 * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
2934 * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
2935 * testsuite/ext/throw_allocator/check_new.cc: Likewise.
2936 * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
2937 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
2938 * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
2939 * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
2940 * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
2942 * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
2943 * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
2944 * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
2945 * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
2947 * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
2948 * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
2949 * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
2951 * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
2953 * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
2955 * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
2956 * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
2957 * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
2958 * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
2959 * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
2960 * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
2962 * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
2964 * testsuite/30_threads/recursive_timed_mutex/dest/
2965 destructor_locked.cc: Likewise.
2966 * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
2967 * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
2968 * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
2970 * testsuite/30_threads/recursive_timed_mutex/native_handle/
2971 typesizes.cc: Likewise.
2972 * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
2974 * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
2976 * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
2978 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
2980 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
2982 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
2984 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
2986 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
2988 * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
2989 * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
2990 * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
2991 * testsuite/30_threads/scoped_lock/requirements/
2992 explicit_instantiation.cc: Likewise.
2993 * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
2994 * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
2995 * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
2996 * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
2997 * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
2998 * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
2999 * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
3000 * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
3001 * testsuite/30_threads/shared_future/members/get.cc: Likewise.
3002 * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
3003 * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
3004 * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
3005 * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
3006 * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
3007 * testsuite/30_threads/shared_future/requirements/
3008 explicit_instantiation.cc: Likewise.
3009 * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
3010 * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
3011 * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
3012 * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
3013 * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
3014 * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
3015 * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
3016 * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
3017 * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
3018 * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
3019 * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
3020 * testsuite/30_threads/shared_lock/requirements/
3021 explicit_instantiation.cc: Likewise.
3022 * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
3023 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
3024 * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
3025 * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
3026 * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
3028 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
3029 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
3030 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
3031 * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
3032 * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
3033 * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
3034 * testsuite/30_threads/shared_timed_mutex/requirements/
3035 standard_layout.cc: Likewise.
3036 * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
3037 * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
3038 * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
3039 * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
3040 * testsuite/30_threads/this_thread/1.cc: Likewise.
3041 * testsuite/30_threads/this_thread/2.cc: Likewise.
3042 * testsuite/30_threads/this_thread/3.cc: Likewise.
3043 * testsuite/30_threads/this_thread/4.cc: Likewise.
3044 * testsuite/30_threads/this_thread/58038.cc: Likewise.
3045 * testsuite/30_threads/thread/70503.cc: Likewise.
3046 * testsuite/30_threads/thread/84532.cc: Likewise.
3047 * testsuite/30_threads/thread/adl.cc: Likewise.
3048 * testsuite/30_threads/thread/cons/1.cc: Likewise.
3049 * testsuite/30_threads/thread/cons/2.cc: Likewise.
3050 * testsuite/30_threads/thread/cons/3.cc: Likewise.
3051 * testsuite/30_threads/thread/cons/4.cc: Likewise.
3052 * testsuite/30_threads/thread/cons/49668.cc: Likewise.
3053 * testsuite/30_threads/thread/cons/5.cc: Likewise.
3054 * testsuite/30_threads/thread/cons/6.cc: Likewise.
3055 * testsuite/30_threads/thread/cons/7.cc: Likewise.
3056 * testsuite/30_threads/thread/cons/8.cc: Likewise.
3057 * testsuite/30_threads/thread/cons/84535.cc: Likewise.
3058 * testsuite/30_threads/thread/cons/9.cc: Likewise.
3059 * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
3060 * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
3061 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
3062 * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
3063 * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
3064 * testsuite/30_threads/thread/id/operators.cc: Likewise.
3065 * testsuite/30_threads/thread/members/1.cc: Likewise.
3066 * testsuite/30_threads/thread/members/2.cc: Likewise.
3067 * testsuite/30_threads/thread/members/3.cc: Likewise.
3068 * testsuite/30_threads/thread/members/4.cc: Likewise.
3069 * testsuite/30_threads/thread/members/5.cc: Likewise.
3070 * testsuite/30_threads/thread/members/hardware_concurrency.cc:
3072 * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
3073 * testsuite/30_threads/thread/swap/1.cc: Likewise.
3074 * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
3075 * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
3076 * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
3077 * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
3078 * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
3079 * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
3080 * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
3082 * testsuite/30_threads/timed_mutex/requirements/
3083 standard_layout.cc: Likewise.
3084 * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
3085 * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
3086 * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
3087 * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
3088 * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
3089 * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
3090 * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
3091 * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
3092 * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
3093 * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
3094 * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
3095 * testsuite/30_threads/try_lock/1.cc: Likewise.
3096 * testsuite/30_threads/try_lock/2.cc: Likewise.
3097 * testsuite/30_threads/try_lock/3.cc: Likewise.
3098 * testsuite/30_threads/try_lock/4.cc: Likewise.
3099 * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
3100 * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
3101 * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
3102 * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
3103 * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
3104 * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
3105 * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
3106 * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
3107 * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
3108 * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
3109 * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
3110 * testsuite/30_threads/unique_lock/requirements/
3111 explicit_instantiation.cc: Likewise.
3112 * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
3114 * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
3116 * testsuite/30_threads/async/49668.cc: Likewise.
3117 * testsuite/30_threads/async/54297.cc: Likewise.
3118 * testsuite/30_threads/async/84532.cc: Likewise.
3119 * testsuite/30_threads/async/any.cc: Likewise.
3120 * testsuite/30_threads/async/async.cc: Likewise.
3121 * testsuite/30_threads/async/except.cc: Likewise.
3122 * testsuite/30_threads/async/forced_unwind.cc: Likewise.
3123 * testsuite/30_threads/async/launch.cc: Likewise.
3124 * testsuite/30_threads/async/lwg2021.cc: Likewise.
3125 * testsuite/30_threads/async/sync.cc: Likewise.
3126 * testsuite/30_threads/call_once/39909.cc: Likewise.
3127 * testsuite/30_threads/call_once/49668.cc: Likewise.
3128 * testsuite/30_threads/call_once/60497.cc: Likewise.
3129 * testsuite/30_threads/call_once/call_once1.cc: Likewise.
3130 * testsuite/30_threads/call_once/constexpr.cc: Likewise.
3131 * testsuite/30_threads/call_once/dr2442.cc: Likewise.
3132 * testsuite/30_threads/call_once/once_flag.cc: Likewise.
3133 * testsuite/30_threads/condition_variable/54185.cc: Likewise.
3134 * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
3135 * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
3137 * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
3138 * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
3139 * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
3140 * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
3141 * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
3142 * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
3143 * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
3145 * testsuite/30_threads/condition_variable/requirements/
3146 standard_layout.cc: Likewise.
3147 * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
3149 * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
3150 * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
3151 * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
3152 * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
3154 * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
3156 * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
3157 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
3158 * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
3159 * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
3160 * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
3161 * testsuite/30_threads/future/cons/default.cc: Likewise.
3162 * testsuite/30_threads/future/cons/move.cc: Likewise.
3163 * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
3164 * testsuite/30_threads/future/members/45133.cc: Likewise.
3165 * testsuite/30_threads/future/members/get.cc: Likewise.
3166 * testsuite/30_threads/future/members/get2.cc: Likewise.
3167 * testsuite/30_threads/future/members/share.cc: Likewise.
3168 * testsuite/30_threads/future/members/valid.cc: Likewise.
3169 * testsuite/30_threads/future/members/wait.cc: Likewise.
3170 * testsuite/30_threads/future/members/wait_for.cc: Likewise.
3171 * testsuite/30_threads/future/members/wait_until.cc: Likewise.
3172 * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
3174 * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
3176 * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
3177 * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
3178 * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
3179 * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
3180 * testsuite/30_threads/lock/1.cc: Likewise.
3181 * testsuite/30_threads/lock/2.cc: Likewise.
3182 * testsuite/30_threads/lock/3.cc: Likewise.
3183 * testsuite/30_threads/lock/4.cc: Likewise.
3184 * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
3185 * testsuite/30_threads/lock_guard/requirements/
3186 explicit_instantiation.cc: Likewise.
3187 * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
3188 * testsuite/30_threads/mutex/cons/1.cc: Likewise.
3189 * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
3190 * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
3191 * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
3192 * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
3193 * testsuite/30_threads/mutex/lock/1.cc: Likewise.
3194 * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
3195 * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
3196 * testsuite/30_threads/mutex/requirements/standard_layout.cc::
3198 * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
3199 * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
3200 * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
3201 * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
3202 * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
3203 * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
3204 * testsuite/30_threads/packaged_task/49668.cc: Likewise.
3205 * testsuite/30_threads/packaged_task/60564.cc: Likewise.
3206 * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
3207 * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
3208 * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
3209 * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
3210 * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
3211 * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
3212 * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
3213 * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
3214 * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
3215 * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
3216 * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
3217 * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
3219 * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
3220 * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
3221 * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
3222 * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
3223 * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
3224 * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
3225 * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
3226 * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
3227 * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
3228 * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
3229 * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
3230 * testsuite/30_threads/packaged_task/requirements/
3231 explicit_instantiation.cc: Likewise.
3232 * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
3233 * testsuite/30_threads/promise/60966.cc: Likewise.
3234 * testsuite/30_threads/promise/69106.cc: Likewise.
3235 * testsuite/30_threads/promise/cons/1.cc: Likewise.
3236 * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
3237 * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
3238 * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
3239 * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
3240 * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
3241 * testsuite/30_threads/promise/cons/move.cc: Likewise.
3242 * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
3243 * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
3244 * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
3245 * testsuite/30_threads/promise/members/get_future.cc: Likewise.
3246 * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
3247 * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
3248 * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
3249 * testsuite/30_threads/promise/members/set_value.cc: Likewise.
3250 * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
3251 * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
3252 * testsuite/30_threads/promise/members/swap.cc: Likewise.
3253 * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
3255 * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
3257 * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
3259 * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
3260 * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
3261 * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
3262 * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
3263 * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
3264 * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
3265 * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
3266 * testsuite/20_util/duration/cons/1.cc: Likewise.
3267 * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
3268 * testsuite/20_util/duration/cons/2.cc: Likewise.
3269 * testsuite/20_util/duration/cons/54025.cc: Likewise.
3270 * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
3271 * testsuite/20_util/duration/requirements/explicit_instantiation/
3272 explicit_instantiation.cc: Likewise.
3273 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
3274 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
3275 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
3276 * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
3277 * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
3278 * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
3279 * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
3280 * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
3281 * testsuite/20_util/ratio/operations/45866.cc: Likewise.
3282 * testsuite/20_util/ratio/operations/47913.cc: Likewise.
3283 * testsuite/20_util/ratio/operations/53840.cc: Likewise.
3284 * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
3285 * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
3286 * testsuite/20_util/system_clock/1.cc: Likewise.
3287 * testsuite/20_util/time_point/1.cc: Likewise.
3288 * testsuite/20_util/time_point/2.cc: Likewise.
3289 * testsuite/20_util/time_point/3.cc: Likewise.
3290 * testsuite/20_util/time_point/requirements/explicit_instantiation/
3291 explicit_instantiation.cc: Likewise.
3292 * testsuite/21_strings/basic_string/requirements/
3293 explicit_instantiation/char16_t/1.cc: Likewise.
3294 * testsuite/21_strings/basic_string/requirements/
3295 explicit_instantiation/char32_t/1.cc: Likewise.
3296 * testsuite/21_strings/basic_string_view/requirements/
3297 explicit_instantiation/char16_t/1.cc: Likewise.
3298 * testsuite/21_strings/basic_string_view/requirements/
3299 explicit_instantiation/char32_t/1.cc: Likewise.
3300 * testsuite/21_strings/char_traits/requirements/
3301 explicit_instantiation/char16_t/1.cc: Likewise.
3302 * testsuite/21_strings/char_traits/requirements/
3303 explicit_instantiation/char32_t/1.cc: Likewise.
3304 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
3305 * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
3306 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
3307 * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
3309 * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
3311 * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
3313 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
3314 * testsuite/23_containers/vector/bool/72847.cc: Likewise.
3315 * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
3317 * testsuite/experimental/string_view/requirements/
3318 explicit_instantiation/char16_t/1.cc: Likewise.
3319 * testsuite/experimental/string_view/requirements/
3320 explicit_instantiation/char32_t/1.cc: Likewise.
3321 * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
3323 * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
3326 * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3327 (random_condition, throw_value_random, throw_allocator_random)
3328 (std::hash<throw_value_random>): Do not define when <tr1/random> is
3330 * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
3331 define transactional memory support when <stdint.h> is not usable.
3333 * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
3334 implementation that doesn't depend on <stdint.h> types.
3335 * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
3336 std::size_t when std::uintptr_t is not usable.
3337 [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
3338 (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
3339 Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
3341 * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3342 (hash<u16string>, hash<u32string>): Remove dependency on
3343 _GLIBCXX_USE_C99_STDINT_TR1.
3344 * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3345 (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
3346 _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
3347 __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
3348 * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3349 (codecvt<char16_t, char, mbstate_t>)
3350 (codecvt<char32_t, char, mbstate_t>)
3351 (codecvt_byname<char16_t, char, mbstate_t>)
3352 (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
3353 on _GLIBCXX_USE_C99_STDINT_TR1.
3354 * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3355 (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
3356 * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3357 (char_traits<char16_t>, char_traits<char32_t>)
3358 (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
3359 on _GLIBCXX_USE_C99_STDINT_TR1.
3360 * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
3361 (u16string_view, u32string_view, hash<u16string_view>)
3362 (hash<u32string_view>, operator""sv(const char16_t, size_t))
3363 (operator""sv(const char32_t, size_t)): Likewise.
3364 * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3365 (hash<__u16vstring>, hash<__u32vstring>): Likewise.
3366 * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3367 (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
3368 (__u32sso_string, __u32rc_string): Likewise.
3369 * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
3370 (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
3371 * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
3372 (u16string_view, u32string_view, hash<u16string_view>)
3373 (hash<u32string_view>, operator""sv(const char16_t, size_t))
3374 (operator""sv(const char32_t, size_t)): Likewise.
3375 * src/c++11/codecvt.cc: Likewise.
3376 * src/c++98/locale_init.cc: Likewise.
3377 * src/c++98/localename.cc: Likewise.
3379 * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3380 (__atomic_futex_unsigned_base): Remove dependency on
3381 _GLIBCXX_USE_C99_STDINT_TR1 macro.
3382 * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3383 (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
3384 * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
3385 (uintmax_t): Define using predefined macros.
3386 * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
3387 (time_point, system_clock, high_resolution_clock, steady_clock): Remove
3388 dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
3389 (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
3390 [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
3391 long long when <stdint.h> is not usable.
3392 * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
3393 (condition_variable, condition_variable_any): Remove dependency on
3394 _GLIBCXX_USE_C99_STDINT_TR1.
3395 * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
3396 (packaged_task, async): Likewise.
3397 * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
3398 (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
3399 (once_flag, call_once): Likewise.
3400 * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
3401 * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
3402 (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
3403 * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
3404 (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
3405 (this_thread::sleep_until): Likewise.
3406 * src/c++11/chrono.cc: Remove dependency on
3407 _GLIBCXX_USE_C99_STDINT_TR1 macro.
3408 * src/c++11/condition_variable.cc: Likewise.
3409 * src/c++11/futex.cc: Likewise.
3410 * src/c++11/future.cc: Likewise.
3411 * src/c++11/mutex.cc: Likewise.
3412 * src/c++11/thread.cc: Likewise.
3413 * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
3414 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
3415 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
3416 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
3417 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
3418 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
3420 2018-07-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3423 * testsuite/experimental/memory_resource/new_delete_resource.cc:
3424 xfail execution on 32-bit Solaris/x86.
3426 2018-07-26 Marc Glisse <marc.glisse@inria.fr>
3428 * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
3429 (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
3430 (vector::_M_move_assign): Reorder the swaps.
3432 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
3435 * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
3436 same alignment for post-release allocation.
3438 2018-07-25 Jonathan Wakely <jwakely@redhat.com>
3441 * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
3442 buffer being misaligned and so returned pointer not being at start.
3444 * include/experimental/memory_resource: Include <cstddef> header.
3446 * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
3447 * src/Makefile.am: Add comment.
3448 * src/c++17/Makefile.in: Regenerate.
3450 * include/Makefile.am: Add new <bits/unique_lock.h> header.
3451 * include/Makefile.in: Regenerate.
3452 * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
3453 (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
3454 (unique_lock): Move definition to ...
3455 * include/bits/unique_lock.h: New header.
3456 [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
3457 [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
3458 (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
3459 (unique_lock::try_lock_for): Define only when <chrono> is usable.
3460 * include/std/condition_variable: Include <bits/unique_lock.h>.
3461 * include/std/mutex: Likewise.
3463 2018-07-24 Jonathan Wakely <jwakely@redhat.com>
3465 * config/abi/pre/gnu.ver: Export new symbols.
3466 * configure: Regenerate.
3467 * include/Makefile.am: Add new <memory_resource> header.
3468 * include/Makefile.in: Regenerate.
3469 * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
3470 * include/std/memory_resource: New header.
3471 (memory_resource, polymorphic_allocator, new_delete_resource)
3472 (null_memory_resource, set_default_resource, get_default_resource)
3473 (pool_options, monotonic_buffer_resource): Define.
3474 * src/Makefile.am: Add c++17 directory.
3475 * src/Makefile.in: Regenerate.
3476 * src/c++11/Makefile.am: Fix comment.
3477 * src/c++17/Makefile.am: Add makefile for new sub-directory.
3478 * src/c++17/Makefile.in: Generate.
3479 * src/c++17/memory_resource.cc: New.
3480 (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
3481 (default_res, new_delete_resource, null_memory_resource)
3482 (set_default_resource, get_default_resource): Define.
3483 * testsuite/20_util/memory_resource/1.cc: New test.
3484 * testsuite/20_util/memory_resource/2.cc: New test.
3485 * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
3486 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
3487 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
3488 * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
3489 * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
3491 * testsuite/20_util/polymorphic_allocator/1.cc: New test.
3492 * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
3493 * testsuite/20_util/polymorphic_allocator/select.cc: New test.
3494 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
3495 Define concrete memory resource for testing.
3496 (__gnu_test::default_resource_mgr): Define RAII helper for changing
3500 * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
3501 parameter by reference, to avoid copying invalid iterators.
3502 * testsuite/25_algorithms/copy/86658.cc: New test.
3504 * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
3505 local variables for number of digits instead of type aliases.
3506 (__log2p1): Remove redundant branch also checked in __countl_zero.
3508 * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
3509 conditions. Add comments.
3510 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
3511 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
3512 * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
3514 * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
3515 (__uses_allocator_helper): Check conditions directly instead of
3516 using __is_erased_or_convertible.
3518 * include/experimental/memory_resource: Adjust comments and
3520 (__resource_adaptor_imp): Add second template parameter for type of
3521 memory resource base class.
3522 (memory_resource): Define default constructor, destructor, copy
3523 constructor and copy assignment operator as defaulted.
3526 * include/experimental/memory_resource (__get_default_resource): Use
3527 placement new to create an object with dynamic storage duration.
3529 2018-07-23 Jonathan Wakely <jwakely@redhat.com>
3532 * include/experimental/memory_resource
3533 (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
3534 (__resource_adaptor_common::__guaranteed_alignment): New helper to
3535 give maximum alignment an allocator guarantees. Specialize for known
3536 allocators using new and malloc.
3537 (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
3538 (__resource_adaptor_imp::do_deallocate): Likewise.
3539 * testsuite/experimental/memory_resource/new_delete_resource.cc:
3540 Check that new and delete are called with expected sizes.
3542 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
3545 * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
3548 2018-07-20 Fangrui Song <maskray@google.com>
3550 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
3551 _GLIBCXX_VISIBILITY(default).
3553 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
3556 * include/std/version: Move __cpp_lib_list_remove_return_type macro.
3558 2018-07-19 Jonathan Wakely <jwakely@redhat.com>
3560 * include/std/type_traits (__is_member_object_pointer_helper): Use
3561 __not_<is_function<_Tp>>::type instead of integral_constant.
3562 (__is_member_function_pointer_helper): Likewise for
3563 is_function<_Tp>::type.
3564 (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
3565 (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
3566 (is_trivially_constructible): Remove redundant use of
3568 (__is_trivially_copy_assignable_impl): Remove redundant use of
3570 (__is_trivially_move_assignable_impl): Remove redundant use of
3572 (is_trivially_destructible): Use __bool_constant.
3573 * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
3574 tests for scalar types.
3576 2018-07-19 Glen Joseph Fernandes <glenjofe@gmail.com>
3578 * include/bits/stl_algobase.h (__copy_move_a): Used
3579 __is_trivially_copyable.
3580 (__copy_move_backward_a): Likewise.
3581 * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
3584 2018-07-17 Jonathan Wakely <jwakely@redhat.com>
3587 * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
3588 (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
3589 * configure: Regenerate.
3590 * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
3591 * doc/Makefile.in: Regenerate.
3592 * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
3593 * include/Makefile.in: Regenerate.
3594 * libsupc++/Makefile.in: Regenerate.
3595 * po/Makefile.in: Regenerate.
3596 * python/Makefile.in: Regenerate.
3597 * src/Makefile.in: Regenerate.
3598 * src/c++11/Makefile.in: Regenerate.
3599 * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
3600 from -Wabi=2 that don't affect exported symbols.
3601 * src/c++98/Makefile.in: Regenerate.
3602 * src/filesystem/Makefile.in: Regenerate.
3603 * testsuite/Makefile.in: Regenerate.
3605 * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
3606 (_Async_state_common::_M_join): Simplify use of std::call_once and
3607 corresponding explicit instantiation.
3608 (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
3609 (__bind_simple): Remove definitions and explicit instantiation that
3610 are not required by exported symbols.
3612 2018-07-16 Jonathan Wakely <jwakely@redhat.com>
3614 * scripts/create_testsuite_files: Fix typo in comment.
3617 * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
3618 non-standard partial specialization.
3619 * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
3620 (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
3621 * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
3623 2018-07-16 Andreas Krebbel <krebbel@linux.ibm.com>
3625 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
3626 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
3627 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3629 2018-07-06 François Dumont <fdumont@gcc.gnu.org>
3631 * include/debug/functions.h (__gnu_debug::__check_string): Move...
3632 * include/debug/string (__gnu_debug::__check_string): ... here.
3633 (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
3634 (__glibcxx_check_string_n_constructor): New.
3635 (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
3637 (__glibcxx_check_string_constructor): New.
3638 (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
3640 * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
3641 * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
3643 2018-07-06 Jonathan Wakely <jwakely@redhat.com>
3645 PR libstdc++/84928 use std::move in <numeric> algorithms
3646 * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
3647 conditionally move, according to __cplusplus value.
3648 (accumulate, inner_product, partial_sum, adjacent_difference): Use
3649 _GLIBCXX_MOVE_IF_20.
3650 * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
3651 * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
3652 * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
3653 * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
3655 * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
3657 P0935R0 Eradicating unnecessarily explicit default constructors
3658 * config/abi/pre/gnu.ver: Tighten existing patterns and export new
3659 default constructor symbols.
3660 * include/std/sstream (basic_stringbuf, basic_istringstream)
3661 (basic_ostringstream, basic_stringstream): Remove default arguments
3662 from explicit constructors taking ios_base::openmode and add separate
3663 non-explicit default constructors.
3664 * testsuite/27_io/basic_istringstream/cons/default.cc: New.
3665 * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
3666 * testsuite/27_io/basic_stringstream/cons/default.cc: New.
3667 * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
3668 * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
3670 * include/std/variant (__accepted_index): Use void_t.
3672 2018-07-05 Jonathan Wakely <jwakely@redhat.com>
3675 * config/abi/pre/gnu.ver: Export move constructors and move
3676 assignment operators for std::logic_error and std::runtime_error.
3677 * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
3678 _GLIBCXX_USE_NOEXCEPT.
3679 (logic_error, runtime_error): Declare move constructors and move
3680 assignment operators. When not declared already, define copy
3681 constructors and copy assignment operators as explicit-defaulted.
3682 (domain_error, invalid_argument, length_error, out_of_range)
3683 (overflow_error, underflow_error): Define move constructors and move
3684 assignment operators as explicitly-defaulted.
3685 * libsupc++/exception.h (exception): Likewise.
3686 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
3687 move constructors and move assignment operators as defaulted.
3688 * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
3689 assignment operators are defined.
3691 * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
3693 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3695 * testsuite/21_strings/basic_string/requirements/
3696 explicit_instantiation/debug.cc: Likewise.
3699 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3700 (basic_string::assign(basic_string&&)): Add conditional noexcept
3701 depending on the allocator's is_always_equal property (LWG 2063).
3702 * testsuite/21_strings/basic_string/modifiers/assign/char/
3703 move_assign.cc: Check for non-throwing exception specification.
3704 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
3705 move_assign.cc: Likewise.
3708 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3709 [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
3710 Add GLIBCXX_NOEXCEPT.
3711 (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
3712 to depend on the allocator's is_always_equal property (LWG 2063).
3713 (basic_string::swap(basic_string&)): Likewise.
3714 * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
3715 (basic_string::swap(basic_string&)): Likewise.
3716 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
3717 Check is_nothrow_move_assignable.
3718 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
3719 Check is_nothrow_move_assignable.
3720 * testsuite/21_strings/basic_string/cons/char/
3721 noexcept_move_construct.cc: Likewise.
3722 * testsuite/21_strings/basic_string/cons/wchar_t/
3723 noexcept_move_construct.cc: Likewise.
3725 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3727 P0646R1 Improving the Return Value of Erase-Like Algorithms I
3728 * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
3730 (forward_list::__remove_return_type): Define typedef as size_type or
3731 void, according to __cplusplus value.
3732 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
3733 empty, according to __cplusplus value.
3734 (forward_list::remove, forward_list::unique): Use typedef and macro
3735 to change return type and add abi-tag for C++2a.
3736 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
3737 typedef to change return type for C++2a.
3738 * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
3739 (forward_list::remove, forward_list::remove_if<Pred>)
3740 (forward_list::unique<BinPred>): Return number of removed elements
3742 * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
3743 (list::remove, list::unique, list::remove_if<Predicate>)
3744 (list::unique<BinaryPredicate>): Return number of removed elements
3746 * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
3747 (list::__remove_return_type): Define typedef as size_type or
3748 void, according to __cplusplus value.
3749 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
3750 empty, according to __cplusplus value.
3751 (list::remove, list::unique): Use typedef and macro to change return
3752 type and add abi-tag for C++2a.
3753 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
3754 typedef to change return type for C++2a.
3755 * include/std/version (__cpp_lib_list_remove_return_type): Define.
3756 * testsuite/23_containers/forward_list/operations/
3757 remove_cxx20_return.cc: New.
3758 * testsuite/23_containers/forward_list/operations/
3759 unique_cxx20_return.cc: New.
3761 P0458R2 Checking for Existence of an Element in Associative Containers
3762 * include/bits/stl_map.h (map::contains): Add for C++2a.
3763 * include/bits/stl_multimap.h (multimap::contains): Likewise.
3764 * include/bits/stl_multiset.h (multiset::contains): Likewise.
3765 * include/bits/stl_set.h (set::contains): Likewise.
3766 * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
3767 (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
3768 (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
3769 (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
3770 * include/bits/unordered_map.h (unordered_map::contains)
3771 (unordered_multimap::contains): Add for C++2a.
3772 * include/bits/unordered_set.h (unordered_set::contains)
3773 (unordered_multiset::contains): Likewise.
3774 * testsuite/23_containers/map/operations/contains.cc: New.
3775 * testsuite/23_containers/multimap/operations/contains.cc: New.
3776 * testsuite/23_containers/multiset/operations/contains.cc: New.
3777 * testsuite/23_containers/set/operations/contains.cc: New.
3778 * testsuite/23_containers/unordered_map/operations/contains.cc: New.
3779 * testsuite/23_containers/unordered_multimap/operations/contains.cc:
3781 * testsuite/23_containers/unordered_multiset/operations/contains.cc:
3783 * testsuite/23_containers/unordered_set/operations/contains.cc: New.
3785 2018-07-04 François Dumont <fdumont@gcc.gnu.org>
3788 * include/debug/string
3789 (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
3790 Use __glibcxx_check_insert_range.
3791 * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
3792 __gnu_debug::string when _GLIBCXX_DEBUG.
3793 * 21_strings/basic_string/init-list.cc: Likewise.
3794 * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
3795 * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
3796 * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
3797 * 21_strings/basic_string/types/1.cc: Likewise.
3799 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3801 * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
3802 target for std::random_device.
3803 * testsuite/26_numerics/random/random_device/cons/default.cc:
3805 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
3806 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
3807 * testsuite/experimental/random/randint.cc: Likewise.
3808 * testsuite/lib/libstdc++.exp
3809 (check_effective_target_random_device): New proc.
3811 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3812 Jakub Jelinek <jakub@redhat.com>
3814 * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
3816 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3819 * include/std/type_traits (is_trivially_constructible): Check
3820 is_constructible before __is_trivially_constructible.
3821 * testsuite/20_util/is_trivially_constructible/value.cc: Add more
3822 tests, including negative cases.
3823 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
3824 zero for dg-error lineno.
3825 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
3828 * include/std/bit (__rotl, __rotr): Avoid branch.
3829 (_If_is_unsigned_integer): Use remove_cv_t.
3830 * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
3832 2018-07-03 Jonathan Wakely <jwakely@redhat.com>
3834 P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
3835 * include/Makefile.am: Add new header.
3836 * include/Makefile.in: Regenerate.
3837 * include/precompiled/stdc++.h: Include new header.
3838 * include/std/bit: New header.
3839 (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
3840 (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
3842 [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
3843 (countr_one, popcount): Define for C++2a. Also overload for std::byte.
3844 (ispow2, ceil2, floor2, log2p1): Define for C++2a.
3845 [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
3847 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
3848 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
3849 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
3850 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
3851 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
3852 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
3853 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
3854 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
3855 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
3856 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
3858 * include/bits/alloc_traits.h: Remove redundant preprocessor
3861 2018-07-03 François Dumont <fdumont@gcc.gnu.org>
3863 * include/bits/stl_algobase.h (__niter_wrap): New.
3864 (__copy_move_a2(_II, _II, _OI)): Use latter.
3865 (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
3866 (fill_n(_OI, _Size, const _Tp&)): Likewise.
3867 (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
3868 * include/debug/stl_iterator.h
3869 (std::__niter_base(const __gnu_cxx::_Safe_iterator<
3870 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
3871 * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
3872 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
3874 2018-07-02 Jonathan Wakely <jwakely@redhat.com>
3876 P0758R1 Implicit conversion traits
3877 * include/std/type_traits [__cplusplus > 201703]
3878 (__is_convertible_helper::__is_nothrow_type): Define new member.
3879 (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
3881 (__is_convertible_helper<_From, _To, false>::__test_nothrow)
3882 (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
3884 (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
3885 * testsuite/20_util/is_nothrow_convertible/value.cc: New.
3886 * testsuite/20_util/is_nothrow_convertible/requirements/
3887 explicit_instantiation.cc: New.
3888 * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
3891 P0887R1 The identity metafunction
3892 * include/std/type_traits (type_identity, type_identity_t): Define
3894 * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
3895 * testsuite/20_util/type_identity/requirements/
3896 explicit_instantiation.cc:New.
3897 * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
3899 * include/bits/regex.h (sub_match::operator string_type): Call str().
3900 (sub_match::compare): Use _M_str() instead of str().
3901 (sub_match::_M_compare): New public function.
3902 (sub_match::__string_view): New helper type.
3903 (sub_match::_M_str): New overloaded functions to avoid creating a
3904 string_type object when not needed.
3905 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
3906 Use sub_match::_M_compare instead of creating string_type objects.
3907 Fix Doxygen comments.
3908 * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
3909 (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
3911 (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
3913 * include/std/type_traits (__enable_if_t): Define for C++11.
3914 * testsuite/28_regex/sub_match/compare.cc: New.
3915 * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
3917 (input_iterator_wrapper): Use remove_cv for value_type argument of
3918 std::iterator base class.
3920 2018-06-29 Jonathan Wakely <jwakely@redhat.com>
3922 * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
3923 Add whitespace to dejagnu directive.
3924 * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
3926 2018-06-27 François Dumont <fdumont@gcc.gnu.org>
3928 * include/bits/stl_vector.h
3929 (struct _Vector_base<>::_Vector_impl_data): New.
3930 (struct _Vector_base<>::_Vector_impl): Inherit from latter.
3931 (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
3932 (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
3933 (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
3934 (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
3935 (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
3936 (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
3937 (_Vector_base()): Default.
3938 (_Vector_base(_Vector_base&&)): Default.
3939 (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
3940 (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
3941 (_Vector_base::_M_create_storage(size_t)): Make protected.
3942 (vector()): Default.
3943 (vector(vector&&)): Default.
3944 (vector(vector&&, const allocator_type&, true_type)): New.
3945 (vector(vector&&, const allocator_type&, false_type)): New.
3946 (vector(vector&&, const allocator_type&)): Use latters.
3947 (vector(_InputIte, _InputIte, const allocator_type&)): Call
3948 _M_range_initialize directly.
3949 * include/debug/vector
3950 (vector(vector&&, const allocator_type&)): Add noexcept qualification.
3951 * testsuite/23_containers/vector/allocator/default_init.cc: New.
3952 * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
3955 2018-06-27 Jonathan Wakely <jwakely@redhat.com>
3957 * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
3958 (__is_byte<byte>): Define specialization for std::byte.
3961 * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
3962 Declare explicit instantiations of COW empty reps and I/O functions.
3964 2018-06-26 David Edelsohn <dje.gcc@gmail.com>
3966 * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
3968 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
3970 2018-06-26 Jonathan Wakely <jwakely@redhat.com>
3972 * include/bits/regex.tcc (regex_iterator::operator==): Add missing
3975 2018-06-25 Jonathan Wakely <jwakely@redhat.com>
3978 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
3979 Replace dict comprehension.
3982 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3985 * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
3986 Add try-catch block.
3987 * testsuite/23_containers/vector/cons/86292.cc: New.
3989 * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
3991 * include/experimental/algorithm (sample, shuffle): Add new overloads
3992 using per-thread random number engine.
3993 * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
3994 dependencies by using __gnu_test::test_container.
3995 * testsuite/experimental/algorithm/sample-2.cc: New.
3996 * testsuite/experimental/algorithm/shuffle.cc: New.
3998 2018-06-22 Jonathan Wakely <jwakely@redhat.com>
4000 * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
4001 different size_t mangling on 32-bit targets.
4004 * include/experimental/memory_resource
4005 (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
4006 enough for result of left shift.
4009 * include/bits/basic_string.tcc:
4010 [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
4011 (basic_string<char>::_Rep::_S_empty_rep_storage)
4012 (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
4013 instantiation declarations.
4014 [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
4015 explicit instantiation declarations.
4016 * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
4017 * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
4019 2018-06-21 Jonathan Wakely <jwakely@redhat.com>
4022 * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
4023 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
4024 * configure: Regenerate.
4025 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
4026 (basic_string::insert(const_iterator, initializer_list<C>)): Add.
4027 [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
4028 (basic_string::insert(iterator, initializer_list<C>)): Suppress
4030 * include/debug/string (basic_string::insert(iterator, C)): Change
4031 first parameter to const_iterator.
4032 (basic_string::insert(iterator, size_type, C)): Likewise. Change
4033 return type to iterator.
4034 (basic_string::insert(iterator, InputIterator, InputIterator)):
4036 (basic_string::insert(iterator, initializer_list<C>)): Change first
4037 parameter to const_iterator and return type to iterator.
4038 * src/c++11/string-inst.cc: Extend comment.
4039 * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
4041 * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
4043 * testsuite/util/testsuite_abi.cc: Add new symbol version.
4045 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
4048 * include/experimental/memory_resource
4049 (__resource_adaptor_imp::do_deallocate): Add missing return.
4050 * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
4051 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
4052 resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
4053 __gnu_cxx::malloc_allocator.
4056 * include/experimental/memory_resource (__resource_adaptor_common):
4058 (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
4059 pointer from unaligned, and vice versa.
4060 (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
4061 allocated pointer to meet alignment request.
4062 (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
4063 original pointer for deallocation.
4064 (__resource_adaptor_imp::do_is_equal): Reformat.
4065 (__resource_adaptor_imp::_S_aligned_size): Remove.
4066 (__resource_adaptor_imp::_S_supported): Remove.
4067 (new_delete_resource): Use __gnu_cxx::new_allocator.
4068 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
4069 extended alignments and use debug_allocator to check for matching
4070 allocate/deallocate pairs.
4072 2018-06-21 François Dumont <fdumont@gcc.gnu.org>
4074 * include/debug/safe_iterator.h
4075 (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
4076 Compare __x base iterator with a value-initialized iterator of the
4079 2018-06-20 Jonathan Wakely <jwakely@redhat.com>
4082 * include/experimental/memory_resource (__resource_adaptor_imp): Add
4083 static assertions to enforce requirements on pointer types.
4084 (__resource_adaptor_imp::get_allocator()): Add noexcept.
4085 (new_delete_resource, null_memory_resource): Return address of an
4086 object with dynamic storage duration.
4087 (__null_memory_resource): Remove.
4088 * testsuite/experimental/memory_resource/70966.cc: New.
4090 * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
4091 missed from recent commit.
4093 2018-06-19 Jonathan Wakely <jwakely@redhat.com>
4095 * include/std/utility: Remove unused <exception> header.
4097 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
4099 LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
4100 * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
4101 (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
4102 a specialization of std::pair.
4103 * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
4104 pair elements are constructed correctly.
4106 LWG 2989 hide path iostream operators from normal lookup
4107 * include/bits/fs_path.h (operator<<, operator>>): Define inline as
4109 * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
4111 LWG 3050 Fix cv-qualification of convertibility constraints
4112 * include/std/chrono (duration, operator*, operator/, operator%): Use
4113 const-qualified type as source type in is_convertible constraints.
4114 * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
4115 * testsuite/20_util/duration/cons/dr3050.cc: New.
4116 * testsuite/20_util/duration/literals/range.cc: Rename to...
4117 * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
4120 2018-06-18 Maya Rashish <coypu@sdf.org>
4122 * crossconfig.m4: Handle OpenBSD just like NetBSD.
4123 * configure: Rebuilt.
4125 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
4127 P0754R2 <version> header
4128 * include/Makefile.am: Add new header.
4129 * include/Makefile.in: Regenerate.
4130 * include/bits/c++config: Change doxygen comment to suggest <version>
4131 instead of <iosfwd>.
4132 * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
4133 unconditionally. Add C++17 and C++20 headers.
4134 * include/std/version: New header.
4135 * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
4136 * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
4137 * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
4138 * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
4139 * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
4140 * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
4141 * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
4143 * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
4144 * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
4145 * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
4146 * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
4147 * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
4148 * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
4149 * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
4151 * testsuite/18_support/headers/version/macros.cc: New.
4152 * testsuite/18_support/headers/version/macros.cc: New.
4154 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
4155 enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
4157 * config.h.in: Regenerate.
4158 * configure: Regenerate.
4159 * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
4161 LWG 3035. std::allocator's constructors should be constexpr
4162 * include/bits/allocator.h (allocator): Add constexpr to constructors
4163 for C++2a. Replace dynamic exception specifications with NOTHROW
4165 (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
4167 * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
4168 * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
4169 to constructors for C++2a.
4170 * include/ext/new_allocator.h (new_allocator): Likewise.
4172 2018-06-16 Jonathan Wakely <jwakely@redhat.com>
4174 LWG 3076 basic_string CTAD ambiguity
4175 * doc/xml/manual/intro.xml: Document LWG 3076 change.
4176 * include/bits/basic_string.h
4177 [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
4178 (basic_string(const _CharT*, const _Alloc&)): Turn into a function
4179 template constrained by _RequireAllocator.
4180 (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
4181 * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
4183 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
4185 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
4188 2018-06-15 Jonathan Wakely <jwakely@redhat.com>
4191 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
4192 (basic_string::data()): Unshare string.
4193 * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
4196 * include/std/string_view (basic_string_view(const CharT*)): Remove
4197 check for null pointer and add nonnull attribute.
4198 (compare(const CharT*), compare(size_type, size_type, const CharT*))
4199 (find(const CharT*, size_type), rfind(const CharT*, size_type))
4200 (find_first_of(const CharT*, size_type))
4201 (find_last_of(const CharT*, size_type))
4202 (find_first_not_of(const CharT*, size_type))
4203 (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
4204 * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
4205 * testsuite/21_strings/basic_string_view/operations/compare/char/
4207 * testsuite/21_strings/basic_string_view/operations/find/char/
4209 * testsuite/21_strings/basic_string_view/operations/rfind/char/
4213 * include/bits/random.h (random_device(const string&)): Remove
4216 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
4217 define for C++17 and above.
4219 LWG 2993 reference_wrapper<T> conversion from T&&
4220 * doc/xml/manual/intro.xml: Document LWG 2993 change.
4221 * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
4222 (reference_wrapper(_Tp&&)): Remove.
4223 (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
4225 (reference_wrapper): Add deduction guide.
4226 * testsuite/20_util/reference_wrapper/deduction.cc: New.
4227 * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
4229 LWG 3039 Unnecessary decay in thread and packaged_task
4230 * include/std/future (__constrain_pkgdtask): Replace with ...
4231 (packaged_task::__not_same): New alias template, using
4232 __remove_cvref_t instead of decay.
4233 * include/std/thread (thread::__not_same): Add comment.
4235 2018-06-14 Jonathan Wakely <jwakely@redhat.com>
4237 LWG 3075 basic_string needs deduction guides from basic_string_view
4238 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
4239 deduction from string views.
4240 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
4243 LWG 3074 make scalar types non-deduced in valarray non-member functions
4244 * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
4245 scalar parameters to be a non-deduced context.
4246 * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
4248 * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
4249 * testsuite/26_numerics/valarray/transcend.cc: New.
4251 * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
4252 Move back to <utility>.
4253 * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
4256 P0935R0 Eradicating unnecessarily explicit default constructors
4257 * include/backward/strstream (strstreambuf): Add non-explicit default
4259 * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
4261 * include/bits/regex.h (match_results): Likewise.
4262 * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
4263 default constructor.
4264 * testsuite/22_locale/conversions/string/1.cc: Likewise.
4265 * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
4266 * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
4268 * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
4269 macro from <utility> and change type to long.
4270 * include/std/utility (__cpp_lib_tuple_element_t): Remove.
4271 * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
4274 P0935R0 Eradicating unnecessarily explicit default constructors
4275 * include/bits/random.h (uniform_real_distribution::param_type)
4276 (normal_distribution::param_type, lognormal_distribution::param_type)
4277 (gamma_distribution::param_type, chi_squared_distribution::param_type)
4278 (cauchy_distribution::param_type, fisher_f_distribution::param_type)
4279 (student_t_distribution::param_type)
4280 (bernoulli_distribution::param_type)
4281 (binomial_distribution::param_type)
4282 (geometric_distribution::param_type)
4283 (negative_binomial_distribution::param_type)
4284 (poisson_distribution::param_type)
4285 (exponential_distribution::param_type)
4286 (weibull_distribution::param_type)
4287 (extreme_value_distribution::param_type): Add non-explicit default
4288 constructors. Remove default argument for first parameter of explicit
4290 * include/bits/uniform_int_dist.h
4291 (uniform_int_distribution::param_type): Likewise.
4292 * include/ext/random
4293 (beta_distribution::param_type, rice_distribution::param_type)
4294 (nakagami_distribution::param_type, pareto_distribution::param_type)
4295 (k_distribution::param_type, arcsine_distribution::param_type)
4296 (hoyt_distribution::param_type, triangular_distribution::param_type)
4297 (von_mises_distribution::param_type)
4298 (hypergeometric_distribution::param_type)
4299 (logistic_distribution::param_type)
4300 (uniform_inside_sphere_distribution::param_type): Likewise.
4301 (uniform_on_sphere_distribution::param_type): Make default constructor
4303 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
4304 Test param_type for non-explicit default constructor.
4305 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
4307 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
4309 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
4311 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
4313 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
4315 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
4317 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
4319 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
4321 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
4323 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
4325 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
4327 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
4329 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
4331 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
4333 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
4335 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
4337 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
4339 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
4341 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
4343 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
4344 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
4345 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
4346 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
4348 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
4349 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
4350 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
4351 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
4353 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
4354 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
4355 * testsuite/ext/random/triangular_distribution/cons/default.cc:
4357 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
4359 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
4361 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
4364 2018-06-14 Daniel Trebbien <dtrebbien@gmail.com>
4365 Jonathan Wakely <jwakely@redhat.com>
4368 * include/bits/vector.tcc (vector::_M_default_append(size_type)):
4369 Default-construct new elements before moving existing ones.
4370 * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
4373 2018-06-13 Jonathan Wakely <jwakely@redhat.com>
4376 * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
4378 (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
4379 Use node allocator to create and destroy elements.
4380 (forward_list::_Tp_alloc_type): Remove unused typedef.
4381 (forward_list::_Alloc_traits): Use allocator_traits instead of
4382 __gnu_cxx::__alloc_traits.
4384 2018-06-13 François Dumont <fdumont@gcc.gnu.org>
4386 * include/debug/helper_functions.h
4387 (__gnu_debug::_Safe_iterator<>): Add declaration.
4388 (__can_advance(_Ite, _Size)): New.
4389 (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
4390 * include/debug/functions.h
4391 (__gnu_debug::_Safe_iterator<>): Remove declaration.
4392 * include/debug/stl_iterator.h
4393 (__can_advance(const _Safe_iterator<>&)): New definition.
4394 * include/debug/stl_iterator.h
4395 (__can_advance(const std::reverse_iterator<>&, _Size)): New.
4396 (__can_advance(const std::move_iterator<>&, _Size)): New.
4397 * include/debug/macros.h (__glibcxx_check_can_increment): New.
4398 * include/debug/debug.h (__glibcxx_requires_can_increment): New.
4399 * include/bits/stl_algobase.h (fill_n): Use latter.
4400 * testsuite/25_algorithms/fill_n/2.cc: New.
4401 * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
4402 * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
4403 * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
4404 * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
4406 * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
4407 (__glibcxx_requires_can_decrement_range): New.
4409 2018-06-12 François Dumont <fdumont@gcc.gnu.org>
4411 * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
4412 (__glibcxx_check_can_decrement_range): New.
4413 * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
4414 __glibcxx_requires_can_increment_range.
4415 (std::move(_II, _II, _OI)): Likewise.
4416 (std::copy_backward(_BI, _BI, _BI2)): Use
4417 __glibcxx_requires_can_decrement_range.
4418 (std::move_backward(_BI, _BI, _BI2)): Likewise.
4419 * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
4420 * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
4421 * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
4422 * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
4423 * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
4424 * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
4426 2018-06-12 Jonathan Wakely <jwakely@redhat.com>
4428 P0935R0 Eradicating unnecessarily explicit default constructors
4429 * include/bits/random.h (linear_congruential_engine)
4430 (mersenne_twister_engine, subtract_with_carry_engine, random_device)
4431 (uniform_real_distribution, normal_distribution)
4432 (lognormal_distribution, gamma_distribution, chi_squared_distribution)
4433 (cauchy_distribution, fisher_f_distribution, student_t_distribution)
4434 (bernoulli_distribution, binomial_distribution,geometric_distribution)
4435 (negative_binomial_distribution, exponential_distribution)
4436 (weibull_distribution, extreme_value_distribution): Add non-explicit
4437 default constructors. Remove default argument for first parameter of
4438 explicit constructors.
4439 (piecewise_constant_distribution, piecewise_linear_distribution):
4440 Make default constructor non-explicit.
4441 * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
4442 non-explicit default constructors. Remove default argument for first
4443 parameter of explicit constructor.
4444 * include/ext/random
4445 (simd_fast_mersenne_twister_engine, beta_distribution)
4446 (rice_distribution, nakagami_distribution, pareto_distribution)
4447 (k_distribution, arcsine_distribution, hoyt_distribution)
4448 (triangular_distribution, von_mises_distribution)
4449 (hypergeometric_distribution, logistic_distribution)
4450 (uniform_inside_sphere_distribution): Likewise.
4451 (uniform_on_sphere_distribution): Make default constructor
4453 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
4454 Test for non-explicit default constructor. Fix references to standard.
4455 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
4457 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
4459 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
4461 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
4463 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
4465 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
4467 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
4469 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
4471 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
4473 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
4475 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
4477 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
4479 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
4481 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
4483 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
4485 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
4487 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
4489 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
4491 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
4493 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
4494 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
4495 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
4496 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
4498 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
4499 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
4500 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
4501 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
4503 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
4504 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
4505 * testsuite/ext/random/triangular_distribution/cons/default.cc:
4507 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
4509 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
4511 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
4513 * testsuite/util/testsuite_common_types.h
4514 (implicitly_default_constructible): New helper.
4516 2018-06-08 Jonathan Wakely <jwakely@redhat.com>
4518 * include/bits/ios_base.h (ios::Init::Init(const Init&))
4519 (ios::Init::operator=): Define as defaulted.
4520 * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
4522 * include/bits/stream_iterator.h (istream_iterator::operator=)
4523 (ostream_iterator::operator=): Likewise.
4524 * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
4526 * include/std/bitset (bitset::reference::reference(const reference&)):
4528 * include/std/complex (complex<float>::complex(const complex&))
4529 (complex<double>::complex(const complex&))
4530 (complex<long double>::complex(const complex&)): Likewise.
4532 2018-06-07 Jonathan Wakely <jwakely@redhat.com>
4534 * include/bits/regex.h (sub_match): Add noexcept to default
4535 constructor and length observer.
4536 (match_results): Add noexcept to default constructor and observers
4537 with no preconditions. Define destructor as defaulted.
4538 (operator==, operator!=, swap): Add noexcept.
4539 (regex_iterator): Add default member initializers and define default
4540 constructor and destructor as defaulted. Add noexcept to equality
4541 and dereference operators.
4543 2018-06-07 François Dumont <fdumont@gcc.gnu.org>
4545 * src/c++11/debug.cc
4546 (_Safe_iterator_base::_M_detach()): Reset state only if needed.
4547 (_Safe_iterator_base::_M_detach_single()): Likewise.
4548 (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
4549 (_Safe_local_iterator_base::_M_detach_single()): Likewise.
4551 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
4553 * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
4554 move of const value.
4556 2018-06-06 Jakub Jelinek <jakub@redhat.com>
4559 * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
4560 rather than __cpp_transactional_memory >= 201505L.
4562 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
4565 * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
4566 Define new partial specialization.
4567 * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
4569 (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
4570 value not reference for iteration.
4571 * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
4573 * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
4574 * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
4577 2018-06-05 Jonathan Wakely <jwakely@redhat.com>
4579 * include/std/type_traits: Fix comment typos.
4581 * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
4583 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
4584 * testsuite/experimental/filesystem/operations/read_symlink.cc:
4587 2018-06-05 François Dumont <fdumont@gcc.gnu.org>
4589 * include/bits/stl_tempbuf.h
4590 (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
4591 (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
4592 * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
4593 * include/bits/stl_algo.h (__stable_partition): Adapt.
4594 (__inplace_merge): Adapt.
4595 (__stable_sort): Adapt.
4597 2018-06-04 Jonathan Wakely <jwakely@redhat.com>
4600 * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
4601 unconditionally. Remove redundant declaration.
4602 [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
4603 alignment-specifier.
4605 * include/bits/postypes.h (fpos): Define special members as defaulted.
4608 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
4609 the static variable correctly.
4611 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
4613 PR libstdc++/78870 support std::filesystem on Windows
4614 * config.h.in: Regenerate.
4615 * configure: Regenerate.
4616 * configure.ac: Check for link, readlink and symlink.
4617 * include/bits/fs_path.h (path::operator/=(const path&)): Move
4618 definition out of class body.
4619 (path::is_absolute(), path::_M_append(path)): Likewise.
4620 (operator<<(basic_ostream, const path&)): Use std::quoted directly.
4621 (operator>>(basic_istream, path&)): Likewise.
4622 (u8path): Reorder definitions and fix Windows implementation.
4623 (path::is_absolute()): Define inline and fix for Windows.
4624 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
4625 Define POSIX version inline.
4626 (path::_M_append(path)): Define inline.
4627 * include/experimental/bits/fs_path.h (path::is_absolute()): Move
4628 definition out of class body.
4629 (operator<<(basic_ostream, const path&)): Fix type of delimiter and
4631 (operator>>(basic_istream, path&)): Likewise.
4632 (path::is_absolute()): Define inline and fix for Windows.
4633 * src/filesystem/dir-common.h (__gnu_posix): New namespace.
4634 (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
4635 (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
4636 Define as adaptors for Windows functions/types or as
4637 using-declarations for POSIX functions/types.
4638 (_Dir_base, get_file_type): Qualify names to use declarations from
4639 __gnu_posix namespace.
4640 (_Dir_base::is_dor_or_dotdot): New helper functions.
4641 * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
4642 names to use declarations from __gnu_posix namespace.
4643 * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
4644 (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
4645 (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
4646 (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
4647 (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
4648 (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
4649 Define as adaptors for Windows functions/types or as
4650 using-declarations for POSIX functions/types.
4651 (stat_type, do_copy_file): Qualify names to use declarations from
4652 __gnu_posix namespace.
4653 (do_space): Declare new function.
4654 (make_file_type): Only use S_ISLNK if defined.
4655 * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
4656 path::value_type not char.
4657 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
4658 names to use declarations from __gnu_posix namespace.
4659 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
4660 add implementation for Windows.
4661 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
4662 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
4663 [!_PC_PATH_MAX]: Don't use pathconf.
4664 [PATH_MAX]: Use if defined.
4665 (filesystem::current_path(const path&, error_code&))
4666 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
4667 (filesystem::last_write_time, filesystem::permissions): Use names
4669 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
4670 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
4671 implementation for Windows.
4672 (filesystem::rename, filesystem::resize_file): Use names from
4674 (filesystem::space): Use do_space.
4675 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
4676 (filesystem::status, filesystem::symlink_status): Use names from
4678 (filesystem::temp_directory_path): Add implementation for Windows.
4679 * src/filesystem/path.cc (dot): Define constant.
4680 (path::replace_extension): Use dot.
4681 (path::_M_find_extension): Likewise. Use path::string_type not
4683 (path::_M_split_cmpts): Use dot.
4684 (filesystem_error::_M_get_what): Use u8string() not native().
4685 * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
4686 Qualify names to use declarations from __gnu_posix namespace.
4687 * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
4689 (filesystem::absolute(const path&, error_code&)): Add implementation
4691 (char_ptr, filesystem::canonical): Use path::value_type not char.
4692 (do_copy_file): Use names from __gnu_posix.
4693 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
4695 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
4696 names to use declarations from __gnu_posix namespace.
4697 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
4698 add implementation for Windows.
4699 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
4700 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
4701 [!_PC_PATH_MAX]: Don't use pathconf.
4702 [PATH_MAX]: Use if defined.
4703 (filesystem::current_path(const path&, error_code&))
4704 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
4705 (filesystem::last_write_time, filesystem::permissions): Use names
4707 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
4708 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
4709 implementation for Windows.
4710 (filesystem::rename, filesystem::resize_file): Use names from
4713 (filesystem::space): Use do_space.
4714 (filesystem::status, filesystem::symlink_status): Use names from
4716 (filesystem::temp_directory_path): Add implementation for Windows.
4717 * src/filesystem/std-path.cc
4718 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
4720 (dot): Define constant.
4721 (path::replace_extension, is_dot): Use dot.
4722 (path::lexically_normal): Check _M_type instead of calling
4723 non-existent function.
4724 (path::_M_find_extension): Use dot. Use path::string_type not
4726 (path::_M_split_cmpts): Use dot.
4727 (filesystem_error::_M_get_what): Use u8string() not native().
4728 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
4730 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
4732 * testsuite/27_io/filesystem/operations/absolute.cc: Use
4733 __gnu_test::root_path() instead of "/" and add Windows-specific tests.
4734 * testsuite/27_io/filesystem/operations/canonical.cc: Use
4735 path::string() to get narrow string, not path::native().
4736 * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
4737 with std::filesystem::path not std::basic_string.
4738 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
4739 * testsuite/27_io/filesystem/operations/exists.cc: Use
4740 __gnu_test::root_path() instead of "/".
4741 * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
4742 fstreams with std::filesystem::path not std::basic_string.
4743 * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
4744 path::string() to get narrow string.
4745 * testsuite/27_io/filesystem/operations/space.cc: Check results for
4746 errors, expect sensible values otherwise.
4747 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
4748 helpers for adjusting the environment on Windows.
4749 * testsuite/27_io/filesystem/path/append/path.cc: Test
4750 Windows-specific behaviour.
4751 * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
4752 of path::string_type objects.
4753 * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
4754 string to wide string on Windows.
4755 * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
4756 for backslash as root-directory.
4757 * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
4758 path::string() to get narrow string.
4759 * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
4761 * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
4763 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
4764 different definintion of absolute paths on Windows.
4765 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
4766 Do not use symlinks.
4767 * testsuite/experimental/filesystem/operations/absolute.cc: Test
4769 * testsuite/experimental/filesystem/operations/copy.cc: Construct
4770 fstreams with NTCTS not std::basic_string.
4771 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
4772 * testsuite/experimental/filesystem/operations/exists.cc: Use
4773 __gnu_test::root_path() instead of "/".
4774 * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
4775 fstreams with NTCTS not std::basic_string.
4776 * testsuite/experimental/filesystem/operations/last_write_time.cc:
4777 Use path::string() to get narrow string.
4778 * testsuite/experimental/filesystem/operations/space.cc: Use
4779 __gnu_test::root_path() instead of "/".
4780 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
4781 Add helpers for adjusting the environment on Windows.
4782 * testsuite/experimental/filesystem/path/append/path.cc: Use
4783 path::string() to get narrow strings for comparisons.
4784 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
4785 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
4787 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
4788 * testsuite/experimental/filesystem/path/native/string.cc: Use
4789 string_type not std::string.
4790 * testsuite/experimental/filesystem/path/query/is_absolute.cc:
4791 Adjust for different definintion of absolute paths on Windows.
4792 * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
4794 (__gnu_test::scoped_file): Construct fstreams with NTCTS not
4797 2018-05-31 Jonathan Wakely <jwakely@redhat.com>
4800 * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
4801 uint_least16_t and uint_least32_t.
4802 (__make_unsigned<wchar_t>): Define unconditionally.
4803 (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
4805 (__make_unsigned_selector_base): New type to provide helper templates.
4806 (__make_unsigned_selector<_Tp, false, true>): Reimplement using
4807 __make_unsigned_selector_base helpers.
4808 (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
4809 (__make_signed_selector<_Tp, true, false>): Remove intermediate
4811 (__make_signed<wchar_t>, __make_signed<char16_t>)
4812 (__make_signed<char32_t>)): Define unconditionally.
4813 * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
4814 wchar_t, char16_t and char32_t are transformed correctly.
4815 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
4817 * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
4818 wchar_t, char16_t and char32_t are transformed correctly.
4819 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
4822 2018-05-29 Jonathan Wakely <jwakely@redhat.com>
4824 * include/std/variant (__erased_dtor): Qualify call to __get.
4826 2018-05-27 François Dumont <fdumont@gcc.gnu.org>
4828 * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
4829 (_Rb_tree(const allocator_type&)): Use latter.
4830 * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
4831 (map(initializer_list<value_type>, const allocator_type&)): Likewise.
4832 (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
4833 * include/bits/stl_multimap.h
4834 (multimap(const allocator_type&)): Likewise.
4835 (multimap(initializer_list<value_type>, const allocator_type&)):
4837 (multimap(_InputIterator, _InputIterator, const allocator_type&)):
4839 * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
4840 (set(initializer_list<value_type>, const allocator_type&)): Likewise.
4841 (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
4842 * include/bits/stl_multiset.h
4843 (multiset(const allocator_type&)): Likewise.
4844 (multiset(initializer_list<value_type>, const allocator_type&)):
4846 (multiset(_InputIterator, _InputIterator, const allocator_type&)):
4849 2018-05-25 François Dumont <fdumont@gcc.gnu.org>
4852 * src/c++11/debug.cc: Remove backtrace usage.
4854 2018-05-24 Maya Rashish <coypu@sdf.org>
4857 * crossconfig.m4: Test for aligned_alloc on netbsd.
4858 * configure: Regenerate.
4860 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
4864 * include/bits/atomic_base.h (__atomic_base::value_type)
4865 (__atomic_base::difference_type): Add new typedefs.
4866 * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
4867 (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
4868 (atomic<T*>::operator++, atomic<T*>::operator--)
4869 (atomic<T*>::operator+=, atomic<T*>::operator-=)
4870 (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
4871 to enforce C++17 requirement on pointer arithmetic.
4872 (__atomic_val_t, __atomic_diff_t): New alias templates.
4873 (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
4874 (atomic_compare_exchange_weak_explicit)
4875 (atomic_compare_exchange_strong_explicit, atomic_store)
4876 (atomic_exchange, atomic_compare_exchange_weak)
4877 (atomic_compare_exchange_strong): Use __atomic_val_t to make
4878 scalar parameters be non-deduced contexts.
4879 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
4880 (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
4881 atomic instead of __atomic_base, and use __atomic_diff_t for scalar
4883 (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
4884 (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
4885 (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
4886 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
4887 (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
4889 * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
4890 * testsuite/29_atomics/atomic/69769.cc: New test.
4891 * testsuite/29_atomics/atomic/nonmembers.cc: New test.
4892 * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
4893 Disable test for C++17 and later.
4894 * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
4895 * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
4896 * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
4899 2018-05-23 Jonathan Wakely <jwakely@redhat.com>
4901 * include/bits/fs_path.h (path::__is_encoded_char): Change from class
4902 template to alias template.
4903 (path::__value_type_is_char): Use remove_const_t.
4904 (path:_S_string_from_iter): New helper function.
4905 (path::_S_convert(InputIter, __null_terminated))
4906 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
4907 Use _S_string_from_iter.
4908 (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
4909 rep for COW strings.
4910 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
4911 Change from class template to alias template.
4912 (path::__value_type_is_char): Use remove_const.
4913 (path:_S_string_from_iter): New helper function.
4914 (path::_S_convert(InputIter, __null_terminated))
4915 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
4916 Use _S_string_from_iter.
4917 * testsuite/27_io/filesystem/path/append/source.cc: Test appending
4919 * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
4920 string equality, not path equivalence.
4921 * testsuite/27_io/filesystem/path/construct/format.cc: Check
4922 construction from std::string and std::wstring and input iterators.
4923 * testsuite/27_io/filesystem/path/construct/locale.cc: Check
4924 construction from iterators.
4925 * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
4926 exact string equality, not path equivalence.
4927 * testsuite/experimental/filesystem/path/construct/locale.cc: Check
4928 construction from iterators.
4930 * include/bits/fs_path.h (path::_M_type): Change default member
4931 initializer to _Filename.
4932 (path::begin): Create past-the-end iterator for empty path.
4933 * src/filesystem/std-path.cc (path::remove_filename()): Remove
4935 (path::has_relative_path()): Return false for empty filenames.
4936 (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
4937 Fix offset of empty final component.
4938 * testsuite/27_io/filesystem/path/itr/components.cc: New.
4939 * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
4941 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
4943 Add support for opening file streams from wide character strings.
4944 * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
4945 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
4946 Define new overload.
4947 * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
4948 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
4949 Declare new overload.
4950 * configure.ac: Check for _wfopen.
4951 * crossconfig.m4: Likewise.
4952 * configure: Regenerate.
4953 * config.h.in: Regenerate.
4954 * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
4955 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
4956 Define new overload.
4957 * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
4958 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
4959 Declare new overload.
4960 [_GLIBCXX_HAVE__WFOPEN]
4961 (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4962 (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
4963 (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4964 (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
4965 (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4966 (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
4968 * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
4969 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
4970 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
4971 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
4972 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
4973 * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
4974 * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
4976 2018-05-21 François Dumont <fdumont@gcc.gnu.org>
4979 * include/bits/stl_tree.h
4980 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
4983 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
4985 * src/filesystem/std-ops.cc (absolute): Report an error for empty
4987 (weakly_canonical(const path&)): Do not call canonical on empty path.
4988 (weakly_canonical(const path&, error_code&)): Likewise.
4989 * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
4992 * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
4993 dg-require-filesystem-ts.
4996 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
4997 initialize base class to avoid warnings.
4999 2018-05-19 Jonathan Wakely <jwakely@redhat.com>
5001 * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
5002 [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
5003 little_endian element in bitmask.
5004 * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
5005 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
5007 2018-05-18 François Dumont <fdumont@gcc.gnu.org>
5009 * include/bits/stl_tree.h
5010 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
5011 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
5012 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
5013 (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
5014 * include/debug/map.h
5015 (map(map&&, const_allocator_type&)): Add noexcept qualitication.
5016 * include/debug/multimap.h
5017 (multimap(multimap&&, const_allocator_type&)): Likewise.
5018 * include/debug/set.h
5019 (set(set&&, const_allocator_type&)): Likewise.
5020 * include/debug/multiset.h
5021 (multiset(multiset&&, const_allocator_type&)): Likewise.
5022 * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
5024 * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
5026 * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
5028 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
5030 * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
5032 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
5034 * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
5036 * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
5039 2018-05-18 Jason Merrill <jason@redhat.com>
5041 * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
5042 for conversion to const_iterator. Add defaulted copy ops.
5043 * libsupc++/new (bad_alloc): Add defaulted copy ops.
5044 * libsupc++/exception.h (exception): Add defaulted copy ops.
5045 * include/std/system_error (system_error): Add defaulted copy ops.
5046 * include/std/stdexcept (domain_error, invalid_argument)
5047 (length_error, out_of_range, range_error, overflow_error)
5048 (underflow_error): Add defaulted copy ops.
5049 * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
5051 * include/bits/allocator.h (allocator): Add defaulted copy assignment.
5052 * include/ext/throw_allocator.h (condition_base): Add defaulted
5053 default and copy ctor and copy assignment.
5055 2018-05-18 Jonathan Wakely <jwakely@redhat.com>
5058 * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
5059 (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
5060 (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
5061 (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
5063 * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
5065 * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
5066 braces around body of do-while.
5067 * testsuite/28_regex/basic_regex/85098.cc: New
5069 2018-05-17 Jonathan Wakely <jwakely@redhat.com>
5072 * src/filesystem/path.cc (path::preferred_separator): Add used
5074 * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
5077 * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
5078 * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
5079 Refactor to separate non-throwing and throwing implementations.
5080 [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
5081 if constructing the object throws.
5083 2018-05-15 Jonathan Wakely <jwakely@redhat.com>
5086 * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
5087 (linear_congruential_engine, mersenne_twister_engine)
5088 (subtract_with_carry_engine, discard_block_engine)
5089 (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
5090 constrain function templates taking seed sequences.
5091 * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
5092 (mersenne_twister_engine::seed(_Sseq&))
5093 (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
5095 * include/ext/random (simd_fast_mersenne_twister_engine): Use
5096 __is_seed_seq to constrain function templates taking seed sequences.
5097 * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
5098 Change return type to match declaration.
5099 * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
5101 * testsuite/26_numerics/random/independent_bits_engine/cons/
5103 * testsuite/26_numerics/random/linear_congruential_engine/cons/
5105 * testsuite/26_numerics/random/mersenne_twister_engine/cons/
5107 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
5108 * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
5110 * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
5112 * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
5116 * include/bits/fs_path.h (path::is_absolute()): Use same definition
5117 for all operating systems.
5118 * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
5119 * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
5120 * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
5121 * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
5123 * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
5124 unused <vector> header.
5125 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
5126 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
5127 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
5128 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
5129 * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
5131 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
5133 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
5134 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
5135 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
5136 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
5137 * testsuite/experimental/filesystem/path/decompose/extension.cc:
5139 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
5140 * testsuite/experimental/filesystem/path/query/has_extension.cc:
5142 * testsuite/experimental/filesystem/path/query/has_filename.cc:
5144 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
5146 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
5148 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
5150 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
5152 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
5154 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
5155 * testsuite/experimental/filesystem/path/query/is_relative.cc:
5159 * include/bits/fs_path.h (path::operator/=, path::append): Construct
5160 temporary path before calling _M_append.
5161 (path::_M_append): Change parameter to path and implement C++17
5163 * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
5164 and more examples from the standard.
5165 * testsuite/27_io/filesystem/path/append/source.cc: New.
5166 * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
5167 * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
5169 * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
5170 __invoke to prevent ADL.
5172 2018-05-14 Jonathan Wakely <jwakely@redhat.com>
5175 * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
5176 exceptions from _M_terminate_output().
5177 * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
5178 exceptions from close().
5179 * testsuite/27_io/basic_filebuf/close/81256.cc: New.
5181 * include/bits/valarray_array.h (__valarray_get_memory): Remove.
5182 (__valarray_get_storage): Call operator new directly. Remove ignored
5183 top-level restrict qualifier and add malloc attribute instead.
5184 (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
5187 * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
5188 (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
5191 * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
5193 * testsuite/23_containers/set/modifiers/node_swap.cc: New.
5195 2018-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
5198 * testsuite/20_util/variant/80165.cc: New.
5200 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
5202 * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
5203 * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
5204 of C++11 containers with Debug Mode support.
5205 * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
5206 * doc/html/*: Regenerate.
5208 2018-05-10 Jason Merrill <jason@redhat.com>
5210 * include/bits/regex_compiler.h (_S_cache_size): Change from
5211 function to variable.
5213 2018-05-10 Edward Smith-Rowland <3dw4rd@verizon.net>
5215 PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
5216 * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
5217 argument defaulted to +1. Doxy comments on same.
5218 * testsuite/special_functions/02_assoc_legendre/
5219 check_value.cc: Regen.
5220 * testsuite/tr1/5_numerical_facilities/special_functions/
5221 02_assoc_legendre/check_value.cc: Regen.
5223 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
5226 * include/bits/c++config.h (__replacement_assert): Add linkage
5228 * include/bits/std_abs.h: Add comment to closing brace of block.
5229 * include/c_global/cstddef: Add linkage specification.
5230 * include/c_global/cstring: Likewise.
5231 * include/c_global/cwchar: Likewise.
5233 2018-05-09 François Dumont <fdumont@gcc.gnu.org>
5235 * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
5237 (_Safe_iterator<>::_S_constant()): ...that.
5238 * include/debug/safe_local_iterator.h
5239 (_Safe_local_iterator<>::_M_constant()): Rename in...
5240 (_Safe_local_iterator<>::_S_constant()): ...that.
5241 * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
5242 (_Iterator_state::__rbegin): New.
5243 (_Iterator_state::__rmiddle): New.
5244 (_Iterator_state::__rend): New.
5245 (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
5246 _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
5248 (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
5249 _Is_iterator)): Likewise.
5250 (_Parameter::_S_reverse_state(_Iterator_state)): New.
5251 (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
5252 _Is_iterator)): New.
5253 (_Parameter(std::reverse_iterator<> const&, const char*,
5254 _Is_iterator)): New.
5255 (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
5256 const char*, _Is_iterator)): New.
5257 (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
5259 (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
5260 _Is_iterator)): New.
5261 * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
5262 * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
5263 * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
5265 2018-05-09 Jonathan Wakely <jwakely@redhat.com>
5267 * include/bits/std_function.h (_Base_manager::_M_get_pointer):
5268 Use constexpr if in C++17 mode.
5269 (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
5270 Copy from const object.
5271 * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
5273 2018-05-08 François Dumont <fdumont@gcc.gnu.org>
5275 * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
5276 [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
5279 * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
5280 * include/debug/functions.h (__check_valid_range): Use latter.
5281 * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
5283 * include/debug/deque
5284 (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
5285 * include/debug/forward_list
5286 (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
5288 * include/debug/list
5289 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5290 * include/debug/list
5291 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5292 * include/debug/map.h
5293 (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5294 (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
5296 * include/debug/multimap.h
5297 (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5298 (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
5299 const _Alloc&)): Likewise.
5300 * include/debug/set.h
5301 (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5302 (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
5304 * include/debug/multiset.h
5305 (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5306 (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
5307 const _Alloc&)): Likewise.
5308 * include/debug/string
5309 (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
5311 * include/debug/unordered_map
5312 (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
5314 (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
5315 const _Alloc&)): Likewise.
5316 * include/debug/unordered_set
5317 (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
5319 (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
5320 const _Alloc&)): Likewise.
5321 * include/debug/vector
5322 (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
5324 * include/debug/formatter.h (_Error_formatter::_M_function): New.
5325 (_Error_formatter(const char*, unsigned int)): Adapt.
5326 (_Error_formatter::_M_at): Rename in...
5327 (_Error_formatter::_S_at): ...that and adapt.
5328 * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
5329 (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
5330 * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
5333 2018-05-08 Jonathan Wakely <jwakely@redhat.com>
5335 * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
5336 Use normal std::vector even in Debug Mode.
5339 * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
5340 to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
5341 * include/Makefile.in: Regenerate.
5342 * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
5343 within conditional block.
5345 2018-05-07 Jonathan Wakely <jwakely@redhat.com>
5347 * doc/xml/manual/using.xml (table.cmd_options): Document that the
5348 C++17 Filesystem implementation also needs -lstdc++fs.
5351 * include/bits/fs_path.h (operator/): Permit copy elision.
5352 * include/experimental/bits/fs_path.h (operator/): Likewise.
5354 2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net>
5356 Moar PR libstdc++/80506
5357 * include/bits/random.tcc (gamma_distribution::__generate_impl()):
5358 Fix magic number used in loop condition.
5360 2018-05-04 Jonathan Wakely <jwakely@redhat.com>
5362 PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
5363 * include/std/optional (_Optional_payload): Add noexcept to default
5364 constructor. Re-indent.
5365 (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
5366 constructor for copying disengaged payloads.
5367 (_Optional_payload<_Tp, true, false, true>): Likewise.
5368 (_Optional_payload<_Tp, true, true, false>): Likewise.
5369 (_Optional_payload<_Tp, true, false, false>): Likewise.
5370 * testsuite/20_util/optional/cons/85642.cc: New.
5371 * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
5373 2018-05-03 Jonathan Wakely <jwakely@redhat.com>
5376 * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
5377 inline definitions instead of using-declarations.
5378 [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
5379 * testsuite/tr1/5_numerical_facilities/special_functions/
5380 07_conf_hyperg/compile_cxx17.cc: New.
5381 * testsuite/tr1/5_numerical_facilities/special_functions/
5382 17_hyperg/compile_cxx17.cc: New.
5385 * include/std/variant (visit): Qualify std::get call.
5387 PR libstdc++/85632 use uintmax_t for arithmetic
5388 * src/filesystem/ops.cc (experimental::filesystem::space): Perform
5389 arithmetic in result type.
5390 * src/filesystem/std-ops.cc (filesystem::space): Likewise.
5391 * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
5392 is greater than free space.
5393 * testsuite/experimental/filesystem/operations/space.cc: New.
5395 * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
5396 * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
5398 * testsuite/20_util/remove_cvref/value.cc: New.
5399 * testsuite/20_util/remove_cvref/value_ext.cc: New.
5401 PR libstdc++/84087 LWG DR 2268 basic_string default arguments
5402 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
5403 (append(const basic_string&, size_type, size_type)
5404 (assign(const basic_string&, size_type, size_type)
5405 (insert(size_type, const basic_string&, size_type, size_type)
5406 (replace(size_type,size_type,const basic_string&,size_type,size_type)
5407 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
5408 Add default arguments (LWG 2268).
5409 [_GLIBCXX_USE_CXX11_ABI=0]
5410 (append(const basic_string&, size_type, size_type)
5411 (assign(const basic_string&, size_type, size_type)
5412 (insert(size_type, const basic_string&, size_type, size_type)
5413 (replace(size_type,size_type,const basic_string&,size_type,size_type)
5414 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
5416 * testsuite/21_strings/basic_string/dr2268.cc: New test.
5419 * include/std/thread (thread::__not_same): New SFINAE helper.
5420 (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
5421 first argument is not a std::thread. Add static assertion to check
5422 INVOKE expression is valid.
5423 (thread::thread(thread&), thread::thread(const thread&&)): Remove.
5424 (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
5425 __invoke_result for return types and remove exception specifications.
5426 * testsuite/30_threads/thread/cons/84535.cc: New.
5428 * include/std/future (__async_result_of): Use __invoke_result instead
5431 * include/std/any (any_cast): Use __remove_cvref_t.
5432 * include/std/tuple (__make_tuple): Likewise.
5433 * include/std/type_traits (__remove_cvref_t): Define.
5434 (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
5435 [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
5436 * include/std/variant (__erased_hash): Use __remove_cvref_t.
5438 2018-05-02 François Dumont <fdumont@gcc.gnu.org>
5440 * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
5441 ensure overloaded comma not used.
5442 * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
5443 * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
5444 * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
5445 * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
5446 * testsuite/23_containers/list/modifiers/assign/1.cc: New.
5447 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
5448 * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
5450 2018-05-02 Jonathan Wakely <jwakely@redhat.com>
5453 * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
5454 indices to unsigned.
5455 * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
5456 as failure. Refactor error handling.
5457 * testsuite/27_io/ios_base/storage/68197.cc: New.
5461 * include/bits/gslice_array.h (gslice_array): Define default
5462 constructor as deleted, as per C++11 standard.
5463 * include/bits/mask_array.h (mask_array): Likewise.
5464 * include/bits/slice_array.h (slice_array): Likewise.
5465 * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
5466 to namespace __detail.
5467 (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
5469 * include/bits/valarray_before.h (_ValArrayRef): New helper for type
5470 of data members in closure objects.
5471 (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
5472 (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
5474 (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
5475 (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
5476 (_SBase::_M_expr): Use _ValArrayRef for type of data members.
5477 * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
5478 (_ValFunClos, _RefFunClos): Move to namespace __detail and add
5479 using-declarations to namespace std.
5480 * testsuite/26_numerics/valarray/83860.cc: New.
5482 * testsuite/backward/strstream_move.cc: Remove duplicate function
5486 * include/backward/strstream (strstreambuf): Define move constructor
5487 and move assignment operator.
5488 (istrstream, ostrstream, strstream): Likewise.
5489 * testsuite/backward/strstream_move.cc: New.
5491 2018-05-01 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
5494 * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
5495 * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
5496 * configure: Regenerate.
5497 * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
5498 based on ENABLE_FLOAT128.
5499 * include/Makefile.in: Regenerate.
5500 * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
5501 [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
5502 _GLIBCXX_USE_FLOAT128.
5504 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
5506 * configure: Regenerated.
5508 2018-04-19 Jakub Jelinek <jakub@redhat.com>
5510 * configure: Regenerated.
5512 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
5513 Jakub Jelinek <jakub@redhat.com>
5516 * src/c++11/Makefile.am: Don't generate debuginfo again for
5517 cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
5518 * src/c++11/Makefile.in: Regenerate.
5520 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
5523 * testsuite/30_threads/thread/cons/terminate.cc
5524 [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
5526 2018-04-18 David Malcolm <dmalcolm@redhat.com>
5529 * configure: Regenerate.
5531 2018-04-16 Jonathan Wakely <jwakely@redhat.com>
5533 * testsuite/experimental/filesystem/file_status/1.cc: Add
5534 -DUSE_FILESYSTEM_TS to dg-options.
5535 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
5537 * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
5538 * testsuite/experimental/filesystem/iterators/
5539 recursive_directory_iterator.cc: Likewise.
5540 * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
5541 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
5542 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
5543 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
5544 * testsuite/experimental/filesystem/operations/create_directories.cc:
5546 * testsuite/experimental/filesystem/operations/create_directory.cc:
5548 * testsuite/experimental/filesystem/operations/create_symlink.cc:
5550 * testsuite/experimental/filesystem/operations/current_path.cc:
5552 * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
5553 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
5554 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
5555 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
5556 * testsuite/experimental/filesystem/operations/last_write_time.cc:
5558 * testsuite/experimental/filesystem/operations/permissions.cc:
5560 * testsuite/experimental/filesystem/operations/read_symlink.cc:
5562 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
5563 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
5564 * testsuite/experimental/filesystem/operations/status.cc: Likewise.
5565 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
5567 * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
5568 * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
5569 * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
5570 * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
5571 * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
5572 * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
5573 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
5574 * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
5575 * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
5576 * testsuite/experimental/filesystem/path/construct/default.cc:
5578 * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
5579 * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
5580 * testsuite/experimental/filesystem/path/construct/string_view.cc:
5582 * testsuite/experimental/filesystem/path/decompose/extension.cc:
5584 * testsuite/experimental/filesystem/path/decompose/filename.cc:
5586 * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
5588 * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
5590 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
5592 * testsuite/experimental/filesystem/path/decompose/root_name.cc:
5594 * testsuite/experimental/filesystem/path/decompose/root_path.cc:
5596 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
5597 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
5599 * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
5600 * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
5601 * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
5603 * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
5605 * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
5607 * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
5609 * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
5610 * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
5611 * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
5613 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
5614 * testsuite/experimental/filesystem/path/query/has_extension.cc:
5616 * testsuite/experimental/filesystem/path/query/has_filename.cc:
5618 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
5620 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
5622 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
5624 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
5626 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
5628 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
5629 * testsuite/experimental/filesystem/path/query/is_relative.cc:
5632 2018-04-13 Jonathan Wakely <jwakely@redhat.com>
5634 * src/c++11/Makefile.am: Fix sed command.
5635 * src/c++11/Makefile.in: Regenerate.
5637 * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
5638 handle mangled names starting with double underscores on darwin.
5639 * src/c++11/Makefile.in: Regenerate.
5641 2018-04-12 Jonathan Wakely <jwakely@redhat.com>
5643 * src/c++11/Makefile.am: Fix comment.
5644 * src/c++11/Makefile.in: Regenerate.
5645 * src/c++11/cxx11-ios_failure.cc: Fix comment.
5646 * src/c++98/ios_failure.cc: Likewise.
5648 * src/c++11/ios.cc: Remove redundant macro definition.
5650 2018-04-11 Jonathan Wakely <jwakely@redhat.com>
5652 * doc/xml/manual/abi.xml: Document header locations in recent
5654 * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
5655 * doc/xml/manual/spine.xml: Update copyright years.
5656 * doc/xml/manual/strings.xml: Adjust tolower example to avoid
5657 undefined behaviour.
5658 * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
5659 * doc/html/*: Regenerate.
5661 2018-04-10 Jonathan Wakely <jwakely@redhat.com>
5663 * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
5664 * doc/xml/manual/backwards_compatibility.xml: Likewise.
5665 * doc/xml/manual/containers.xml: Likewise.
5666 * doc/xml/manual/debug_mode.xml: Likewise.
5667 * doc/xml/manual/extensions.xml: Likewise.
5668 * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
5669 * doc/xml/manual/using.xml: Likewise.
5670 * doc/xml/manual/utilities.xml: Likewise.
5673 * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
5674 cxx11-ios_failure.cc to rewrite type info for __ios_failure.
5675 * src/c++11/Makefile.in: Regenerate.
5676 * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
5678 [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
5679 * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
5680 * src/c++98/ios_failure.cc (__construct_ios_failure)
5681 (__destroy_ios_failure, is_ios_failure_handler): New functions.
5682 [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
5683 * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
5684 * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
5685 handler types, to always catch std::ios_base::failure.
5686 * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
5687 * testsuite/27_io/basic_istream/extractors_arithmetic/char/
5688 exceptions_failbit.cc: Likewise.
5689 * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
5690 exceptions_failbit.cc: Likewise.
5691 * testsuite/27_io/basic_istream/extractors_other/char/
5692 exceptions_null.cc: Likewise.
5693 * testsuite/27_io/basic_istream/extractors_other/wchar_t/
5694 exceptions_null.cc: Likewise.
5695 * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
5696 * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
5697 * testsuite/27_io/basic_ostream/inserters_other/char/
5698 exceptions_null.cc: Likewise.
5699 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
5700 exceptions_null.cc: Likewise.
5701 * testsuite/27_io/ios_base/storage/2.cc: Likewise.
5703 2018-04-05 Jonathan Wakely <jwakely@redhat.com>
5705 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
5706 __get calls to avoid ADL and avoid ambiguity due to Clang bug.
5708 2018-04-03 Jonathan Wakely <jwakely@redhat.com>
5711 * include/std/variant (_Move_assign_base::operator=): Fix incorrect
5713 * testsuite/20_util/variant/85183.cc: New.
5715 2018-03-26 Jonathan Wakely <jwakely@redhat.com>
5717 * include/std/variant (__get): Qualify calls to avoid ADL.
5718 (__select_index): Adjust whitespace.
5719 (variant): Add using-declaration to workaround Clang bug.
5721 2018-03-22 Jonathan Wakely <jwakely@redhat.com>
5724 * include/bits/stl_function.h (greater::__not_overloaded)
5725 (less::__not_overloaded, greater_equal::__not_overloaded)
5726 (less_equal::__not_overloaded): Fix ambiguous specializations.
5727 * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
5728 tests for type with overloaded operators.
5730 2018-03-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5733 * testsuite/experimental/memory_resource/resource_adaptor.cc:
5734 xfail execution on 32-bit Solaris/x86.
5736 2018-03-21 Jonathan Wakely <jwakely@redhat.com>
5738 * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
5739 VERIFY instead of assert.
5740 * testsuite/20_util/hash/84998.cc: New test.
5741 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
5742 copy of test adjusted for Debug Mode.
5743 * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
5746 2018-03-20 François Dumont <fdumont@gcc.gnu.org>
5749 * include/bits/stl_bvector.h: Fix std::hash friend declaration.
5750 * include/std/bitset: Likewise.
5751 * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
5753 * include/bits/stl_multimap.h (std::multimap<>): Likewise.
5754 * include/bits/stl_multiset.h (std::multiset<>): Likewise.
5755 * include/bits/stl_set.h (std::set<>): Likewise.
5756 * include/bits/unordered_map.h (std::unordered_map<>): Fix
5757 _Hash_merge_helper friend declaration.
5758 (std::unordered_multimap<>): Likewise.
5759 * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
5760 (std::unordered_multiset<>): Likewise.
5762 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
5764 * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
5765 trailing slash for domain level link.
5766 * doc/xml/faq.xml: Ditto.
5767 * doc/xml/manual/appendix_free.xml (software): Ditto.
5768 * doc/xml/manual/intro.xml: Ditto.
5769 * doc/xml/manual/spine.xml: Ditto.
5770 * doc/xml/spine.xml: Ditto.
5772 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
5774 * doc/xml/manual/documentation_hacking.xml: Adjust link to
5777 2018-03-17 Jonathan Wakely <jwakely@redhat.com>
5779 * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
5780 to compile as C++98.
5782 2018-03-14 Jonathan Wakely <jwakely@redhat.com>
5785 * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
5786 (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
5787 to ensure total order for pointers.
5788 (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
5789 Add operator() overloads for pointer arguments and make generic
5790 overloads dispatch to new _S_cmp functions when comparisons would
5791 use built-in operators for pointers.
5792 * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
5794 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
5798 * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
5799 * configure: Regenerate.
5800 * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
5801 (aligned_alloc): Add using-declaration.
5802 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
5804 2018-03-09 François Dumont <fdumont@gcc.gnu.org>
5806 * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
5807 Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
5810 2018-03-09 Jonathan Wakely <jwakely@redhat.com>
5813 * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
5814 Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
5816 src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
5817 src/filesystem/std-ops.cc (create_dir): Likewise.
5819 2018-03-08 François Dumont <fdumont@gcc.gnu.org>
5821 * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
5822 (StdListIteratorPrinter): Inherit from latter.
5823 (StdFwdListIteratorPrinter): New, inherit from latter.
5824 (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
5825 when iterator has no associated container.
5826 (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
5827 __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
5829 * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
5830 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
5832 2018-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
5835 * include/std/optional (_Optional_payload): Split into multiple
5836 specializations that can handle different cases of trivial or
5837 non-trivial assignment operators.
5838 * testsuite/20_util/optional/84601.cc: New.
5839 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
5841 2018-03-02 Jonathan Wakely <jwakely@redhat.com>
5844 * include/bits/parse_numbers.h (_Number_help): Add partial
5845 specialization to handle digit separators. Adjust partial
5846 specialization for recursion temrination to require _Pow == 1ULL.
5847 * testsuite/20_util/duration/literals/84671.cc: New
5849 2018-02-27 Ville Voutilainen <ville.voutilainen@gmail.com>
5851 Implement the missing bits of LWG 2769
5852 * include/std/any (any_cast(const any&)): Add static_assert.
5853 (any_cast(any&)): Likewise.
5854 (any_cast(any&&)): Likewise, and remove the handling
5855 for copyable-but-not-movable type.
5856 * testsuite/20_util/any/misc/any_cast.cc: Adjust.
5857 * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
5860 2018-02-23 Jonathan Wakely <jwakely@redhat.com>
5863 * include/std/thread (thread::__make_invoker): Construct tuple
5864 directly instead of using make_tuple.
5865 * testsuite/30_threads/async/84532.cc: New.
5866 * testsuite/30_threads/thread/84532.cc: New.
5868 2018-02-20 François Dumont <fdumont@gcc.gnu.org>
5870 * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
5871 (template<> __aligned_buffer): Define as __aligned_membuf alias.
5873 2018-02-19 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
5876 * configure: Regenerate.
5878 2018-02-15 Jonathan Wakely <jwakely@redhat.com>
5881 * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
5882 * configure: Regenerate.
5883 * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
5885 * include/Makefile.in: Regenerate.
5887 2018-01-29 Jonathan Wakely <jwakely@redhat.com>
5890 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
5891 Add -ffloat-store to options for m68k and ia32.
5893 * doc/xml/faq.xml: Update copyright years.
5894 * doc/html/*: Regenerate.
5897 * include/std/any (any::__do_emplace): Only set _M_manager after
5898 constructing the contained object.
5899 * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
5900 * testsuite/20_util/any/modifiers/83658.cc: New test.
5902 2018-01-25 Jonathan Wakely <jwakely@redhat.com>
5905 * include/c_global/cstddef (__byte_operand): Define primary template.
5906 * testsuite/18_support/byte/81076.cc: New test.
5908 2018-01-19 Christophe Lyon <christophe.lyon@linaro.org>
5910 * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
5911 dg-options and dg-add-options order.
5912 * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
5913 * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
5915 * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
5916 * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
5918 * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
5920 * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
5921 * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
5923 * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
5925 * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
5927 * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
5929 * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
5931 * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
5933 * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
5935 * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
5937 * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
5938 * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
5939 * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
5940 * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
5941 * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
5942 * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
5943 * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
5944 * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
5945 * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
5947 * testsuite/special_functions/19_sph_bessel/check_nan.cc:
5949 * testsuite/special_functions/20_sph_legendre/check_nan.cc:
5951 * testsuite/special_functions/21_sph_neumann/check_nan.cc:
5954 2018-01-18 Uros Bizjak <ubizjak@gmail.com>
5956 * configure.ac (AC_CHECK_HEADERS): Add linux/types.h. Conditionally
5957 include linux/types.h when checking linux/random.h header.
5958 * config.h.in: Regenerate.
5960 * src/c++11/random.cc: Conditionally include linux/types.h.
5962 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
5964 * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
5966 2018-01-16 Jonathan Wakely <jwakely@redhat.com>
5969 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
5970 pattern with exact match for std::cerr.
5972 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
5975 * include/bits/random.h (chi_squared_distribution::param): Update
5976 gamma distribution parameter.
5977 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
5981 * include/std/type_traits (has_unique_object_representations_v): Add
5983 * testsuite/20_util/has_unique_object_representations/value.cc: Check
5986 2018-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
5988 Make optional conditionally
5989 trivially_{copy,move}_{constructible,assignable}
5990 * include/std/optional (_Optional_payload): Fix the comment in
5991 the class head and turn into a primary and one specialization.
5992 (_Optional_payload::_M_engaged): Strike the NSDMI.
5993 (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
5995 (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
5997 (_Optional_payload<_Tp, false>::_M_get): Likewise.
5998 (_Optional_payload<_Tp, false>::_M_reset): Likewise.
5999 (_Optional_base_impl): Likewise.
6000 (_Optional_base): Turn into a primary and three specializations.
6001 (optional(nullopt)): Change the base init.
6002 * testsuite/20_util/optional/assignment/8.cc: New.
6003 * testsuite/20_util/optional/cons/trivial.cc: Likewise.
6004 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
6006 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
6009 * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
6010 (get_template_arg_list): New.
6011 (StdVariantPrinter._template_args): Remove, use get_template_arg_list
6013 (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
6014 of strings and regular expressions.
6015 (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
6016 (FilteringTypePrinter): Add docstring. Match using startswith. Use
6017 strip_inline_namespaces instead of strip_versioned_namespace.
6018 (add_one_type_printer): Prepend namespace to match argument.
6019 (register_type_printers): Add type printers for char16_t and char32_t
6020 string types and for types using cxx11 ABI. Update calls to
6021 add_one_template_type_printer to provide default argument dicts.
6022 * testsuite/libstdc++-prettyprinters/80276.cc: New test.
6023 * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
6024 basic_string<unsigned char> and basic_string<signed char>.
6025 * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
6026 to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
6028 2018-01-14 Andreas Schwab <schwab@linux-m68k.org>
6031 * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
6033 2018-01-13 Tim Shen <timshen@google.com>
6036 * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
6037 * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
6038 * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
6040 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
6043 * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
6044 Remove dg-xfail-run-if.
6046 2018-01-10 François Dumont <fdumont@gcc.gnu.org>
6048 * include/bits/forward_list.h
6049 (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
6050 (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
6051 (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
6052 (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
6053 (_Fwd_list_impl()): Add noexcept qualification.
6054 (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
6055 (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
6056 (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
6057 (_Fwd_list_base()): Default.
6058 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
6059 (_Fwd_list_base(_Fwd_list_base&&)): Default.
6060 (forward_list<>()): Default.
6061 (forward_list<>(forward_list&&)): Default.
6062 (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
6063 (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
6064 (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
6065 * include/bits/forward_list.tcc
6066 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
6067 _M_impl._M_head move assignment.
6068 (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
6069 * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
6071 2018-01-09 Jonathan Wakely <jwakely@redhat.com>
6074 * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
6075 (UniquePointerPrinter): Print correct template argument, not type of
6077 (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
6079 * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
6081 * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
6082 weak_ptr of array types.
6084 2018-01-09 François Dumont <fdumont@gcc.gnu.org>
6087 * include/bits/hashtable_policy.h
6088 (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
6090 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
6091 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
6092 Add false_type parameter.
6093 (_Insert_base::insert): Adapt.
6094 * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
6096 (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
6097 Add __n_elt parameter, defaulted to 1.
6098 (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
6099 policy _M_need_rehash.
6100 (_Hashtable::_M_merge_unique): Pass target number of elements to add to
6101 produce only 1 rehash if necessary.
6102 * testsuite/23_containers/unordered_map/insert/83709.cc: New.
6103 * testsuite/23_containers/unordered_set/insert/83709.cc: New.
6105 2018-01-09 Juraj Oršulić <juraj.orsulic@fer.hr>
6106 Jonathan Wakely <jwakely@redhat.com>
6108 PR libstdc++/59253 (partial)
6109 * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
6110 type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
6111 (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
6113 * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
6114 of unique_ptr printer.
6115 * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
6116 output of shared_ptr printer.
6118 2018-01-05 Jonathan Wakely <jwakely@redhat.com>
6121 * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
6122 unnecessary symlink_status call.
6123 (remove_all(const path&, error_code&)): Use filesystem::remove.
6124 * src/filesystem/std-ops.cc: Likewise.
6127 * src/filesystem/std-ops.cc (do_copy_file): Use non-null offset with
6131 * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
6132 report an error for ENOENT.
6133 (remove_all(const path&)): Fix type of result variable.
6134 (remove_all(const path&, error_code&)): Use non-throwing increment
6135 for directory iterator. Call POSIX remove directly to avoid redundant
6136 calls to symlink_status. Do not report errors for ENOENT.
6137 * src/filesystem/std-ops.cc: Likewise.
6138 * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
6140 * testsuite/experimental/filesystem/operations/remove_all.cc:
6143 2018-01-04 Jonathan Wakely <jwakely@redhat.com>
6146 * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
6147 redundant call to ec.clear().
6148 (remove_all(const path&, error_code&))): Do not return an error for
6150 * src/filesystem/std-ops.cc: Likewise.
6151 * testsuite/27_io/filesystem/operations/remove.cc: New test.
6152 * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
6153 results for non-existent paths.
6154 * testsuite/experimental/filesystem/operations/remove.cc: New test.
6155 * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
6156 expected results for non-existent paths.
6158 * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
6159 check status_known once.
6160 * include/experimental/bits/fs_ops.h: Likewise.
6163 * include/std/functional (__is_byte_like): New trait.
6164 (__is_std_equal_to): Remove.
6165 (__boyer_moore_base_t): Use __is_byte_like instead of
6167 * include/experimental/functional (__is_std_equal_to): Remove.
6168 (__boyer_moore_base_t): Use __is_byte_like instead of
6170 * testsuite/20_util/function_objects/83607.cc: New test.
6172 2018-01-03 Ville Voutilainen <ville.voutilainen@gmail.com>
6174 Protect optional's deduction guide with the feature macro
6175 * include/std/optional: Use the feature macro.
6177 2018-01-03 Jakub Jelinek <jakub@redhat.com>
6179 Update copyright years.
6181 Copyright (C) 2018 Free Software Foundation, Inc.
6183 Copying and distribution of this file, with or without modification,
6184 are permitted in any medium without royalty provided the copyright
6185 notice and this notice are preserved.