Fix compilation of server.cc on hpux.
[official-gcc.git] / libstdc++-v3 / ChangeLog-2018
blob1458251c74570a177771696144df766b7024c24a
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
8         parenthesis operator.
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
22         MinGW.
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,
36         as per LWG 3171.
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
49         inline definition.
50         * src/filesystem/std-path.cc (path::_Parser): Track last type read
51         from input.
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>
73         PR libstdc++/71044
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
78         long strings.
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.
100         PR libstdc++/71044
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
114         pairs of pointers.
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
134         path::_S_is_dir_sep.
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
147         _M_trim().
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
161         mingw.
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
172         efficiently.
173         (distance, advance): Add overloads for path::iterator.
174         * testsuite/27_io/filesystem/path/itr/components.cc: Test new
175         overload.
177         PR libstdc++/80762
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
189         inline function.
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
196         to epubcheck.
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>
211         PR libstdc++/64883
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/
231         char/1.cc: New test.
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/
235         char/1.cc: New test.
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/
239         char/1.cc: New test.
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/
243         char/1.cc: New test.
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>
279         Fix erasure goofs.
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>
299         PR libstdc++/88119
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
303         __alignof__.
304         * testsuite/20_util/alignment_of/value.cc: Fix test to check values
305         match alignof not __alignof__, as required by the standard.
307         PR libstdc++/86910
308         PR libstdc++/87846
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
315         trailing slashes.
316         * testsuite/experimental/filesystem/operations/create_directories.cc:
317         Likewise.
319 2018-11-28  Jonathan Wakely  <jwakely@redhat.com>
321         PR libstdc++/83306
322         * src/filesystem/path.cc (filesystem_error::_M_gen_what()): Create
323         string directly, instead of calling fs_err_concat.
325         PR libstdc++/83511
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):
329         Likewise.
330         * testsuite/21_strings/basic_string_view/operations/substr/char/
331         83511.cc: New test.
332         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/
333         83511.cc: New test.
334         * testsuite/experimental/string_view/operations/substr/char/83511.cc:
335         New test.
336         * testsuite/experimental/string_view/operations/substr/wchar_t/83511.cc:
337         New test.
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.
377         PR libstdc++/83306
378         * include/bits/fs_path.h (filesystem_error): Move data members into
379         pimpl class owned by shared_ptr. Remove inline definitions of member
380         functions.
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.
396         PR libstdc++/67843
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>
421         PR libstdc++/88199
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
426         (test03): New.
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>
456         PR libstdc++/65229
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>
471         PR libstdc++/87106
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>
485         PR libstdc++/85930
486         PR libstdc++/87520
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>
498         PR c++/87386
499         * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust expected
500         line.
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>
510         PR libstdc++/88111
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.
516         PR libstdc++/88113
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
587         iterator.
588         (annotate_base::check_constructed(void*, size_t)): Return found iterator.
589         (annotate_base::erase_construct(void*)): Use latter method returned
590         iterator.
592 2018-11-19  Ville Voutilainen  <ville.voutilainen@gmail.com>
594         PR libstdc++/87855
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
611         copy.
612         * testsuite/21_strings/basic_string_view/operations/copy/char/2.cc:
613         New test.
614         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc:
615         New test.
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
621         for high orders.
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
658         members.
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
663         test.
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
703         unused function.
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
722         expression.
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:
744         New test.
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>
752         PR libstdc++/87963
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>
782         PR libstdc++/87787
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
801         memory_resource.cc
802         * src/c++17/Makefile.in: Regenerate.
803         * src/c++17/memory_resource.cc (bitset, chunk, big_block): New
804         internal classes.
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
816         functions.
817         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: New
818         test.
819         * testsuite/20_util/unsynchronized_pool_resource/is_equal.cc: New
820         test.
821         * testsuite/20_util/unsynchronized_pool_resource/options.cc: New
822         test.
823         * testsuite/20_util/unsynchronized_pool_resource/release.cc: New
824         test.
826 2018-11-06  John Bytheway  <jbytheway@gmail.com>
828         PR libstdc++/87872
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>
834         PR bootstrap/82856
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.
847         PR libstdc++/87822
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>
861         PR libstdc++/87809
862         * include/bits/forward_list.h (_Fwd_list_impl::_Fwd_list_impl()): Use
863         trait in exception-specification instead of possibly invalid
864         expression.
865         * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
866         Likewise.
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.
874         PR libstdc++/87784
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>
896         PR libstdc++/87749
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:
902         New test.
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:
906         New test.
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>
912         PR libstdc++/87106
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
927         after _Destroy.
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&,
963         _Obj&&)): Likewise.
964         (unordered_map<>::insert_or_assign<>(const_iterator, key_type&&,
965         _Obj&&)): Likewise.
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>
1066         PR libstdc++/87704
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/
1084         3.cc: Likewise.
1085         * testsuite/23_containers/forward_list/requirements/
1086         explicit_instantiation/3.cc: Likewise.
1087         * testsuite/23_containers/list/requirements/explicit_instantiation/
1088         3.cc: Likewise.
1089         * testsuite/23_containers/map/requirements/explicit_instantiation/
1090         3.cc: Likewise.
1091         * testsuite/23_containers/multimap/requirements/explicit_instantiation/
1092         3.cc: Likewise.
1093         * testsuite/23_containers/multiset/requirements/explicit_instantiation/
1094         3.cc: Likewise.
1095         * testsuite/23_containers/set/requirements/explicit_instantiation/
1096         3.cc: Likewise.
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/
1106         3.cc: Likewise.
1107         * testsuite/23_containers/vector/requirements/explicit_instantiation/
1108         3.cc: Likewise.
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
1122         extension.
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:
1151         Likewise.
1152         * testsuite/23_containers/unordered_map/allocator/minimal.cc:
1153         Likewise.
1154         * testsuite/23_containers/unordered_map/allocator/move.cc: Likewise.
1155         * testsuite/23_containers/unordered_map/allocator/move_assign.cc:
1156         Likewise.
1157         * testsuite/23_containers/unordered_map/allocator/noexcept.cc:
1158         Likewise.
1159         * testsuite/23_containers/unordered_map/cons/81891.cc: Likewise.
1160         * testsuite/23_containers/unordered_map/requirements/exception/
1161         basic.cc: Likewise.
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:
1168         Likewise.
1169         * testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc:
1170         Likewise.
1171         * testsuite/23_containers/unordered_multimap/allocator/minimal.cc:
1172         Likewise.
1173         * testsuite/23_containers/unordered_multimap/allocator/move.cc:
1174         Likewise.
1175         * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc:
1176         Likewise.
1177         * testsuite/23_containers/unordered_multimap/allocator/noexcept.cc:
1178         Likewise.
1179         * testsuite/23_containers/unordered_multimap/requirements/exception/
1180         basic.cc: Likewise.
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
1205         the 5.cc test.
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
1219         whitespace.
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.
1236         PR libstdc++/87642
1237         * config/locale/gnu/monetary_members.cc
1238         (moneypunct<char, true>::_M_initialize_moneypunct): Use
1239         __narrow_multibyte_chars to convert multibyte thousands separators
1240         to a single char.
1241         * config/locale/gnu/numeric_members.cc
1242         (numpunct<char>::_M_initialize_numpunct): Likewise.
1243         (__narrow_multibyte_chars): New function.
1245         PR libstdc++/87641
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>
1257         Partial revert.
1258         2018-10-08  François Dumont  <fdumont@gcc.gnu.org>
1260         * include/debug/list (list<>::cbegin()): Use C++11 direct
1261         initialization.
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.
1268         Partial revert.
1269         2018-10-15  François Dumont  <fdumont@gcc.gnu.org>
1271         * include/debug/vector (vector<>::cbegin()): Use C++11 direct
1272         initialization.
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>
1281         PR libstdc++/87619
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>
1308         instead of <mutex>.
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
1323         an error.
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]:
1327         Likewise.
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]:
1345         Likewise.
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:
1357         Likewise.
1358         * testsuite/experimental/net/internet/address/v4/comparisons.cc:
1359         Likewise.
1360         * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
1361         * testsuite/experimental/net/internet/address/v4/creation.cc:
1362         Likewise.
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:
1366         Likewise.
1367         * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
1368         Likewise.
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
1374         return.
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
1405         variable.
1406         * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
1408         PR libstdc++/87618
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).
1419         PR libstdc++/87587
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
1425         initialization.
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)):
1431         Likewise.
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
1457         test.
1458         * testsuite/experimental/net/headers.cc: New test.
1459         * testsuite/experimental/net/internet/address/v4/comparisons.cc: New
1460         test.
1461         * testsuite/experimental/net/internet/address/v4/cons.cc: New test.
1462         * testsuite/experimental/net/internet/address/v4/creation.cc: New
1463         test.
1464         * testsuite/experimental/net/internet/address/v4/members.cc: New
1465         test.
1466         * testsuite/experimental/net/internet/resolver/base.cc: New test.
1467         * testsuite/experimental/net/internet/resolver/ops/lookup.cc: New
1468         test.
1469         * testsuite/experimental/net/internet/resolver/ops/reverse.cc: New
1470         test.
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.
1475         PR libstdc++/77691
1476         * include/experimental/memory_resource (__resource_adaptor_imp): Do
1477         not allocate sizes smaller than alignment when relying on guaranteed
1478         alignment.
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&)):
1495         Likewise.
1496         (forward_list<>::insert_after(const_iterator, initializer_list<>)):
1497         Likewise.
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
1504         friend.
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>
1518         PR libstdc++/80538
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>
1543         PR libstdc++/87544
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):
1547         Likewise.
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
1557         friend.
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<>&)):
1562         Remove.
1563         (operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
1564         Remove.
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>
1575         PR libstdc++/87538
1576         * testsuite/experimental/functional/87538.cc: New test.
1578         PR libstdc++/87538
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
1586         initialization.
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
1610         deprecate.
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>
1625         PR libstdc++/59439
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>
1676         PR libstdc++/87258
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
1708         to https.
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() ==
1726         end().
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>
1735         PR libstdc++/87431
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"
1743         to https.
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
1753         https.
1755 2018-09-21  François Dumont  <fdumont@gcc.gnu.org>
1757         PR libstdc++/87135
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:
1762         Adapt.
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
1774         on arm*.
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
1780         map::operator[].
1782 2018-09-18  François Dumont  <fdumont@gcc.gnu.org>
1784         PR libstdc++/87135
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
1800         rvalue.
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
1806         Clang 7 and older.
1808 2018-09-11  Jonathan Wakely  <jwakely@redhat.com>
1810         PR libstdc++/87278
1811         * include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
1812         remove_const.
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
1817         check deleter type.
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>
1838         PR libstdc++/78179
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.
1848         PR libstdc++/87194
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.
1898         PR libstdc++/78595
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
1911         test.
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):
1918         New.
1919         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1920         ::_OtherSelf): New.
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<>&)):
1929         Likewise.
1930         (operator!=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1931         Likewise.
1932         (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1933         (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1934         Likewise.
1935         (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1936         (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1937         Likewise.
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
1943         copy.
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
1954         parameter.
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
1959         local_iterator.
1960         (struct forward_members_unordered<_Tp, false>): Remove partial
1961         specialization.
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
1968         references.
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:
1975         Likewise.
1976         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
1977         Likewise.
1978         * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
1979         Likewise.
1980         * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
1981         Likewise.
1982         * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
1983         Likewise.
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:
1990         Likewise.
1991         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
1992         Likewise.
1993         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
1994         Likewise.
1995         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
1996         Likewise.
1997         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
1998         Likewise.
1999         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
2000         Likewise.
2001         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
2002         Likewise.
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:
2008         Likewise.
2009         * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
2010         Likewise.
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:
2020         Likewise.
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:
2028         Likewise.
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
2050         long long values.
2052 2018-08-29  Jonathan Wakely  <jwakely@redhat.com>
2054         PR libstdc++/31413
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>
2060         PR libstdc++/87116
2061         * src/filesystem/std-path.cc (path::lexically_normal): When handling
2062         a dot-dot filename, preserve an empty final component in the iteration
2063         sequence.
2064         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
2065         root-directory.
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>
2073         PR libstdc++/70694
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>
2079         PR libstdc++/86822
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
2096         test.
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
2103         test.
2104         * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
2105         New test.
2106         * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
2107         New test.
2108         * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
2109         test.
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
2113         test.
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]:
2151         Likewise.
2152         (insert(const_iterator, initializer_list<_CharT>))
2153         [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
2154         * testsuite/21_strings/basic_string/init-list.cc: Remove effective
2155         target directive.
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:
2162         Require cxx11-abi.
2163         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
2164         Likewise.
2165         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
2166         Likewise.
2168         * testsuite/23_containers/deque/capacity/max_size.cc: Fix test for
2169         C++98 mode.
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>
2178         PR libstdc++/87061
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
2193         cxx11-abi.
2194         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
2196         PR libstdc++/78448
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>
2224         PR libstdc++/68222
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&)):
2248         Move...
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&)):
2252         Move...
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&)):
2256         Move...
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&)):
2260         Move...
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&)):
2264         Move...
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<>&)):
2270         Likewise.
2271         (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
2272         (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2273         Likewise.
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
2281         specialization.
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&)):
2333         Declare.
2334         (__valid_range(const _Safe_local_iterator<>&,
2335         const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)):
2336         Declare.
2337         (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2338         Declare.
2339         (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)):
2340         Declare.
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
2361         line number.
2362         * testsuite/23_containers/unordered_set/debug/debug_functions.cc:
2363         (test01): Remove.
2364         * testsuite/23_containers/vector/debug/debug_functions.cc (test01):
2365         Remove.
2367 2018-08-22  Jonathan Wakely  <jwakely@redhat.com>
2369         PR libstdc++/77854
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
2387         elements for C++2a.
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
2395         C++2a.
2396         (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
2397         to change return type for C++2a. Return number of removed elements for
2398         C++2a.
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>
2415         PR libstdc++/86963
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
2431         specifications.
2432         (optional): Likewise. Adjust indentation.
2433         (optional::__not_self, optional::__not_tag, optional::_Requires): New
2434         SFINAE helpers.
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
2443         _GLIBCXX_DEBUG.
2445 2018-08-17  Jonathan Wakely  <jwakely@redhat.com>
2447         PR libstdc++/86963
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
2468         specifications.
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
2476         to dg-prune-output.
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().
2486         PR libstdc++/86447
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:
2499         New test.
2500         * testsuite/experimental/polymorphic_allocator/
2501         pmr_typedefs_forward_list.cc: New test.
2502         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
2503         New test.
2504         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
2505         New test.
2506         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
2507         New test.
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:
2513         New test.
2514         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
2515         New test.
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:
2525         New test.
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
2540         not by reference.
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:
2547         New test.
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>
2554         PR libstdc++/86954
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.
2561         PR libstdc++/86846
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.
2567         PR libstdc++/85343
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>
2591         PR libstdc++/45093
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>.
2603         Revert
2604         2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2606         PR target/85904
2607         * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
2608         Newlib.
2609         * configure: Regenerate.
2611 2018-08-10  Jonathan Wakely  <jwakely@redhat.com>
2613         PR libstdc++/68210
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
2619         of free(ptr).
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
2631         with noexcept.
2632         * libsupc++/new_opnt.cc: Likewise. Call operator new(sz) instead of
2633         malloc(sz).
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>
2648         PR target/85904
2649         * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
2650         Newlib.
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):
2664         Likewise.
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
2680         test.
2681         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
2682         test.
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
2693         duplication...
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)):
2698         Likewise.
2699         (__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
2700         Likewise.
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
2706         by configure.
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.
2714         PR libstdc++/86597
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>
2721         PR libstdc++/86874
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.
2731         PR libstdc++/86861
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):
2751         Define.
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>
2788         PR libstdc++/60555
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
2794         test.
2796 2018-07-31  Jonathan Wakely  <jwakely@redhat.com>
2798         PR libstdc++/86751
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):
2821         Likewise.
2822         [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
2823         * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
2824         from here.
2826         * doc/xml/manual/test.xml: Improve documentation on writing tests for
2827         newer standards.
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>
2837         PR libstdc++/86734
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:
2865         Likewise.
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
2876         and random_device.
2877         * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
2878         cstdint.
2879         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
2880         Likewise.
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/
2906         64351.cc: Likewise.
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:
2914         Likewise.
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:
2946         Likewise.
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:
2950         Likewise.
2951         * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
2952         Likewise.
2953         * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
2954         Likewise.
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:
2961         Likewise.
2962         * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
2963         Likewise.
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:
2969         Likewise.
2970         * testsuite/30_threads/recursive_timed_mutex/native_handle/
2971         typesizes.cc: Likewise.
2972         * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
2973         Likewise.
2974         * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
2975         Likewise.
2976         * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
2977         Likewise.
2978         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
2979         Likewise.
2980         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
2981         Likewise.
2982         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
2983         Likewise.
2984         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
2985         Likewise.
2986         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
2987         Likewise.
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:
3027         Likewise.
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:
3071         Likewise.
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:
3081         Likewise.
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
3115         directive.
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:
3136         Likewise.
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:
3144         Likewise.
3145         * testsuite/30_threads/condition_variable/requirements/
3146         standard_layout.cc: Likewise.
3147         * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
3148         * Likewise.
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:
3153         Likewise.
3154         * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
3155         Likewise.
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:
3173         Likewise.
3174         * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
3175         Likewise.
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::
3197         Likewise.
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:
3218         Likewise.
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:
3254         * Likewise.
3255         * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
3257         * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
3258         from namespace std.
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:
3308         Likewise.
3309         * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
3310         Likewise.
3311         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
3312         Likewise.
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:
3316         Likewise.
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/
3322         1.cc: Likewise.
3323         * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
3324         1.cc: Likewise.
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
3329         not usable.
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>
3422         PR libstdc++/77691
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>
3434         PR libstdc++/86676
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>
3440         PR libstdc++/86676
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:
3490         New test.
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
3497         default resource.
3499         PR libstdc++/86658
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
3519         whitespace.
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.
3525         PR libstdc++/70966
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>
3531         PR libstdc++/70940
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>
3544         PR libstdc++/86595
3545         * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
3546         noexcept.
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>
3555         PR libstdc++/86603
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
3567         is_constructible.
3568         (__is_trivially_copy_assignable_impl): Remove redundant use of
3569         is_copy_assignable.
3570         (__is_trivially_move_assignable_impl): Remove redundant use of
3571         is_move_assignable.
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:
3582         New test.
3584 2018-07-17  Jonathan Wakely  <jwakely@redhat.com>
3586         PR libstdc++/86450
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.
3616         PR libstdc++/86537
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&)):
3636         Use latter.
3637         (__glibcxx_check_string_constructor): New.
3638         (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
3639         Use latter.
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>
3674         PR libstdc++/85831
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
3692         COW strings.
3693         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3694         Likewise.
3695         * testsuite/21_strings/basic_string/requirements/
3696         explicit_instantiation/debug.cc: Likewise.
3698         PR libstdc++/58265
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.
3707         PR libstdc++/58265
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):
3729         Define.
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
3741         for C++2a.
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
3745         for C++2a.
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:
3780         New.
3781         * testsuite/23_containers/unordered_multiset/operations/contains.cc:
3782         New.
3783         * testsuite/23_containers/unordered_set/operations/contains.cc: New.
3785 2018-07-04  François Dumont  <fdumont@gcc.gnu.org>
3787         PR libstdc++/86272
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:
3804         Likewise.
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>
3818         PR libstdc++/86398
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:
3826         Likewise.
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):
3841         Define for C++14.
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
3846         std::byte.
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
3859         condition.
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
3880         noexcept.
3881         (__is_convertible_helper<_From, _To, false>::__test_nothrow)
3882         (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
3883         new members.
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:
3889         New.
3891         P0887R1 The identity metafunction
3892         * include/std/type_traits (type_identity, type_identity_t): Define
3893         for C++2a.
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
3910         simplify.
3911         (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
3912         __enable_if_t.
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
3916         trait.
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
3953         static assertions.
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.
3960         PR libstdc++/86138
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
3967         directives.
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
3973         noexcept.
3975 2018-06-25  Jonathan Wakely  <jwakely@redhat.com>
3977         PR libstdc++/86112
3978         * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
3979         Replace dict comprehension.
3981         PR libstdc++/81092
3982         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3984         PR libstdc++/86292
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.
4003         PR libstdc++/86280
4004         * include/experimental/memory_resource
4005         (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
4006         enough for result of left shift.
4008         PR libstdc++/86138
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>
4021         PR libstdc++/83328
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
4029         definition.
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)):
4035         Likewise.
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:
4040         New.
4041         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
4042         New.
4043         * testsuite/util/testsuite_abi.cc: Add new symbol version.
4045         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
4047         PR libstdc++/70940
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.
4055         PR libstdc++/70940
4056         * include/experimental/memory_resource (__resource_adaptor_common):
4057         New base class.
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
4077         same type.
4079 2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
4081         PR libstdc++/70966
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
4108         friends.
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
4118         dg-error lineno.
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:
4142         New.
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:
4150         New.
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
4156         symlink.
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
4164         macro.
4165         (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
4166         NOTHROW.
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):
4182         Define.
4183         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
4184         deduction
4185         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
4186         Likewise.
4188 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
4190         PR libstdc++/86169
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:
4194         New.
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/
4206         nonnull.cc: New.
4207         * testsuite/21_strings/basic_string_view/operations/find/char/
4208         nonnull.cc: New.
4209         * testsuite/21_strings/basic_string_view/operations/rfind/char/
4210         nonnull.cc: New.
4212         PR libstdc++/86168
4213         * include/bits/random.h (random_device(const string&)): Remove
4214         default argument.
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
4224         template.
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:
4241         Likewise.
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
4247         whitespace.
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):
4254         Restore to here.
4256         P0935R0 Eradicating unnecessarily explicit default constructors
4257         * include/backward/strstream (strstreambuf): Add non-explicit default
4258         constructor.
4259         * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
4260         Likewise.
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
4272         macro.
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
4289         constructors.
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
4302         non-explicit.
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:
4306         Likewise.
4307         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
4308         Likewise.
4309         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
4310         Likewise.
4311         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
4312         Likewise.
4313         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
4314         Likewise.
4315         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
4316         Likewise.
4317         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
4318         Likewise.
4319         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
4320         Likewise.
4321         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
4322         Likewise.
4323         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
4324         Likewise.
4325         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
4326         Likewise.
4327         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
4328         Likewise.
4329         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
4330         Likewise.
4331         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
4332         Likewise.
4333         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
4334         Likewise.
4335         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
4336         Likewise.
4337         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
4338         Likewise.
4339         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
4340         Likewise.
4341         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
4342         Likewise.
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:
4347         Likewise.
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:
4352         Likewise.
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:
4356         Likewise.
4357         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
4358         Likewise.
4359         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
4360         Likewise.
4361         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
4362         Likewise.
4364 2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
4365             Jonathan Wakely  <jwakely@redhat.com>
4367         PR libstdc++/83982
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:
4371         New.
4373 2018-06-13  Jonathan Wakely  <jwakely@redhat.com>
4375         PR libstdc++/86127
4376         * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
4377         unused typedef.
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
4452         non-explicit.
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:
4456         Likewise.
4457         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
4458         Likewise.
4459         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
4460         Likewise.
4461         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
4462         Likewise.
4463         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
4464         Likewise.
4465         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
4466         Likewise.
4467         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
4468         Likewise.
4469         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
4470         Likewise.
4471         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
4472         Likewise.
4473         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
4474         Likewise.
4475         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
4476         Likewise.
4477         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
4478         Likewise.
4479         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
4480         Likewise.
4481         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
4482         Likewise.
4483         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
4484         Likewise.
4485         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
4486         Likewise.
4487         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
4488         Likewise.
4489         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
4490         Likewise.
4491         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
4492         Likewise.
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:
4497         Likewise.
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:
4502         Likewise.
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:
4506         Likewise.
4507         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
4508         Likewise.
4509         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
4510         Likewise.
4511         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
4512         Likewise.
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&)):
4521         Likewise.
4522         * include/bits/stream_iterator.h (istream_iterator::operator=)
4523         (ostream_iterator::operator=): Likewise.
4524         * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
4525         Likewise.
4526         * include/std/bitset (bitset::reference::reference(const reference&)):
4527         Likewise.
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>
4558         PR c++/86068
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>
4564         PR libstdc++/86008
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
4568         new overload.
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
4572         comment.
4573         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
4574         * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
4575         comment.
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
4582         mingw* targets.
4583         * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
4584         * testsuite/experimental/filesystem/operations/read_symlink.cc:
4585         Likewise.
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>
4599         PR libstdc++/85930
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.
4607         PR libstdc++/85930
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
4630         escape characters.
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
4668         from __gnu_posix.
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
4673         __gnu_posix.
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
4677         __gnu_posix.
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
4682         std::string.
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
4688         correct error_code.
4689         (filesystem::absolute(const path&, error_code&)): Add implementation
4690         for Windows.
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
4694         sendfile.
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
4706         from __gnu_posix.
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
4711         __gnu_posix.
4712         (do_space): Define.
4713         (filesystem::space): Use do_space.
4714         (filesystem::status, filesystem::symlink_status): Use names from
4715         __gnu_posix.
4716         (filesystem::temp_directory_path): Add implementation for Windows.
4717         * src/filesystem/std-path.cc
4718         [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
4719         Define for Windows.
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
4725         std::string.
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
4729         use symlinks.
4730         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
4731         Likewise.
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
4760         paths.
4761         * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
4762         not std::string.
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
4768         Windows behaviour.
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:
4786         Likewise.
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
4793         function.
4794         (__gnu_test::scoped_file): Construct fstreams with NTCTS not
4795         std::basic_string.
4797 2018-05-31  Jonathan Wakely  <jwakely@redhat.com>
4799         PR libstdc++/85951
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
4804         typedefs.
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
4810         typedefs.
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
4816         dg-error lineno.
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
4820         dg-error lineno.
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&)):
4836         Likewise.
4837         (multimap(_InputIterator, _InputIterator, const allocator_type&)):
4838         Likewise.
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&)):
4845         Likewise.
4846         (multiset(_InputIterator, _InputIterator, const allocator_type&)):
4847         Likewise.
4849 2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
4851         PR libstdc++/85768
4852         * src/c++11/debug.cc: Remove backtrace usage.
4854 2018-05-24  Maya Rashish  <coypu@sdf.org>
4856         PR target/85904
4857         * crossconfig.m4: Test for aligned_alloc on netbsd.
4858         * configure: Regenerate.
4860 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
4862         PR libstdc++/69769
4863         PR libstdc++/85886
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
4882         parameters.
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
4888         address types.
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
4897         test.
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
4918         wide strings.
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
4934         debugging check.
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
4967         new overloads.
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>
4978         PR libstdc++/85845
4979         * include/bits/stl_tree.h
4980         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
4981         qualification.
4983 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
4985         * src/filesystem/std-ops.cc (absolute): Report an error for empty
4986         paths.
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.
4991         PR libstdc++/85818
4992         * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
4993         dg-require-filesystem-ts.
4995         PR libstdc++/85843
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:
5023         Add checks.
5024         * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
5025         Add checks.
5026         * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
5027         Add checks.
5028         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
5029         Add checks.
5030         * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
5031         Add checks.
5032         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
5033         Add checks.
5034         * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
5035         Add checks.
5036         * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
5037         Add checks.
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
5050         copy assignment.
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>
5057         PR libstdc++/85098
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
5062         definitions.
5063         * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
5064         whitespace.
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>
5071         PR libstdc++/85818
5072         * src/filesystem/path.cc (path::preferred_separator): Add used
5073         attribute.
5074         * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
5076         PR libstdc++/85812
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>
5085         PR libstdc++/85749
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
5094         match declarations.
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:
5100         New.
5101         * testsuite/26_numerics/random/independent_bits_engine/cons/
5102         seed_seq2.cc: New.
5103         * testsuite/26_numerics/random/linear_congruential_engine/cons/
5104         seed_seq2.cc: New.
5105         * testsuite/26_numerics/random/mersenne_twister_engine/cons/
5106         seed_seq2.cc: New.
5107         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
5108         * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
5109         New.
5110         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
5111         seed_seq2.cc: New.
5112         * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
5113         seed_seq2.cc: New.
5115         PR libstdc++/83891
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:
5130         Likewise.
5131         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
5132         Likewise.
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:
5138         Likewise.
5139         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
5140         * testsuite/experimental/filesystem/path/query/has_extension.cc:
5141         Likewise.
5142         * testsuite/experimental/filesystem/path/query/has_filename.cc:
5143         Likewise.
5144         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
5145         Likewise.
5146         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
5147         Likewise.
5148         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
5149         Likewise.
5150         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
5151         Likewise.
5152         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
5153         Likewise.
5154         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
5155         * testsuite/experimental/filesystem/path/query/is_relative.cc:
5156         Likewise.
5158         PR libstdc++/84159
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
5162         semantics.
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>
5174         PR libstdc++/81256
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.
5186         PR libstdc++/67554
5187         * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
5188         (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
5190         PR libstdc++/82966
5191         * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
5192         instead of type.
5193         * testsuite/23_containers/set/modifiers/node_swap.cc: New.
5195 2018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
5197         PR libstdc++/80165
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>
5225         PR libstdc++/85729
5226         * include/bits/c++config.h (__replacement_assert): Add linkage
5227         specification.
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()):
5236         Rename in...
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
5247         iterator type.
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):
5258         New.
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
5277         backtrace.
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,
5282         use latter.
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&)):
5287         Likewise.
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&)):
5295         Likewise.
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&)):
5303         Likewise.
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&)):
5310         Likewise.
5311         * include/debug/unordered_map
5312         (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
5313         Likewise.
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&)):
5318         Likewise.
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
5331         when available.
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.
5338         PR libstdc++/85672
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.
5350         PR libstdc++/85671
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>
5375         PR libstdc++/82644
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.
5384         PR libstdc++/84769
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:
5397         New.
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)):
5415         Likewise.
5416         * testsuite/21_strings/basic_string/dr2268.cc: New test.
5418         PR libstdc++/84535
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
5429         of result_of.
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>
5452         PR libstdc++/68197
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.
5459         PR libstdc++/57997
5460         PR libstdc++/83860
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
5468         members.
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
5473         __detail.
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
5483         call.
5485         PR libstdc++/69608
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>
5493         PR libstdc++/84654
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>
5515         PR libstdc++/85442
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>
5522         PR libstdc++/84442
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>
5528         PR jit/85384
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:
5536         Likewise.
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:
5545         Likewise.
5546         * testsuite/experimental/filesystem/operations/create_directory.cc:
5547         Likewise.
5548         * testsuite/experimental/filesystem/operations/create_symlink.cc:
5549         Likewise.
5550         * testsuite/experimental/filesystem/operations/current_path.cc:
5551         Likewise.
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:
5557         Likewise.
5558         * testsuite/experimental/filesystem/operations/permissions.cc:
5559         Likewise.
5560         * testsuite/experimental/filesystem/operations/read_symlink.cc:
5561         Likewise.
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:
5566         Likewise.
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:
5577         Likewise.
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:
5581         Likewise.
5582         * testsuite/experimental/filesystem/path/decompose/extension.cc:
5583         Likewise.
5584         * testsuite/experimental/filesystem/path/decompose/filename.cc:
5585         Likewise.
5586         * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
5587         Likewise.
5588         * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
5589         Likewise.
5590         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
5591         Likewise.
5592         * testsuite/experimental/filesystem/path/decompose/root_name.cc:
5593         Likewise.
5594         * testsuite/experimental/filesystem/path/decompose/root_path.cc:
5595         Likewise.
5596         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
5597         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
5598         Likewise.
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:
5602         Likewise.
5603         * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
5604         Likewise.
5605         * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
5606         Likewise.
5607         * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
5608         Likewise.
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:
5612         Likewise.
5613         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
5614         * testsuite/experimental/filesystem/path/query/has_extension.cc:
5615         Likewise.
5616         * testsuite/experimental/filesystem/path/query/has_filename.cc:
5617         Likewise.
5618         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
5619         Likewise.
5620         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
5621         Likewise.
5622         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
5623         Likewise.
5624         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
5625         Likewise.
5626         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
5627         Likewise.
5628         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
5629         * testsuite/experimental/filesystem/path/query/is_relative.cc:
5630         Likewise.
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
5653         releases.
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.
5672         PR libstdc++/85222
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):
5677         New types.
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>
5710         PR libstdc++/85183
5711         * include/std/variant (_Move_assign_base::operator=): Fix incorrect
5712         value categories.
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>
5723         PR libstdc++/85040
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>
5732         PR libstdc++/77691
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
5744         test in Debug Mode.
5746 2018-03-20  François Dumont  <fdumont@gcc.gnu.org>
5748         PR libstdc++/84998
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
5752         declaration.
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
5775         docbook.org.
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>
5784         PR libstdc++/78420
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>
5796         PR libstdc++/84773
5797         PR libstdc++/83662
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
5808         registration.
5810 2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
5812         PR libstdc++/84769
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
5828         registrations.
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>
5834         PR libstdc++/84601
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>
5843         PR libstdc++/84671
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
5858         add new tests.
5860 2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
5862         PR libstdc++/84532
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>
5875         PR target/84148
5876         * configure: Regenerate.
5878 2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
5880         PR libstdc++/81797
5881         * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
5882         * configure: Regenerate.
5883         * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
5884         defined.
5885         * include/Makefile.in: Regenerate.
5887 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
5889         PR libstdc++/83833
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.
5896         PR libstdc++/83658
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>
5904         PR libstdc++/81076
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:
5914         Likewise.
5915         * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
5916         * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
5917         Likewise.
5918         * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
5919         Likewise.
5920         * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
5921         * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
5922         Likewise.
5923         * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
5924         Likewise.
5925         * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
5926         Likewise.
5927         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
5928         Likewise.
5929         * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
5930         Likewise.
5931         * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
5932         Likewise.
5933         * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
5934         Likewise.
5935         * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
5936         Likewise.
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:
5946         Likewise.
5947         * testsuite/special_functions/19_sph_bessel/check_nan.cc:
5948         Likewise.
5949         * testsuite/special_functions/20_sph_legendre/check_nan.cc:
5950         Likewise.
5951         * testsuite/special_functions/21_sph_neumann/check_nan.cc:
5952         Likewise.
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.
5959         * configure: Ditto.
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>
5968         PR libstdc++/83834
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>
5974         PR libstdc++/83833
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
5978         test.
5980         PR libstdc++/83830
5981         * include/std/type_traits (has_unique_object_representations_v): Add
5982         variable template.
5983         * testsuite/20_util/has_unique_object_representations/value.cc: Check
5984         variable template.
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&)):
5994         New.
5995         (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
5996         Likewise.
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>
6008         PR libstdc++/80276
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
6012         instead.
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>
6030         PR libstdc++/81092
6031         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
6033 2018-01-13  Tim Shen  <timshen@google.com>
6035         PR libstdc++/83601
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>
6042         PR libstdc++/64054
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>
6073         PR libstdc++/80276
6074         * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
6075         (UniquePointerPrinter): Print correct template argument, not type of
6076         the pointer.
6077         (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
6078         a type.
6079         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
6080         array type.
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>
6086         PR libstdc++/83709
6087         * include/bits/hashtable_policy.h
6088         (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
6089         __first != __last.
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<>)):
6095         Adapt.
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
6112         children.
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>
6120         PR libstdc++/83626
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.
6126         PR libstdc++/83279
6127         * src/filesystem/std-ops.cc  (do_copy_file): Use non-null offset with
6128         sendfile.
6130         PR libstdc++/83626
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
6139         overload.
6140         * testsuite/experimental/filesystem/operations/remove_all.cc:
6141         Likewise.
6143 2018-01-04  Jonathan Wakely  <jwakely@redhat.com>
6145         PR libstdc++/83626
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
6149         non-existent paths.
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.
6162         PR libstdc++/83607
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
6166         __is_std_equal_to.
6167         * include/experimental/functional (__is_std_equal_to): Remove.
6168         (__boyer_moore_base_t): Use __is_byte_like instead of
6169         __is_std_equal_to.
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.