Add missing return
[official-gcc.git] / libstdc++-v3 / ChangeLog
blobf02834996565a33e7b2a705b9ec5324743fc8438
1 2018-10-16  Jonathan Wakely  <jwakely@redhat.com>
3         * include/experimental/socket (basic_socket::at_mark): Add missing
4         return.
6         * acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Replace with ...
7         (GLIBCXX_CHECK_DEV_RANDOM): New macro with more descriptive name.
8         Define _GLIBCXX_USE_DEV_RANDOM as well as _GLIBCXX_USE_RANDOM_TR1.
9         * config.h.in: Regenerate.
10         * configure: Regenerate.
11         * configure.ac: Use GLIBCXX_CHECK_DEV_RANDOM instead of
12         GLIBCXX_CHECK_RANDOM_TR1.
13         crossconfig.m4: Likewise.
14         * include/bits/random.h (random_device): Use _GLIBCXX_USE_DEV_RANDOM
15         instead of _GLIBCXX_USE_RANDOM_TR1.
16         * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
18 2018-10-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
20         * testsuite/lib/dg-options.exp (add_options_for_net_ts): New proc.
21         * testsuite/experimental/net/internet/address/v4/comparisons.cc:
22         Add dg-add-options net_ts.
23         * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
24         * testsuite/experimental/net/internet/address/v4/creation.cc: Likewise.
25         * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
26         * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
27         * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise.
28         * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise.
30 2018-10-16  Jonathan Wakely  <jwakely@redhat.com>
32         * testsuite/20_util/duration/literals/range_neg.cc: Adjust pruned
33         diagnostic to account for quotes around 'constexpr'.
34         * testsuite/23_containers/deque/capacity/max_size.cc: Define static
35         variable.
36         * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
38         PR libstdc++/87618
39         * config/abi/pre/gnu.ver: Fix typos in patterns for basic_stringbuf.
40         * testsuite/27_io/basic_stringbuf/cons/char/default.cc: Disable
41         optimisation to check constructor definition can be linked to.
42         * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: Likewise.
44 2018-10-15  Jonathan Wakely  <jwakely@redhat.com>
46         * testsuite/22_locale/numpunct/members/char/3.cc: Adjust test to
47         account for change to glibc it_IT localedata (glibc bz#10797).
49         PR libstdc++/87587
50         * src/c++11/cxx11-shim_facets.cc: Suppress -Wabi warnings.
52 2018-10-15  François Dumont  <fdumont@gcc.gnu.org>
54         * include/debug/vector (vector<>::cbegin()): Use C++11 direct
55         initialization.
56         (vector<>::cend()): Likewise.
57         (vector<>::emplace(const_iterator, _Args&&...)): Likewise and use
58         consistent iterator comparison.
59         (vector<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
60         (vector<>::insert(const_iterator, _InputIterator, _InputIterator)):
61         Likewise.
62         (vector<>::erase(const_iterator)): Likewise.
63         (vector<>::erase(const_iterator, const_iterator)): Likewise.
65 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
67         Initial commit of Networking TS implementation.
68         * include/Makefile.am: Add new headers.
69         * include/Makefile.in: Regenerate.
70         * include/experimental/bits/net.h: New header for common
71         implementation details of Networking TS.
72         * include/experimental/buffer: New header.
73         * include/experimental/executor: New header.
74         * include/experimental/internet: New header.
75         * include/experimental/io_context: New header.
76         * include/experimental/net: New header.
77         * include/experimental/netfwd: New header.
78         * include/experimental/socket: New header.
79         * include/experimental/timer: New header.
80         * testsuite/experimental/net/buffer/arithmetic.cc: New test.
81         * testsuite/experimental/net/buffer/const.cc: New test.
82         * testsuite/experimental/net/buffer/creation.cc: New test.
83         * testsuite/experimental/net/buffer/mutable.cc: New test.
84         * testsuite/experimental/net/buffer/size.cc: New test.
85         * testsuite/experimental/net/buffer/traits.cc: New test.
86         * testsuite/experimental/net/execution_context/use_service.cc: New
87         test.
88         * testsuite/experimental/net/headers.cc: New test.
89         * testsuite/experimental/net/internet/address/v4/comparisons.cc: New
90         test.
91         * testsuite/experimental/net/internet/address/v4/cons.cc: New test.
92         * testsuite/experimental/net/internet/address/v4/creation.cc: New
93         test.
94         * testsuite/experimental/net/internet/address/v4/members.cc: New
95         test.
96         * testsuite/experimental/net/internet/resolver/base.cc: New test.
97         * testsuite/experimental/net/internet/resolver/ops/lookup.cc: New
98         test.
99         * testsuite/experimental/net/internet/resolver/ops/reverse.cc: New
100         test.
101         * testsuite/experimental/net/timer/waitable/cons.cc: New test.
102         * testsuite/experimental/net/timer/waitable/dest.cc: New test.
103         * testsuite/experimental/net/timer/waitable/ops.cc: New test.
105         PR libstdc++/77691
106         * include/experimental/memory_resource (__resource_adaptor_imp): Do
107         not allocate sizes smaller than alignment when relying on guaranteed
108         alignment.
109         * testsuite/experimental/memory_resource/new_delete_resource.cc:
110         Adjust expected number of bytes allocated for alignof(max_align_t).
112 2018-10-11  François Dumont  <fdumont@gcc.gnu.org>
114         * include/debug/forward_list
115         (forward_list<>::before_begin()): Use C++11 direct initialization.
116         (forward_list<>::begin()): Likewise.
117         (forward_list<>::end()): Likewise.
118         (forward_list<>::cbefore_begin()): Likewise.
119         (forward_list<>::cbegin()): Likewise.
120         (forward_list<>::cend()): Likewise.
121         (forward_list<>::emplace_after<>(const_iterator, _Args&&...)): Likewise.
122         (forward_list<>::insert_after(const_iterator, const _Tp&)): Likewise.
123         (forward_list<>::insert_after(const_iterator, _Tp&&)): Likewise.
124         (forward_list<>::insert_after(const_iterator, size_type, const _Tp&)):
125         Likewise.
126         (forward_list<>::insert_after(const_iterator, initializer_list<>)):
127         Likewise.
128         (forward_list<>::erase_after(const_iterator)): Likewise.
129         (forward_list<>::erase_after(const_iterator, const_iterator)): Likewise
130         and ensure consistent iterator comparison.
132         * include/bits/forward_list.h
133         (_Fwd_list_iterator<>::operator==): Replace member function with inline
134         friend.
135         (_Fwd_list_iterator<>::operator!=): Likewise.
136         (_Fwd_list_const_iterator<>::operator==): Likewise.
137         (_Fwd_list_const_iterator<>::operator!=): Likewise.
138         (operator==(const _Fwd_list_iterator<>&,
139         const _Fwd_list_const_iterator<>&)): Remove.
140         (operator!=(const _Fwd_list_iterator<>&,
141         const _Fwd_list_const_iterator<>&)): Remove.
142         (forward_list<>::_Node): Take typedef from base type.
143         (forward_list<>::iterator): Likewise.
144         (forward_list<>::const_iterator): Likewise.
146 2018-10-11  Jonathan Wakely  <jwakely@redhat.com>
148         PR libstdc++/80538
149         * src/c++11/thread.cc (this_thread::__sleep_for)
150         [_GLIBCXX_HAVE_SLEEP]: Only call sleep for non-zero values.
151         Loop while sleep call is interrupted and until steady_clock
152         shows requested duration has elapsed.
153         (!_GLIBCXX_HAVE_USLEEP]: Use the _GLIBCXX_HAVE_SLEEP code path, but
154         avoiding the usleep call.
155         * testsuite/30_threads/this_thread/60421.cc: Test repeated
156         signal interruptions.
158         * include/bits/allocator.h
159         (operator==(const allocator<_Tp>&, const allocator<_Tp>))
160         (operator!=(const allocator<_Tp>&, const allocator<_Tp>)): Replace
161         with inline friends.
162         * include/ext/debug_allocator.h (operator==, operator!=): Replace
163         with inline friend functions that compare to rebound allocators.
164         * include/ext/malloc_allocator.h (operator==, operator!=): Likewise.
165         * include/ext/new_allocator.h (operator==, operator!=): Likewise.
166         * testsuite/ext/debug_allocator/eq.cc: New test.
167         * testsuite/ext/ext_pointer/alloc_eq.cc: New test.
168         * testsuite/ext/malloc_allocator/eq.cc: New test.
169         * testsuite/ext/new_allocator/eq.cc: New test.
171 2018-10-10  Jonathan Wakely  <jwakely@redhat.com>
173         PR libstdc++/87544
174         * include/bits/stl_vector.h (vector::_S_max_size): Limit size to
175         PTRDIFF_MAX / sizeof(value_type).
176         * include/ext/malloc_allocator.h (malloc_allocator::max_size):
177         Likewise.
178         * include/ext/new_allocator.h (new_allocator::max_size): Likewise.
179         * testsuite/23_containers/vector/allocator/minimal.cc: Adjust
180         expected value for max_size().
181         * testsuite/23_containers/vector/capacity/87544.cc: New test.
183 2018-10-09  François Dumont  <fdumont@gcc.gnu.org>
185         * include/bits/stl_list.h
186         (_List_operator<>::operator==): Replace member function with inline
187         friend.
188         (_List_operator<>::operator!=): Likewise.
189         (_List_const_operator<>::operator==): Likewise.
190         (_List_const_operator<>::operator!=): Likewise.
191         (operator==(const _List_iterator<>&, const _List_const_iterator<>&)):
192         Remove.
193         (operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
194         Remove.
196 2018-10-09  Jonathan Wakely  <jwakely@redhat.com>
198         * include/bits/stringfwd.h (string, wstring, u16string, u32string):
199         Define typedefs outside of __cxx11 inline namespace.
200         * python/libstdcxx/v6/printers.py (register_type_printers): Also
201         register printers for typedefs in new location.
203 2018-10-08  Jonathan Wakely  <jwakely@redhat.com>
205         PR libstdc++/87538
206         * testsuite/experimental/functional/87538.cc: New test.
208         PR libstdc++/87538
209         * include/std/functional (_Not_fn::operator()): Check value of
210         __is_nothrow_invocable as well.
211         * testsuite/20_util/function_objects/not_fn/87538.cc: New test.
213 2018-10-08  François Dumont  <fdumont@gcc.gnu.org>
215         * include/debug/list (list<>::cbegin()): Use C++11 direct
216         initialization.
217         (list<>::cend()): Likewise.
218         (list<>::emplace<>(const_iterator, _Args&&...)): Likewise.
219         (list<>::insert(const_iterator, initializer_list<>)): Likewise.
220         (list<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
221         (list<>::erase(const_iterator, const_iterator)): Ensure consistent
222         iterator comparisons.
223         (list<>::splice(const_iterator, list&&, const_iterator,
224         const_iterator)): Likewise.
226 2018-10-05  François Dumont  <fdumont@gcc.gnu.org>
228         * include/bits/stl_tree.h
229         (_Rb_tree_iterator<>::operator==): Make inline friend.
230         (_Rb_tree_iterator<>::operator!=): Likewise.
231         (_Rb_tree_const_iterator<>::operator==): Likewise.
232         (_Rb_tree_const_iterator<>::operator!=): Likewise.
233         (operator==(const _Rb_tree_iterator<>&,
234         const _Rb_tree_const_iterator&)): Remove.
235         (operator!=(const _Rb_tree_iterator<>&,
236         const _Rb_tree_const_iterator&)): Remove.
237         (operator==(const _Rb_tree<>&, const _Rb_tree<>&)): Make inline friend.
238         (operator<(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
239         (operator!=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise and
240         deprecate.
241         (operator>(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
242         (operator<=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
243         (operator>=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
244         * include/debug/map.h (map<>::erase(const_iterator, const_iterator)):
245         Compare __victim with _Base::cend().
246         * include/debug/multimap.h
247         (multimap<>::erase(const_iterator, const_iterator)): Likewise.
248         * include/debug/set.h (set<>::erase(const_iterator, const_iterator)):
249         Compare __victim with _Base::cend().
250         * include/debug/multiset.h
251         (multiset<>::erase(const_iterator, const_iterator)): Likewise.
253 2018-10-03  Jonathan Wakely  <jwakely@redhat.com>
255         PR libstdc++/59439
256         * src/c++98/locale.cc (locale::locale(const locale&)): Bypass
257         reference count updates for the classic locale.
258         (locale::~locale()): Likewise.
259         (locale::operator=(const locale&)): Likewise.
260         * src/c++98/locale_init.cc (locale::locale()): Likewise.
261         (locale::global(const locale&)): Likewise.
263 2018-10-03  François Dumont  <fdumont@gcc.gnu.org>
265         * include/debug/map.h
266         (map<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
267         (map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
268         (map<>::insert(value_type&&)): Likewise.
269         (map<>::insert<>(_Pair&&)): Likewise.
270         (map<>::insert<>(const_iterator, _Pair&&)): Likewise.
271         (map<>::try_emplace): Likewise.
272         (map<>::insert_or_assign): Likewise.
273         (map<>::insert(node_type&&)): Likewise.
274         (map<>::insert(const_iterator, node_type&&)): Likewise.
275         (map<>::erase(const_iterator)): Likewise.
276         (map<>::erase(const_iterator, const_iterator)): Likewise.
277         * include/debug/multimap.h
278         (multimap<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
279         (multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
280         (multimap<>::insert<>(_Pair&&)): Likewise.
281         (multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
282         (multimap<>::insert(node_type&&)): Likewise.
283         (multimap<>::insert(const_iterator, node_type&&)): Likewise.
284         (multimap<>::erase(const_iterator)): Likewise.
285         (multimap<>::erase(const_iterator, const_iterator)): Likewise.
286         * include/debug/set.h
287         (set<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
288         (set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
289         (set<>::insert(value_type&&)): Likewise.
290         (set<>::insert<>(const_iterator, value_type&&)): Likewise.
291         (set<>::insert(const_iterator, node_type&&)): Likewise.
292         (set<>::erase(const_iterator)): Likewise.
293         (set<>::erase(const_iterator, const_iterator)): Likewise.
294         * include/debug/multiset.h
295         (multiset<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
296         (multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
297         (multiset<>::insert<>(value_type&&)): Likewise.
298         (multiset<>::insert<>(const_iterator, value_type&&)): Likewise.
299         (multiset<>::insert(node_type&&)): Likewise.
300         (multiset<>::insert(const_iterator, node_type&&)): Likewise.
301         (multiset<>::erase(const_iterator)): Likewise.
302         (multiset<>::erase(const_iterator, const_iterator)): Likewise.
304 2018-10-02  Marc Glisse  <marc.glisse@inria.fr>
306         PR libstdc++/87258
307         * include/bits/stl_bvector.h (vector::begin(), vector::cbegin()):
308         Rebuild _M_start with an explicit 0 offset.
310 2018-10-02  Jonathan Wakely  <jwakely@redhat.com>
312         * include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
313         directly instead of get, as caller ensures correct index is used.
314         (holds_alternative, get, get_if): Remove redundant inline specifiers.
315         (_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.
317 2018-10-02  Joseph Myers  <joseph@codesourcery.com>
319         * testsuite/lib/libstdc++.exp (libstdc++_init): Use
320         -fno-show-column in default cxxflags.
322 2018-10-01  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
324         * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.
326 2018-10-01  Gerald Pfeifer  <gerald@pfeifer.com>
328         * doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
329         Custom Memory Allocation".
331 2018-10-01  Jonathan Wakely  <jwakely@redhat.com>
333         * doc/html/*: Regenerate.
335 2018-09-30  Gerald Pfeifer  <gerald@pfeifer.com>
337         * doc/xml/manual/messages.xml: Switch link to www.oracle.com
338         to https.
340 2018-09-30  Gerald Pfeifer  <gerald@pfeifer.com>
342         * doc/xml/manual/policy_data_structures_biblio.xml: Update
343         link to Microsoft Component Model Object Technologies.
345 2018-09-29  Gerald Pfeifer  <gerald@pfeifer.com>
347         * doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
348         site now uses https. Also omit the unnecessary trailing slash.
349         * doc/xml/gnu/gpl-3.0.xml: Ditto.
351 2018-09-28  François Dumont  <fdumont@gcc.gnu.org>
353         * include/debug/functions.h
354         (__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
355         const _InputIter&, __true_type)): Use empty() rather than begin() ==
356         end().
358 2018-09-25  Mike Crowe  <mac@mcrowe.com>
360         * include/std/condition_variable (condition_variable::wait_for): Use
361         steady clock in overload that uses a predicate.
363 2018-09-25  Jonathan Wakely  <jwakely@redhat.com>
365         PR libstdc++/87431
366         * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
367         Avoid runtime test when all alternatives are scalars and so cannot
368         throw during initialization.
370 2018-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
372         * doc/xml/manual/codecvt.xml: Move link to "UTF-8 and Unicode FAQ"
373         to https.
375 2018-09-24  Gerald Pfeifer  <gerald@pfeifer.com>
377         * doc/xml/manual/policy_data_structures_biblio.xml: Update link
378         to "Priority Queues and the STL".
380 2018-09-23  Gerald Pfeifer  <gerald@pfeifer.com>
382         * doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
383         https.
385 2018-09-21  François Dumont  <fdumont@gcc.gnu.org>
387         PR libstdc++/87135
388         * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
389         Use __builtin_floor to compute _M_next_resize.
390         * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt.
391         * testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc:
392         Adapt.
394 2018-09-21  Jonathan Wakely  <jwakely@redhat.com>
396         * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Remove.
397         * testsuite/26_numerics/headers/cmath/hypot.cc: Restore test for
398         long double unconditionally, but use lower tolerance when
399         sizeof(long double) == sizeof(double).
401 2018-09-20  Christophe Lyon  <christophe.lyon@linaro.org>
403         * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
404         on arm*.
406 2018-09-19  Jonathan Wakely  <jwakely@redhat.com>
408         * include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
409         Remove __glibcxx_assert statements and use map::find instead of
410         map::operator[].
412 2018-09-18  François Dumont  <fdumont@gcc.gnu.org>
414         PR libstdc++/87135
415         * src/c++11/hashtable_c++0x.cc:
416         (_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
417         requested size, but not necessarily greater.
418         (_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
419         strictly greater than next resize threshold.
420         * testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
421         to validate that there is no rehash as long as number of insertion is
422         lower or equal to the reserved number of elements.
424 2018-09-18  Jonathan Wakely  <jwakely@redhat.com>
426         * include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
427         checking invocable condition.
428         (unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
429         here, where types must be complete. Pass pointer to deleter as an
430         rvalue.
431         * testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
433 2018-09-13  Jonathan Wakely  <jwakely@redhat.com>
435         * include/std/variant (variant) [__clang__]: Limit workaround to
436         Clang 7 and older.
438 2018-09-11  Jonathan Wakely  <jwakely@redhat.com>
440         PR libstdc++/87278
441         * include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
442         remove_const.
443         * testsuite/20_util/shared_ptr/creation/87278.cc: New test.
445         Implement LWG 2905 changes to constrain unique_ptr constructors
446         * include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
447         check deleter type.
448         (unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
449         constructible constraint.
450         (unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
451         deleters of reference type and add move constructible constraint.
452         (unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
453         Disable for deleters of non-reference type. Define as deleted.
454         (unique_ptr<T[], D>): Likewise.
455         * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
456         directives with unstable line numbers with dg-prune-output.
457         * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
458         * testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
459         * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
460         Make deleter types invocable.
462 2018-09-05  Jonathan Wakely  <jwakely@redhat.com>
464         * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
466 2018-09-03  Jonathan Wakely  <jwakely@redhat.com>
468         PR libstdc++/78179
469         * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test
470         that runs the long double part of hypot.cc.
471         * testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double
472         tests unless TEST_HYPOT_LONG_DOUBLE is defined.
474         * include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
475         Return raw pointer not allocator's pointer type.
476         (vector::_Temporary_value::_M_val): Use _M_ptr.
478         PR libstdc++/87194
479         * include/bits/stl_map.h
480         (map::map(initializer_list<value_type>, const Compare&, const Alloc&))
481         (map::map(initializer_list<value_type>, const Alloc&))
482         (map::map(InputIterator, InputIterator, const Alloc&))
483         (map::map(InputIterator, InputIterator))
484         (map::map(InputIterator, InputIterator, const Compare&, const Alloc&))
485         (map::insert(InputIterator, InputIterator)):
486         Call _M_insert_range_unique instead of _M_insert_unique.
487         * include/bits/stl_multimap.h
488         (multimap::multimap(initializer_list<value_type>, const C&, const A&))
489         (multimap::multimap(initializer_list<value_type>, const A&))
490         (multimap::multimap(InputIterator, InputIterator, const A&))
491         (multimap::multimap(InputIterator, InputIterator))
492         (multimap::multimap(InputIterator, InputIterator, const C&, const A&))
493         (multimap::insert(InputIterator, InputIterator)): Call
494         _M_insert_range_equal instead of _M_insert_equal.
495         * include/bits/stl_multiset.h
496         (multiset::multiset(InputIterator, InputIterator))
497         (multiset::multiset(InputIterator, InputIterator, const C&, const A&))
498         (multiset::multiset(initializer_list<value_type>, const C&, const A&))
499         (multiset::multiset(initializer_list<value_type>, const A&))
500         (multiset::multiset(InputIterator, InputIterator, const A&))
501         (multiset::insert(InputIterator, InputIterator)): Call
502         _M_insert_range_equal instead of _M_insert_equal.
503         * include/bits/stl_set.h
504         (set::set(InputIterator, InputIterator))
505         (set::set(InputIterator, InputIterator, const Compare&, const Alloc&))
506         (set::set(initializer_list<value_type>, const Compare&, const Alloc&))
507         (set::set(initializer_list<value_type>, const Alloc&))
508         (set::set(InputIterator, InputIterator, const Alloc&))
509         (set::insert(InputIterator, InputIterator)):
510         Call _M_insert_range_unique instead of _M_insert_unique.
511         * include/bits/stl_tree.h
512         [__cplusplus >= 201103L] (_Rb_tree::__same_value_type): New alias
513         template for SFINAE constraints.
514         [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_unique): Pair of
515         constrained overloads that either insert or emplace, depending on
516         iterator's value_type.
517         [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_equal): Likewise.
518         [__cplusplus < 201103L] (_Rb_tree::_M_insert_range_unique)
519         (_Rb_tree::_M_insert_range_equal): New functions replacing range
520         versions of _M_insert_unique and _M_insert_equal.
521         (_Rb_tree::_M_insert_unique(_InputIterator, _InputIterator))
522         (_Rb_tree::_M_insert_equal(_InputIterator, _InputIterator)): Remove.
523         * testsuite/23_containers/map/modifiers/insert/87194.cc: New test.
524         * testsuite/23_containers/multimap/modifiers/insert/87194.cc: New test.
525         * testsuite/23_containers/multiset/modifiers/insert/87194.cc: New test.
526         * testsuite/23_containers/set/modifiers/insert/87194.cc: New test.
528         PR libstdc++/78595
529         * include/bits/stl_map.h (map::insert(_Pair&&))
530         (map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
531         * include/bits/stl_multimap.h (multimap::insert(_Pair&&))
532         (multimap::insert(const_iterator, _Pair&&)): Likewise.
533         * include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
534         (unordered_map::insert(const_iterator, _Pair&&))
535         (unordered_multimap::insert(_Pair&&))
536         (unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
537         * testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
538         * testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
539         * testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
540         * testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
541         test.
543 2018-09-02  François Dumont  <fdumont@gcc.gnu.org>
545         * include/debug/safe_iterator.h
546         (_Safe_iterator<_It, _Seq, _Cat>::_Self): New.
547         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>::_Self):
548         New.
549         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
550         ::_OtherSelf): New.
551         (_GLIBCXX_DEBUG_VERIFY_OPERANDS, _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS)
552         (_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS)
553         (_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS): Define macros.
554         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
555         ::operator+(difference_type)): Use latters, inline as friend.
556         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
557         ::operator-(difference_type)): Likewise.
558         (operator==(const _Safe_iterator<>&, const _Safe_iterator<>&)):
559         Likewise.
560         (operator!=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
561         Likewise.
562         (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
563         (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
564         Likewise.
565         (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
566         (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
567         Likewise.
568         (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
569         (operator+(difference_type, const _Safe_iterator<>&)): Likewise.
570         (operator-(const _Safe_iterator<>&, difference_type)): Likewise.
571         * include/debug/safe_iterator.tcc
572         (_Safe_iterator<>::_M_can_advance(difference_type)): Take parameter by
573         copy.
574         * include/debug/safe_local_iterator.h
575         (_Safe_local_iterator<_It, _Seq>::_Self): New.
576         (_Safe_local_iterator<_It, _Seq>::_OtherSelf): New.
577         (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Define macro.
578         (operator==(const _Safe_local_iterator<>&,
579         const _Safe_local_iterator<>&)): Use latter, inline as friend.
580         (operator!=(const _Safe_local_iterator<>&,
581         const _Safe_local_iterator<>&)): Likewise.
582         * testsuite/util/testsuite_containers.h: Include utility.
583         (struct forward_members_unordered<_Tp, bool>): Remove 2nd template
584         parameter.
585         (forward_members_unordered<>::forward_members_unordered(value_type&)):
586         Add using namespace std::rel_ops.
587         Add iterator_concept_checks on local_iterator and const_local_iterator.
588         Add asserts on comparison between const_local_iterator and
589         local_iterator.
590         (struct forward_members_unordered<_Tp, false>): Remove partial
591         specialization.
592         * testsuite/23_containers/forward_list/types/1.cc: New.
593         * testsuite/23_containers/list/types/1.cc: New.
595 2018-09-01  Gerald Pfeifer  <gerald@pfeifer.com>
597         * doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
598         references.
600 2018-08-31  Sandra Loosemore  <sandra@codesourcery.com>
602         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
603         Add dg-require-fileio.
604         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
605         Likewise.
606         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
607         Likewise.
608         * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
609         Likewise.
610         * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
611         Likewise.
612         * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
613         Likewise.
614         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
615         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
616         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
617         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
618         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
619         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc:
620         Likewise.
621         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
622         Likewise.
623         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
624         Likewise.
625         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
626         Likewise.
627         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
628         Likewise.
629         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
630         Likewise.
631         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
632         Likewise.
633         * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
634         * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
635         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: Likewise.
636         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
637         * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
638         Likewise.
639         * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
640         Likewise.
641         * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
642         * testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
643         * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
644         * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
645         * testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
646         * testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
647         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: Likewise.
648         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: Likewise.
649         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
650         Likewise.
651         * testsuite/27_io/objects/wchar_t/10.cc: Likewise.
652         * testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
653         * testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
654         * testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
655         * testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
656         * testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
657         * testsuite/experimental/string_view/inserters/wchar_t/2.cc:
658         Likewise.
659         * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
661 2018-08-30  Sandra Loosemore  <sandra@codesourcery.com>
663         * testsuite/experimental/propagate_const/observers/1.cc: Make
664         dependence on -fdelete-null-pointer-checks explicit.
666 2018-08-30  Jonathan Wakely  <jwakely@redhat.com>
668         * include/bits/hashtable_policy.h (__clp2): Fix calculation for LLP64
669         targets where sizeof(size_t) > sizeof(long). Avoid undefined shifts
670         of the number of bits in the type.
671         * include/std/bit (__ceil2): Avoid undefined shifts.
672         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Test values with
673         the most signifiant bit set.
675         * config/abi/pre/gnu.ver: Add missing exports for mingw.
677         * include/ext/pointer.h (_Pointer_adapter): Define operators for
678         pointer arithmetic using long long offsets.
679         * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
680         long long values.
682 2018-08-29  Jonathan Wakely  <jwakely@redhat.com>
684         PR libstdc++/31413
685         * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT
686         string for alternative format.
688 2018-08-28  Jonathan Wakely  <jwakely@redhat.com>
690         PR libstdc++/87116
691         * src/filesystem/std-path.cc (path::lexically_normal): When handling
692         a dot-dot filename, preserve an empty final component in the iteration
693         sequence.
694         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
695         root-directory.
696         * testsuite/27_io/filesystem/path/generation/normal.cc: Add new tests
697         for more than two adjacent dot-dot filenames.
698         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Replace slashes with
699         preferred-separator in expected normalized strings.
701 2018-08-25  Iain Sandoe  <iain@sandoe.co.uk>
703         PR libstdc++/70694
704         * configure.host (OPT_LDFLAGS): Don't append
705         -fvisibility-inlines-hidden for newer Darwin.
707 2018-08-24  Marc Glisse  <marc.glisse@inria.fr>
709         PR libstdc++/86822
710         * libsupc++/new (operator new(size_t, nothrow_t), operator
711         new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
712         operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
714 2018-08-24  Jonathan Wakely  <jwakely@redhat.com>
716         * include/debug/deque (std::__debug::deque): Declare.
717         * include/debug/forward_list (std::__debug::forward_list): Declare.
718         * include/debug/list (std::__debug::list): Declare.
719         * include/debug/map (std::__debug::map): Declare.
720         * include/debug/set (std::__debug::set): Declare.
721         * include/debug/unordered_map (std::__debug::unordered_map): Declare.
722         * include/debug/unordered_set (std::__debug::unordered_set): Declare.
723         * include/debug/vector (std::__debug::vector): Declare.
724         * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
725         * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
726         test.
727         * testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
728         * testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
729         * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
730         * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
731         * testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
732         * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
733         test.
734         * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
735         New test.
736         * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
737         New test.
738         * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
739         test.
740         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
741         Adjust dg-error lineno.
742         * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
743         test.
745 2018-08-23  Jonathan Wakely  <jwakely@redhat.com>
747         * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
748         Only define when RTTI is enabled.
750         * include/debug/vector (__niter_base): Define for C++98.
752         * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
753         Fix C++98 test to not use C++11 features.
754         * testsuite/25_algorithms/fill_n/2.cc: Likewise.
756         * scripts/check_compile: Fix comments.
758         * include/debug/string (insert(__const_iterator, _InIter, _InIter)):
759         [!_GLIBCXX_USE_CXX11_ABI]: Replace use of C++11-only cbegin() with
760         begin(), for C++98 compatibility.
762         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
763         (basic_string::__const_iterator): Change access to protected.
764         [!_GLIBCXX_USE_CXX11_ABI] (basic_string::__const_iterator): Define
765         as typedef for iterator.
766         * include/debug/string (__const_iterator): Use typedef from base.
767         (insert(const_iterator, _CharT))
768         (replace(const_iterator, const_iterator, const basic_string&))
769         (replace(const_iterator, const_iterator, const _CharT*, size_type))
770         (replace(const_iterator, const_iterator, const CharT*))
771         (replace(const_iterator, const_iterator, size_type, _CharT))
772         (replace(const_iterator, const_iterator, _InputIter, _InputIter))
773         (replace(const_iterator, const_iterator, initializer_list<_CharT>)):
774         Change const_iterator parameters to __const_iterator.
775         (insert(iterator, size_type, _CharT)): Add C++98 overload.
776         (insert(const_iterator, _InputIterator, _InputIterator)): Change
777         const_iterator parameter to __const_iterator.
778         [!_GLIBCXX_USE_CXX11_ABI]: Add workaround for incorrect return type
779         of base's member function.
780         (insert(const_iterator, size_type, _CharT)) [!_GLIBCXX_USE_CXX11_ABI]:
781         Likewise.
782         (insert(const_iterator, initializer_list<_CharT>))
783         [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
784         * testsuite/21_strings/basic_string/init-list.cc: Remove effective
785         target directive.
787         * testsuite/20_util/reference_wrapper/lwg2993.cc: Fix C++11 test to
788         not use C++14 feature.
789         * testsuite/23_containers/list/68222_neg.cc: Likewise.
791         * testsuite/21_strings/basic_string/init-list.cc:
792         Require cxx11-abi.
793         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
794         Likewise.
795         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
796         Likewise.
798         * testsuite/23_containers/deque/capacity/max_size.cc: Fix test for
799         C++98 mode.
800         * testsuite/23_containers/deque/modifiers/assign/1.cc: Likewise.
801         * testsuite/23_containers/list/modifiers/assign/1.cc: Likewise.
802         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: Likewise.
803         * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
804         * testsuite/23_containers/vector/modifiers/assign/1.cc: Likewise.
806 2018-08-22  Jonathan Wakely  <jwakely@redhat.com>
808         PR libstdc++/87061
809         * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
810         (experimental::pmr::match_results, experimental::pmr::cmatch)
811         (experimental::pmr::smatch, experimental::pmr::wcmatch)
812         (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
813         because COW strings don't support C++11 allocator model.
814         * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
815         (experimental::pmr::basic_string, experimental::pmr::string)
816         (experimental::pmr::u16string, experimental::pmr::u32string)
817         (experimental::pmr::wstring): Likewise.
818         * include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results)
819         (pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise.
820         * include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string)
821         (pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise.
822         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require
823         cxx11-abi.
824         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
826         PR libstdc++/78448
827         * include/bits/deque.tcc (deque::_M_range_initialize): Use
828         _S_check_init_len to check size.
829         (deque::_M_push_back_aux, deque::_M_push_front_aux): Throw length
830         error if size would exceed max_size().
831         * include/bits/stl_deque.h (_Deque_base::size_type): Remove typedef.
832         (_Deque_base(_Deque_base&&, const allocator_type&, size_t)): Use
833         size_t instead of size_type.
834         (deq(size_type, const allocator_type&)
835         (deq(size_type, const value_type&, const allocator_type&)
836         (deque::_M_initialize_dispatch): Use _S_check_init_len to check size.
837         (deque::max_size): Call _S_max_size.
838         (deque::_S_check_init_len, deque::_S_max_size): New functions.
839         * include/bits/stl_vector.h (vector(size_type, const allocator_type&))
840         (vector(size_type, const value_type&, const allocator_type&))
841         (vector::_M_initialize_dispatch, vector::_M_range_initialize): Use
842         _S_check_init_len to check size.
843         (vector::max_size): Call _S_max_size.
844         (vector::_M_check_len): Prevent max from being expanded as a
845         function-like macro.
846         (vector::_S_check_init_len, vector::_S_max_size): New functions.
847         * include/bits/vector.tcc (vector::_M_assign_aux): Use
848         _S_check_init_len to check size.
849         * testsuite/23_containers/deque/capacity/max_size.cc: New test.
850         * testsuite/23_containers/vector/capacity/max_size.cc: New test.
852 2018-08-22  François Dumont  <fdumont@gcc.gnu.org>
854         PR libstdc++/68222
855         * include/debug/safe_iterator.h
856         (_Safe_iterator<_It, _Sq, _Cat>): Add category template parameter.
857         (_Safe_iterator<>::_Const_iterator): Remove.
858         (_Safe_iterator<>::_IsConstant): New.
859         (_Safe_iterator<>::_OtherIterator): New.
860         (_Safe_iterator<_It, _Sq, _Cat>::_Safe_iterator<_MutIte>(
861         const _Safe_iterator<_MutIte, _Sq, _Cat>&)): Add _IsConstant::__value in
862         __gnu_cxx::__enable_if condition.
863         (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to): New.
864         (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_from_begin): New.
865         (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to_end): New.
866         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>): New.
867         (_Safe_iterator<_It, _Sq, _Cat>::operator--()): Move...
868         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
869         ::operator--()): ...here.
870         (_Safe_iterator<_It, _Sq, _Cat>::operator--(int)): Move...
871         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
872         ::operator--(int)): ...here.
873         (_Safe_iterator<_It, _Sq, _Cat>::_M_decrementable()): Move...
874         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
875         ::_M_decrementable()): ...here.
876         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>): New.
877         (_Safe_iterator<_It, _Sq, _Cat>::operator[](const difference_type&)):
878         Move...
879         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
880         ::operator[](const difference_type&)): ...here.
881         (_Safe_iterator<_It, _Sq, _Cat>::operator+=(const difference_type&)):
882         Move...
883         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
884         ::operator+=(const difference_type&)): ...here.
885         (_Safe_iterator<_It, _Sq, _Cat>::operator+(const difference_type&)):
886         Move...
887         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
888         ::operator+(const difference_type&)): ...here.
889         (_Safe_iterator<_It, _Sq, _Cat>::operator-=(const difference_type&)):
890         Move...
891         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
892         ::operator-=(const difference_type&)): ...here.
893         (_Safe_iterator<_It, _Sq, _Cat>::operator-(const difference_type&)):
894         Move...
895         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
896         ::operator-(const difference_type&)): ...here.
897         (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)):
898         Constraint to random access iterators.
899         (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
900         Likewise.
901         (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
902         (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
903         Likewise.
904         (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
905         (operator+(const difference_type&, const _Safe_iterator<>&)): Likewise.
906         (__check_dereferenceable(const _Safe_iterator<>&)): Remove.
907         (__get_distance): Remove.
908         (__get_distance_from_begin): Remove.
909         (__get_distance_to_end): Remove.
910         (struct __is_safe_random_iterator<_Safe_iterator<>>): Remove partial
911         specialization.
912         (__base(const _Safe_iterator<>&, std::input_iterator_tag)): Remove.
913         (__base(const _Safe_iterator<>&, std::random_access_iterator_tag)): Remove.
914         (__base(const _Safe_iterator<>&)): Constraint to random access iterator.
915         * include/debug/safe_iterator.tcc
916         (_Safe_iterator<>::_M_get_distance_from_begin()): New.
917         (_Safe_iterator<>::_M_get_distance_to_end()): New.
918         (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator<>&)): New.
919         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
920         ::_M_valid_range): New.
921         * include/debug/safe_local_iterator.h
922         (_Safe_local_iterator<>::_Const_local_iterator): Remove.
923         (_Safe_local_iterator<>::_IsConstant): New.
924         (_Safe_local_iterator<>::_OtherIterator): New.
925         (_Safe_local_iterator<_It, _Cont>::_Safe_local_iterator<_MutIte, _Cont>(
926         const _Safe_local_iterator<_MutIte, _Seq>&)): Add _IsConstant::__value
927         in __gnu_cxx::__enable_if condition. If singular compare base iterator
928         with _MutIte rather than _It.
929         (_Safe_local_iterator<>::_S_constant): Make constexpr.
930         (_Safe_local_iterator<>::_M_get_distance_to): New.
931         (__check_dereferenceable(const _Safe_local_iterator<>&)): Remove.
932         (__get_distance(const _Safe_local_iterator<>&,
933         const _Safe_local_iterator<>&, std::input_iterator_tag)): Remove.
934         (__valid_range(const _Safe_local_iterator<>&,
935         const _Safe_local_iterator<>&)): New.
936         * include/debug/safe_local_iterator.tcc
937         (_Safe_local_iterator<>::_M_get_distance_to): New.
938         * include/debug/deque (std::__debug::deque<>): Add
939         ::__gnu_debug::_Safe_iterator<> friend declaration.
940         * include/debug/forward_list (std::__debug::forward_list<>): Likewise.
941         * include/debug/list (std::__debug::list<>): Likewise.
942         * include/debug/map.h (std::__debug::map<>): Likewise.
943         * include/debug/multimap.h (std::__debug::multimap<>): Likewise.
944         * include/debug/set.h (std::__debug::set<>): Likewise.
945         * include/debug/multiset.h (std::__debug::multiset<>): Likewise.
946         * include/debug/string (std::__debug::basic_string<>): Likewise.
947         * include/debug/unordered_map (std::__debug::unordered_map<>): Likewise
948         and add ::__gnu_debug::_Safe_local_iterator<> friend declaration.
949         (std::__debug::unordered_multimap<>): Likewise.
950         * include/debug/unordered_set (std::__debug::unordered_set<>): Likewise.
951         (std::__debug::unordered_multiset<>): Likewise.
952         * include/debug/formatter.h: Adapt.
953         * include/debug/helper_functions.h
954         (__gnu_debug::_Safe_local_iterator<>): Add declaration.
955         (__get_distance<_Ite>(_Ite, _Ite, std::random_access_iterator_tag):
956         Pass parameter by copy.
957         (__get_distance<_Ite>(_Ite, _Ite, std::input_iterator_tag): Likewise.
958         (__get_distance<_Ite>(_Ite, _Ite): Likewise.
959         (__valid_range_aux<_Integral>): Pass _Integral by copy.
960         (__valid_range<_InputIterator>): Pass _InputIterator by copy.
961         (__valid_range<>(const _Safe_iterator<>&,
962         const _Safe_iterator<>&, typename _Distance_traits<>::__type&)):
963         Declare.
964         (__valid_range(const _Safe_local_iterator<>&,
965         const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)):
966         Declare.
967         (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)):
968         Declare.
969         (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)):
970         Declare.
971         (__can_advance): Adapt.
972         (struct __is_safe_random_iterator<>): Remove.
973         (struct _SIter_base<>): Remove.
974         * include/debug/functions.h: Include <bits/stl_iterator.h>.
975         (__check_dereferenceable): Remove.
976         (__foreign_iterator_aux4, __foreign_iterator_aux3): Adapt.
977         (__foreign_iterator_aux2, __foreign_iterator_aux): Adapt.
978         (__foreign_iterator): Adapt.
979         * include/debug/stl_iterator.h
980         (__is_safe_random_iterator<std::reverse_iterator<>>): Remove.
981         (__base(const std::reverse_iterator<_Safe_iterator<_It, _Sq>)):
982         Constraint for random access iterators.
983         (__niter_base): Adapt.
984         * testsuite/util/testsuite_containers.h:
985         Include <bits/boost_concept_check.h>.
986         (iterator_concept_checks<_It, _Mutable, _Category>): New.
987         (citerator<_Cont>::forward_members::forward_members()): Instantiate
988         latter for container iterator and const_iterator.
989         * testsuite/23_containers/list/68222_neg.cc: New.
990         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adapt
991         line number.
992         * testsuite/23_containers/unordered_set/debug/debug_functions.cc:
993         (test01): Remove.
994         * testsuite/23_containers/vector/debug/debug_functions.cc (test01):
995         Remove.
997 2018-08-22  Jonathan Wakely  <jwakely@redhat.com>
999         PR libstdc++/77854
1000         * doc/xml/manual/status_cxx1998.xml: Document size_type and
1001         difference_type for containers.
1002         * doc/html/*: Regenerate.
1004 2018-08-21  François Dumont  <fdumont@gcc.gnu.org>
1006         P0646R1 Improving the Return Value of Erase-Like Algorithms I
1007         * include/debug/forward_list (forward_list::__remove_return_type):
1008         Define typedef as size_type or void, according to __cplusplus value.
1009         (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1010         empty, according to __cplusplus value.
1011         (_GLIBCXX20_ONLY): Define macro.
1012         (forward_list::remove, forward_list::unique): Use typedef and macro
1013         to change return type and add abi-tag for C++2a. Return number of
1014         removed elements for C++2a.
1015         (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
1016         typedef to change return type for C++2a. Return number of removed
1017         elements for C++2a.
1018         * include/debug/list (list::__remove_return_type): Define typedef as
1019         size_type or void, according to __cplusplus value.
1020         (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1021         empty, according to __cplusplus value.
1022         (_GLIBCXX20_ONLY): Define macro.
1023         (list::remove, list::unique): Use typedef and macro to change return
1024         type and add abi-tag for C++2a. Return number of removed elements for
1025         C++2a.
1026         (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
1027         to change return type for C++2a. Return number of removed elements for
1028         C++2a.
1030 2018-08-21  David Edelsohn  <dje.gcc@gmail.com>
1032         * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
1034 2018-08-21  Jonathan Wakely  <jwakely@redhat.com>
1036         * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
1037         redundant dg-do directive.
1038         * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
1039         * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
1040         * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
1041         * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
1043 2018-08-20  Jonathan Wakely  <jwakely@redhat.com>
1045         PR libstdc++/86963
1046         * include/std/tuple (_Tuple_impl::operator=): Define as deleted.
1047         (_Tuple_impl::_M_assign): New functions to perform assignment instead
1048         of assignment operators.
1049         (_Tuple_impl::_M_swap): Remove exception specification.
1050         (_Tuple_impl<_Idx, _Head>): Likewise.
1051         (_TC::_NonNestedTuple, _TC::_NotSameTuple): Use __remove_cvref_t.
1052         (__tuple_base): Remove.
1053         (tuple, tuple<_T1, _T2>): Remove inheritance from __tuple_base.
1054         (tuple::operator=, tuple<_T1, _T2>::operator=): Call _M_assign.
1055         (tuple::swap, tuple<_T1, _T2>::swap): Define exception specification
1056         using __is_nothrow_swappable.
1057         (tuple<_T1, _T2>::tuple(_U1&&, _U2&&)): Use __remove_cvref_t.
1059         * include/std/optional (_Optional_payload): Use variable templates
1060         for conditions in default template arguments and exception
1061         specifications.
1062         (optional): Likewise. Adjust indentation.
1063         (optional::__not_self, optional::__not_tag, optional::_Requires): New
1064         SFINAE helpers.
1065         (optional::optional): Use new helpers in constructor constraints.
1066         * include/std/type_traits (__or_v, __and_v): New variable templates.
1067         * testsuite/20_util/optional/cons/value_neg.cc: Change dg-error to
1068         dg-prune-output. Remove unused header.
1070 2018-08-18  François Dumont  <fdumont@gcc.gnu.org>
1072         * testsuite/25_algorithms/copy/86658.cc: Use dg-options to define
1073         _GLIBCXX_DEBUG.
1075 2018-08-17  Jonathan Wakely  <jwakely@redhat.com>
1077         PR libstdc++/86963
1078         * include/std/tuple (__tuple_base): New class template with deleted
1079         copy assignment operator.
1080         (tuple, tuple<_T1, _T2>): Derive from __tuple_base<tuple> so that
1081         implicit copy/move assignment operator will be deleted/suppressed.
1082         (tuple::__assignable, tuple<_T1, _T2>::__assignable): New helper
1083         functions for SFINAE constraints on assignment operators.
1084         (tuple::__nothrow_assignable, tuple<_T1, _T2>::__nothrow_assignable):
1085         New helper functions for exception specifications.
1086         (tuple::operator=(const tuple&), tuple::operator=(tuple&&))
1087         (tuple<_T1, _T2>::operator=(const tuple&))
1088         (tuple<_T1, _T2>::operator=(tuple&&)): Change parameter types to
1089         __nonesuch_no_braces when the operator should be defined implicitly.
1090         Use __nothrow_assignable for exception specifications.
1091         (tuple::operator=(const tuple<_UElements...>&))
1092         (tuple::operator=(tuple<_UElements...>&&))
1093         (tuple<_T1, _T2>::operator=(const tuple<_U1, _U2>&))
1094         (tuple<_T1, _T2>::operator=(tuple<_U1, _U2>&&))
1095         (tuple<_T1, _T2>::operator=(const pair<_U1, _U2>&))
1096         (tuple<_T1, _T2>::operator=(pair<_U1, _U2>&&)): Constrain using
1097         __assignable and use __nothrow_assignable for exception
1098         specifications.
1099         * python/libstdcxx/v6/printers.py (is_specialization_of): Accept
1100         gdb.Type as first argument, instead of a string.
1101         (StdTuplePrinter._iterator._is_nonempty_tuple): New method to check
1102         tuple for expected structure.
1103         (StdTuplePrinter._iterator.__init__): Use _is_nonempty_tuple.
1104         * testsuite/20_util/tuple/dr2729.cc: New test.
1105         * testsuite/20_util/tuple/element_access/get_neg.cc: Change dg-error
1106         to dg-prune-output.
1108 2018-08-16  Jonathan Wakely  <jwakely@redhat.com>
1110         * include/tr1/legendre_function.tcc (__sph_legendre): Avoid warning
1111         about signed/unsigned comparison.
1113         * include/std/ostream (basic_ostream::sentry::~sentry): Suppress
1114         deprecation warnings for using uncaught_exception().
1116         PR libstdc++/86447
1117         * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
1118         (logic_error::logic_error(logic_error&&))
1119         (logic_error::operator=(logic_error&&))
1120         (runtime_error::runtime_error(runtime_error&&))
1121         (runtime_error::operator=(runtime_error&&)): Copy strings instead of
1122         moving, to avoid allocating empty reps for moved-from strings.
1124 2018-08-15  Jonathan Wakely  <jwakely@redhat.com>
1126         * include/experimental/regex: Remove begin/end macros for namespace.
1127         * include/experimental/string: Likewise.
1128         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
1129         New test.
1130         * testsuite/experimental/polymorphic_allocator/
1131         pmr_typedefs_forward_list.cc: New test.
1132         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
1133         New test.
1134         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
1135         New test.
1136         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
1137         New test.
1138         * testsuite/experimental/polymorphic_allocator/
1139         pmr_typedefs_multimap.cc: New test.
1140         * testsuite/experimental/polymorphic_allocator/
1141         pmr_typedefs_multiset.cc: New test.
1142         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
1143         New test.
1144         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1145         New test.
1146         * testsuite/experimental/polymorphic_allocator/
1147         pmr_typedefs_unordered_map.cc: New test.
1148         * testsuite/experimental/polymorphic_allocator/
1149         pmr_typedefs_unordered_multimap.cc: New test.
1150         * testsuite/experimental/polymorphic_allocator/
1151         pmr_typedefs_unordered_multiset.cc: New test.
1152         * testsuite/experimental/polymorphic_allocator/
1153         pmr_typedefs_unordered_set.cc: New test.
1154         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
1155         New test.
1157         * include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
1158         calls to __uses_allocator_construct_impl and __use_alloc.
1159         * include/experimental/memory_resource
1160         (polymorphic_allocator::_M_construct): Remove.
1161         (polymorphic_allocator::construct): Call __uses_allocator_construct.
1162         Qualify calls to __use_alloc.
1163         * include/std/memory_resource (polymorphic_allocator::construct): Fix
1164         type in SFINAE constraint. Use constexpr if instead of tag dispatching
1165         to _S_construct overloads.
1166         (polymorphic_allocator::construct(pair<T1, T2>*, ...)): Fix order of
1167         arguments to _S_construct_p.
1168         (polymorphic_allocator::_S_construct): Remove.
1169         (polymorphic_allocator::_S_construct_p): Return allocators by value
1170         not by reference.
1171         * include/std/scoped_allocator (scoped_allocator_adaptor::construct):
1172         Qualify calls to __use_alloc.
1173         * testsuite/20_util/polymorphic_allocator/construct_pair.cc: New test,
1174         copied from testsuite/20_util/scoped_allocator/construct_pair.cc.
1175         * testsuite/experimental/polymorphic_allocator/1.cc: New test.
1176         * testsuite/experimental/polymorphic_allocator/construct_pair.cc:
1177         New test.
1179         * src/c++17/memory_resource.cc [!_GLIBCXX_HAS_GTHREADS]
1180         (atomic_mem_res): Add unsynchronized definition for single-threaded.
1182 2018-08-14  Jonathan Wakely  <jwakely@redhat.com>
1184         PR libstdc++/86954
1185         * include/bits/stl_tempbuf.h (return_temporary_buffer): Use
1186         non-placement delete.
1188         * include/std/chrono (__check_overflow): Simplify definition.
1189         (_Checked_integral_constant): Remove.
1191         PR libstdc++/86846
1192         * src/c++17/default_resource.h: New file, defining default_res.
1193         * src/c++17/memory_resource.cc [ATOMIC_POINTER_LOCK_FREE != 2]
1194         (atomic_mem_res): Define alternative for atomic<memory_resource*>
1195         using a mutex instead of atomics.
1197         PR libstdc++/85343
1198         * config/abi/pre/gnu.ver: Export new symbol.
1199         * doc/xml/manual/abi.xml: Document new versions.
1200         * include/bits/fstream.tcc (basic_filebuf<C, T>::underflow)
1201         (basic_filebuf<C, T>::xsgetn): Pass errno to __throw_ios_failure.
1202         * include/bits/functexcept.h (__throw_ios_failure(const char*, int)):
1203         Declare new overload.
1204         * src/c++11/cxx11-ios_failure.cc (__ios_failure): Add new constructor
1205         and static member function.
1206         (__throw_ios_failure(const char*, int)): Define.
1207         * src/c++98/ios_failure.cc [!_GLIBCXX_USE_DUAL_ABI]
1208         (__throw_ios_failure(const char*, int)): Define.
1210 2018-08-14  Jeremy Sawicki  <jeremy-gcc@sawicki.us>
1212         * include/ext/rope (_Rope_iterator_base(const _Rope_iterator_base&))
1213         (_Rope_const_iterator::operator=(const _Rope_const_iterator&))
1214         (_Rope_iterator::operator=(const _Rope_iterator&)): Ensure
1215         copied/assigned rope iterators don't retain pointers to the iterator
1216         they were copied/assigned from.
1217         * testsuite/ext/rope/7.cc: New.
1219 2018-08-13  Jonathan Wakely  <jwakely@redhat.com>
1221         PR libstdc++/45093
1222         * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
1223         Combine definitions to avoid --detect-odr-violations warning.
1225         * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Use
1226         __is_pow2 to check for valid alignment. Avoid branching when rounding
1227         size to multiple of alignment.
1229         * include/Makefile.am: Install <bit> and <version> for freestanding.
1230         * include/Makefile.in: Regenerate.
1231         * testsuite/17_intro/freestanding.cc: Check for <bit> and <version>.
1233         Revert
1234         2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1236         PR target/85904
1237         * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
1238         Newlib.
1239         * configure: Regenerate.
1241 2018-08-10  Jonathan Wakely  <jwakely@redhat.com>
1243         PR libstdc++/68210
1244         * doc/xml/manual/intro.xml: Document LWG 206 change.
1245         * libsupc++/del_op.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1246         * libsupc++/del_opa.cc: Likewise.
1247         * libsupc++/del_opant.cc: Likewise.
1248         * libsupc++/del_opnt.cc: Likewise. Call operator delete(ptr) instead
1249         of free(ptr).
1250         * libsupc++/del_ops.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1251         * libsupc++/del_opsa.cc: Likewise.
1252         * libsupc++/del_opva.cc: Likewise.
1253         * libsupc++/del_opvant.cc: Likewise.
1254         * libsupc++/del_opvnt.cc: Likewise. Call operator delete[](ptr)
1255         instead of operator delete(ptr).
1256         * libsupc++/del_opvs.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1257         * libsupc++/del_opvsa.cc: Likewise.
1258         * libsupc++/new_op.cc: Use __builtin_expect in check for zero size.
1259         * libsupc++/new_opa.cc: Use nullptr instead of literal 0.
1260         * libsupc++/new_opant.cc: Likewise. Replace _GLIBCXX_USE_NOEXCEPT
1261         with noexcept.
1262         * libsupc++/new_opnt.cc: Likewise. Call operator new(sz) instead of
1263         malloc(sz).
1264         * libsupc++/new_opvant.cc: Use nullptr and noexcept.
1265         * libsupc++/new_opvnt.cc: Likewise. Call operator new[](sz) instead of
1266         operator new(sz, nothrow).
1267         * testsuite/18_support/new_nothrow.cc: New test.
1269 2018-08-10  Martin Liska  <mliska@suse.cz>
1271         * libsupc++/new_op.cc (new): Remove __builtin_expect as malloc
1272         predictor can handle that.
1273         * libsupc++/new_opa.cc: Likewise.
1274         * libsupc++/new_opnt.cc (new): Likewise.
1276 2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1278         PR target/85904
1279         * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
1280         Newlib.
1281         * configure: Regenerate.
1283 2018-08-10  Jonathan Wakely  <jwakely@redhat.com>
1285         * include/std/deque (std::pmr::deque): Declare alias.
1286         * include/std/forward_list (std::pmr::forward_list): Likewise.
1287         * include/std/list (std::pmr::list): Likewise.
1288         * include/std/map (std::pmr::map, std::pmr::multimap): Likewise.
1289         * include/std/regex (std::pmr::match_results, std::pmr::cmatch)
1290         (std::pmr::smatch, std::pmr::wcmatch, std::pmr::wsmatch): Likewise.
1291         * include/std/set (std::pmr::set, std::pmr::multiset): Likewise.
1292         * include/std/string (std::pmr::basic_string, std::pmr::string)
1293         (std::pmr::u16string, std::pmr::u32string, std::pmr::wstring):
1294         Likewise.
1295         * include/std/unordered_map (std::pmr::unordered_map)
1296         (std::pmr::unordered_multimap): Likewise.
1297         * include/std/unordered_set (std::pmr::unordered_set)
1298         (std::pmr::unordered_multiset): Likewise.
1299         * include/std/vector (std::pmr::vector): Likewise.
1300         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: New test.
1301         * testsuite/23_containers/deque/types/pmr_typedefs.cc: New test.
1302         * testsuite/23_containers/forward_list/pmr_typedefs.cc: New test.
1303         * testsuite/23_containers/list/pmr_typedefs.cc: New test.
1304         * testsuite/23_containers/map/pmr_typedefs.cc: New test.
1305         * testsuite/23_containers/multimap/pmr_typedefs.cc: New test.
1306         * testsuite/23_containers/multiset/pmr_typedefs.cc: New test.
1307         * testsuite/23_containers/set/pmr_typedefs.cc: New test.
1308         * testsuite/23_containers/unordered_map/pmr_typedefs.cc: New test.
1309         * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: New
1310         test.
1311         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
1312         test.
1313         * testsuite/23_containers/unordered_set/pmr_typedefs.cc: New test.
1314         * testsuite/23_containers/vector/pmr_typedefs.cc: New test.
1315         * testsuite/28_regex/match_results/pmr_typedefs.cc: New test.
1317 2018-08-08  François Dumont  <fdumont@gcc.gnu.org>
1319         * include/bits/stl_algo.h
1320         (__rotate(_Ite, _Ite, _Ite, forward_iterator_tag))
1321         (__rotate(_Ite, _Ite, _Ite, bidirectional_iterator_tag))
1322         (__rotate(_Ite, _Ite, _Ite, random_access_iterator_tag)): Move code
1323         duplication...
1324         (rotate(_Ite, _Ite, _Ite)): ...here.
1325         (__stable_partition_adaptive(_FIt, _FIt, _Pred, _Dist, _Pointer, _Dist)):
1326         Simplify rotate call.
1327         (__rotate_adaptive(_BIt1, _BIt1, _BIt1, _Dist, _Dist, _Bit2, _Dist)):
1328         Likewise.
1329         (__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
1330         Likewise.
1332 2018-08-08  Jonathan Wakely  <jwakely@redhat.com>
1334         * libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
1335         avoid clashing with an ::aligned_alloc function that was not detected
1336         by configure.
1338         * doc/xml/manual/using.xml: Fix markup for empty table entry.
1339         * doc/html/*: Regenerate.
1341         * doc/xml/manual/using.xml: Add missing header to table and fix typo.
1342         * doc/html/*: Regenerate.
1344         PR libstdc++/86597
1345         * include/bits/fs_dir.h (directory_entry::_M_file_type(error_code&)):
1346         Clear error_code when cached type is used.
1347         * testsuite/27_io/filesystem/directory_entry/86597.cc: New test.
1349 2018-08-07  Jonathan Wakely  <jwakely@redhat.com>
1351         PR libstdc++/86874
1352         * include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
1353         here instead of in _Move_assign_base.
1354         (_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
1355         (_Copy_assign_base::operator=): Use _M_destructive_move when changing
1356         the contained value to another alternative.
1357         (_Move_assign_base::operator=): Likewise.
1358         (_Move_assign_base::_M_destructive_move): Remove.
1359         * testsuite/20_util/variant/86874.cc: New test.
1361         PR libstdc++/86861
1362         * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
1363         Replace macro with inline function.
1364         [__sun]: Increase alignment to meet memalign precondition.
1365         [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
1366         (aligned_alloc): Move check for valid alignment to operator new.
1367         Remove redundant check for non-zero size, it's enforced by the caller.
1368         (operator new): Move check for valid alignment here. Use
1369         __builtin_expect on check for zero size.
1371         * config/abi/pre/gnu.ver: Export monotonic_buffer_resource members.
1372         * include/std/memory_resource (monotonic_buffer_resource::release):
1373         Call _M_release_buffers to free buffers.
1374         (monotonic_buffer_resource::do_allocate): Call _M_new_buffer to
1375         allocate a new buffer from upstream.
1376         (monotonic_buffer_resource::_M_new_buffer): Declare.
1377         (monotonic_buffer_resource::_M_release_buffers): Declare.
1378         (monotonic_buffer_resource::_Chunk): Replace definition with
1379         declaration as opaque type.
1380         * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk):
1381         Define.
1382         (monotonic_buffer_resource::_M_new_buffer): Define.
1383         (monotonic_buffer_resource::_M_release_buffers): Define.
1385 2018-08-05  François Dumont  <fdumont@gcc.gnu.org>
1387         * include/bits/stl_iterator.h: Fix comment.
1389 2018-08-03  Jonathan Wakely  <jwakely@redhat.com>
1391         * src/c++11/system_error.cc
1392         (system_error_category::default_error_condition): Add workaround for
1393         ENOTEMPTY and EEXIST having the same value on AIX.
1394         * testsuite/19_diagnostics/error_category/system_category.cc: Add
1395         extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
1397 2018-08-01  Jonathan Wakely  <jwakely@redhat.com>
1399         * configure: Regenerate.
1400         * configure.ac: Add -D_GLIBCXX_ASSERTIONS to default DEBUG_FLAGS.
1401         * src/c++11/futex.cc: Use __glibcxx_assert instead of
1402         _GLIBCXX_DEBUG_ASSERT.
1404 2018-08-01  Mike Crowe  <mac@mcrowe.com>
1406         * include/std/condition_variable (wait_for): Use steady_clock.
1408 2018-08-01  Mike Crowe  <mac@mcrowe.com>
1410         * include/std/condition_variable (wait_until): Only report timeout
1411         if we really have timed out when measured against the
1412         caller-supplied clock.
1413         * testsuite/30_threads/condition_variable/members/2.cc: Add test
1414         case to confirm above behaviour.
1416 2018-08-01  Jonathan Wakely  <jwakely@redhat.com>
1418         PR libstdc++/60555
1419         * src/c++11/system_error.cc
1420         (system_error_category::default_error_condition): New override to
1421         check for POSIX errno values.
1422         * testsuite/19_diagnostics/error_category/generic_category.cc: New
1423         * testsuite/19_diagnostics/error_category/system_category.cc: New
1424         test.
1426 2018-07-31  Jonathan Wakely  <jwakely@redhat.com>
1428         PR libstdc++/86751
1429         * include/bits/stl_pair.h (__pair_base): New class with deleted copy
1430         assignment operator.
1431         (pair): Derive from __pair_base.
1432         (pair::operator=): Remove deleted overload.
1433         * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
1434         so that new base class isn't shown in GDB.
1435         * testsuite/20_util/pair/86751.cc: New test.
1436         * testsuite/20_util/pair/ref_assign.cc: New test.
1438         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1439         (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Move definitions here.
1440         (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Likewise. Use !__is_identifier
1441         instead of __has_builtin.
1442         * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1443         (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Remove definitions from here.
1444         * include/std/version [!_GLIBCXX_HAS_GTHREADS]
1445         (__cpp_lib_shared_timed_mutex, __cpp_lib_scoped_lock)
1446         (__cpp_lib_shared_mutex): Don't define when Gthreads not in use.
1447         [!_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP]
1448         (__cpp_lib_has_unique_object_representations): Don't define when
1449         builtin not available.
1450         [!_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE] (__cpp_lib_is_aggregate):
1451         Likewise.
1452         [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
1453         * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
1454         from here.
1456         * doc/xml/manual/test.xml: Improve documentation on writing tests for
1457         newer standards.
1458         * doc/xml/manual/using.xml: Document all headers for C++11 and later.
1459         * doc/html/*: Regenerate.
1461         * include/ext/pointer.h [__cplusplus >= 201103L]
1462         (_Pointer_adapter::operator bool): Add explicit conversion operator
1463         to replace safe bool idiom.
1465 2018-07-30  Jonathan Wakely  <jwakely@redhat.com>
1467         PR libstdc++/86734
1468         * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
1469         _S_to_pointer (LWG 1052, LWG 2118).
1470         (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
1471         * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
1472         * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
1474         * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
1475         workaround for aligned_alloc bug on AIX.
1476         * testsuite/18_support/new_aligned.cc: New test.
1478 2018-07-26  Marek Polacek  <polacek@redhat.com>
1480         * testsuite/30_threads/condition_variable_any/cond.cc: New.
1482 2018-07-26  Marek Polacek  <polacek@redhat.com>
1484         * src/c++98/locale_init.cc: Fix #ifdef condition.
1486 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
1488         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
1489         dg-require-cstdint directive.
1490         * testsuite/20_util/allocator/overaligned.cc: Likewise.
1491         * testsuite/20_util/any/cons/aligned.cc: Likewise.
1492         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
1493         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
1494         * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
1495         Likewise.
1496         * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
1497         * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
1498         * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
1499         * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
1500         * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
1501         random_device effective-target.
1502         * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
1503         * testsuite/25_algorithms/sample/1.cc: Require cstdint.
1504         * testsuite/25_algorithms/sample/2.cc: Likewise.
1505         * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
1506         and random_device.
1507         * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
1508         cstdint.
1509         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
1510         Likewise.
1511         * testsuite/26_numerics/random/discard_block_engine/requirements/
1512         constexpr_data.cc: Likewise.
1513         * testsuite/26_numerics/random/discard_block_engine/requirements/
1514         constexpr_functions.cc: Likewise.
1515         * testsuite/26_numerics/random/independent_bits_engine/requirements/
1516         constexpr_functions.cc: Likewise.
1517         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
1518         constexpr_data.cc: Likewise.
1519         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
1520         constexpr_functions.cc: Likewise.
1521         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
1522         constexpr_data.cc: Likewise.
1523         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
1524         constexpr_functions.cc: Likewise.
1525         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
1526         * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
1527         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
1528         constexpr_data.cc: Add dg-require-cstdint directive.
1529         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
1530         constexpr_functions.cc: Likewise.
1531         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
1532         constexpr_data.cc: Likewise.
1533         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
1534         constexpr_functions.cc: Likewise.
1535         * testsuite/26_numerics/random/uniform_real_distribution/operators/
1536         64351.cc: Likewise.
1537         * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
1538         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
1539         * testsuite/experimental/algorithm/sample.cc: Likewise.
1540         * testsuite/experimental/algorithm/search.cc: Likewise.
1541         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
1542         * testsuite/experimental/any/cons/aligned.cc: Likewise.
1543         * testsuite/experimental/memory_resource/new_delete_resource.cc:
1544         Likewise.
1545         * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
1546         * testsuite/experimental/random/randint.cc: Likewise.
1547         * testsuite/experimental/source_location/1.cc: Likewise.
1548         * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
1549         * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
1550         * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
1551         * testsuite/ext/new_allocator/overaligned.cc: Likewise.
1552         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
1553         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
1554         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
1555         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
1556         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
1557         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
1558         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
1559         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
1560         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
1561         * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
1562         * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
1563         * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
1564         * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
1565         * testsuite/ext/throw_allocator/check_new.cc: Likewise.
1566         * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
1567         * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
1568         * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
1569         * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
1570         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
1572         * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
1573         * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
1574         * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
1575         * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
1576         Likewise.
1577         * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
1578         * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
1579         * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
1580         Likewise.
1581         * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
1582         Likewise.
1583         * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
1584         Likewise.
1585         * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
1586         * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
1587         * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
1588         * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
1589         * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
1590         * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
1591         Likewise.
1592         * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
1593         Likewise.
1594         * testsuite/30_threads/recursive_timed_mutex/dest/
1595         destructor_locked.cc: Likewise.
1596         * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
1597         * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
1598         * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
1599         Likewise.
1600         * testsuite/30_threads/recursive_timed_mutex/native_handle/
1601         typesizes.cc: Likewise.
1602         * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
1603         Likewise.
1604         * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
1605         Likewise.
1606         * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
1607         Likewise.
1608         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
1609         Likewise.
1610         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
1611         Likewise.
1612         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
1613         Likewise.
1614         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
1615         Likewise.
1616         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
1617         Likewise.
1618         * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
1619         * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
1620         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
1621         * testsuite/30_threads/scoped_lock/requirements/
1622         explicit_instantiation.cc: Likewise.
1623         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
1624         * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
1625         * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
1626         * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
1627         * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
1628         * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
1629         * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
1630         * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
1631         * testsuite/30_threads/shared_future/members/get.cc: Likewise.
1632         * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
1633         * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
1634         * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
1635         * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
1636         * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
1637         * testsuite/30_threads/shared_future/requirements/
1638         explicit_instantiation.cc: Likewise.
1639         * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
1640         * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
1641         * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
1642         * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
1643         * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
1644         * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
1645         * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
1646         * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
1647         * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
1648         * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
1649         * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
1650         * testsuite/30_threads/shared_lock/requirements/
1651         explicit_instantiation.cc: Likewise.
1652         * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
1653         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
1654         * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
1655         * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
1656         * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
1657         Likewise.
1658         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
1659         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
1660         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
1661         * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
1662         * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
1663         * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
1664         * testsuite/30_threads/shared_timed_mutex/requirements/
1665         standard_layout.cc: Likewise.
1666         * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
1667         * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
1668         * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
1669         * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
1670         * testsuite/30_threads/this_thread/1.cc: Likewise.
1671         * testsuite/30_threads/this_thread/2.cc: Likewise.
1672         * testsuite/30_threads/this_thread/3.cc: Likewise.
1673         * testsuite/30_threads/this_thread/4.cc: Likewise.
1674         * testsuite/30_threads/this_thread/58038.cc: Likewise.
1675         * testsuite/30_threads/thread/70503.cc: Likewise.
1676         * testsuite/30_threads/thread/84532.cc: Likewise.
1677         * testsuite/30_threads/thread/adl.cc: Likewise.
1678         * testsuite/30_threads/thread/cons/1.cc: Likewise.
1679         * testsuite/30_threads/thread/cons/2.cc: Likewise.
1680         * testsuite/30_threads/thread/cons/3.cc: Likewise.
1681         * testsuite/30_threads/thread/cons/4.cc: Likewise.
1682         * testsuite/30_threads/thread/cons/49668.cc: Likewise.
1683         * testsuite/30_threads/thread/cons/5.cc: Likewise.
1684         * testsuite/30_threads/thread/cons/6.cc: Likewise.
1685         * testsuite/30_threads/thread/cons/7.cc: Likewise.
1686         * testsuite/30_threads/thread/cons/8.cc: Likewise.
1687         * testsuite/30_threads/thread/cons/84535.cc: Likewise.
1688         * testsuite/30_threads/thread/cons/9.cc: Likewise.
1689         * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
1690         * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
1691         * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
1692         * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
1693         * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
1694         * testsuite/30_threads/thread/id/operators.cc: Likewise.
1695         * testsuite/30_threads/thread/members/1.cc: Likewise.
1696         * testsuite/30_threads/thread/members/2.cc: Likewise.
1697         * testsuite/30_threads/thread/members/3.cc: Likewise.
1698         * testsuite/30_threads/thread/members/4.cc: Likewise.
1699         * testsuite/30_threads/thread/members/5.cc: Likewise.
1700         * testsuite/30_threads/thread/members/hardware_concurrency.cc:
1701         Likewise.
1702         * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
1703         * testsuite/30_threads/thread/swap/1.cc: Likewise.
1704         * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
1705         * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
1706         * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
1707         * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
1708         * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
1709         * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
1710         * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
1711         Likewise.
1712         * testsuite/30_threads/timed_mutex/requirements/
1713         standard_layout.cc: Likewise.
1714         * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
1715         * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
1716         * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
1717         * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
1718         * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
1719         * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
1720         * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
1721         * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
1722         * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
1723         * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
1724         * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
1725         * testsuite/30_threads/try_lock/1.cc: Likewise.
1726         * testsuite/30_threads/try_lock/2.cc: Likewise.
1727         * testsuite/30_threads/try_lock/3.cc: Likewise.
1728         * testsuite/30_threads/try_lock/4.cc: Likewise.
1729         * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
1730         * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
1731         * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
1732         * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
1733         * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
1734         * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
1735         * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
1736         * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
1737         * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
1738         * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
1739         * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
1740         * testsuite/30_threads/unique_lock/requirements/
1741         explicit_instantiation.cc: Likewise.
1742         * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
1744         * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
1745         directive.
1746         * testsuite/30_threads/async/49668.cc: Likewise.
1747         * testsuite/30_threads/async/54297.cc: Likewise.
1748         * testsuite/30_threads/async/84532.cc: Likewise.
1749         * testsuite/30_threads/async/any.cc: Likewise.
1750         * testsuite/30_threads/async/async.cc: Likewise.
1751         * testsuite/30_threads/async/except.cc: Likewise.
1752         * testsuite/30_threads/async/forced_unwind.cc: Likewise.
1753         * testsuite/30_threads/async/launch.cc: Likewise.
1754         * testsuite/30_threads/async/lwg2021.cc: Likewise.
1755         * testsuite/30_threads/async/sync.cc: Likewise.
1756         * testsuite/30_threads/call_once/39909.cc: Likewise.
1757         * testsuite/30_threads/call_once/49668.cc: Likewise.
1758         * testsuite/30_threads/call_once/60497.cc: Likewise.
1759         * testsuite/30_threads/call_once/call_once1.cc: Likewise.
1760         * testsuite/30_threads/call_once/constexpr.cc: Likewise.
1761         * testsuite/30_threads/call_once/dr2442.cc: Likewise.
1762         * testsuite/30_threads/call_once/once_flag.cc: Likewise.
1763         * testsuite/30_threads/condition_variable/54185.cc: Likewise.
1764         * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
1765         * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
1766         Likewise.
1767         * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
1768         * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
1769         * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
1770         * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
1771         * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
1772         * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
1773         * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
1774         Likewise.
1775         * testsuite/30_threads/condition_variable/requirements/
1776         standard_layout.cc: Likewise.
1777         * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
1778         * Likewise.
1779         * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
1780         * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
1781         * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
1782         * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
1783         Likewise.
1784         * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
1785         Likewise.
1786         * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
1787         * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
1788         * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
1789         * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
1790         * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
1791         * testsuite/30_threads/future/cons/default.cc: Likewise.
1792         * testsuite/30_threads/future/cons/move.cc: Likewise.
1793         * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
1794         * testsuite/30_threads/future/members/45133.cc: Likewise.
1795         * testsuite/30_threads/future/members/get.cc: Likewise.
1796         * testsuite/30_threads/future/members/get2.cc: Likewise.
1797         * testsuite/30_threads/future/members/share.cc: Likewise.
1798         * testsuite/30_threads/future/members/valid.cc: Likewise.
1799         * testsuite/30_threads/future/members/wait.cc: Likewise.
1800         * testsuite/30_threads/future/members/wait_for.cc: Likewise.
1801         * testsuite/30_threads/future/members/wait_until.cc: Likewise.
1802         * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
1803         Likewise.
1804         * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
1805         Likewise.
1806         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
1807         * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
1808         * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
1809         * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
1810         * testsuite/30_threads/lock/1.cc: Likewise.
1811         * testsuite/30_threads/lock/2.cc: Likewise.
1812         * testsuite/30_threads/lock/3.cc: Likewise.
1813         * testsuite/30_threads/lock/4.cc: Likewise.
1814         * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
1815         * testsuite/30_threads/lock_guard/requirements/
1816         explicit_instantiation.cc: Likewise.
1817         * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
1818         * testsuite/30_threads/mutex/cons/1.cc: Likewise.
1819         * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
1820         * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
1821         * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
1822         * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
1823         * testsuite/30_threads/mutex/lock/1.cc: Likewise.
1824         * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
1825         * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
1826         * testsuite/30_threads/mutex/requirements/standard_layout.cc::
1827         Likewise.
1828         * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
1829         * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
1830         * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
1831         * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
1832         * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
1833         * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
1834         * testsuite/30_threads/packaged_task/49668.cc: Likewise.
1835         * testsuite/30_threads/packaged_task/60564.cc: Likewise.
1836         * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
1837         * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
1838         * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
1839         * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
1840         * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
1841         * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
1842         * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
1843         * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
1844         * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
1845         * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
1846         * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
1847         * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
1848         Likewise.
1849         * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
1850         * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
1851         * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
1852         * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
1853         * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
1854         * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
1855         * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
1856         * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
1857         * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
1858         * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
1859         * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
1860         * testsuite/30_threads/packaged_task/requirements/
1861         explicit_instantiation.cc: Likewise.
1862         * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
1863         * testsuite/30_threads/promise/60966.cc: Likewise.
1864         * testsuite/30_threads/promise/69106.cc: Likewise.
1865         * testsuite/30_threads/promise/cons/1.cc: Likewise.
1866         * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
1867         * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
1868         * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
1869         * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
1870         * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
1871         * testsuite/30_threads/promise/cons/move.cc: Likewise.
1872         * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
1873         * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
1874         * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
1875         * testsuite/30_threads/promise/members/get_future.cc: Likewise.
1876         * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
1877         * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
1878         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
1879         * testsuite/30_threads/promise/members/set_value.cc: Likewise.
1880         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
1881         * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
1882         * testsuite/30_threads/promise/members/swap.cc: Likewise.
1883         * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
1884         * Likewise.
1885         * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
1887         * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
1888         from namespace std.
1889         * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
1890         * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
1891         * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
1892         * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
1893         * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
1894         * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
1895         * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
1896         * testsuite/20_util/duration/cons/1.cc: Likewise.
1897         * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
1898         * testsuite/20_util/duration/cons/2.cc: Likewise.
1899         * testsuite/20_util/duration/cons/54025.cc: Likewise.
1900         * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
1901         * testsuite/20_util/duration/requirements/explicit_instantiation/
1902         explicit_instantiation.cc: Likewise.
1903         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1904         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1905         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1906         * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
1907         * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
1908         * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
1909         * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
1910         * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
1911         * testsuite/20_util/ratio/operations/45866.cc: Likewise.
1912         * testsuite/20_util/ratio/operations/47913.cc: Likewise.
1913         * testsuite/20_util/ratio/operations/53840.cc: Likewise.
1914         * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
1915         * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
1916         * testsuite/20_util/system_clock/1.cc: Likewise.
1917         * testsuite/20_util/time_point/1.cc: Likewise.
1918         * testsuite/20_util/time_point/2.cc: Likewise.
1919         * testsuite/20_util/time_point/3.cc: Likewise.
1920         * testsuite/20_util/time_point/requirements/explicit_instantiation/
1921         explicit_instantiation.cc: Likewise.
1922         * testsuite/21_strings/basic_string/requirements/
1923         explicit_instantiation/char16_t/1.cc: Likewise.
1924         * testsuite/21_strings/basic_string/requirements/
1925         explicit_instantiation/char32_t/1.cc: Likewise.
1926         * testsuite/21_strings/basic_string_view/requirements/
1927         explicit_instantiation/char16_t/1.cc: Likewise.
1928         * testsuite/21_strings/basic_string_view/requirements/
1929         explicit_instantiation/char32_t/1.cc: Likewise.
1930         * testsuite/21_strings/char_traits/requirements/
1931         explicit_instantiation/char16_t/1.cc: Likewise.
1932         * testsuite/21_strings/char_traits/requirements/
1933         explicit_instantiation/char32_t/1.cc: Likewise.
1934         * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
1935         * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
1936         * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
1937         * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
1938         Likewise.
1939         * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
1940         Likewise.
1941         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
1942         Likewise.
1943         * testsuite/22_locale/codecvt/utf8.cc: Likewise.
1944         * testsuite/23_containers/vector/bool/72847.cc: Likewise.
1945         * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
1946         Likewise.
1947         * testsuite/experimental/string_view/requirements/
1948         explicit_instantiation/char16_t/1.cc: Likewise.
1949         * testsuite/experimental/string_view/requirements/
1950         explicit_instantiation/char32_t/1.cc: Likewise.
1951         * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
1952         1.cc: Likewise.
1953         * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
1954         1.cc: Likewise.
1956         * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1957         (random_condition, throw_value_random, throw_allocator_random)
1958         (std::hash<throw_value_random>): Do not define when <tr1/random> is
1959         not usable.
1960         * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
1961         define transactional memory support when <stdint.h> is not usable.
1963         * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
1964         implementation that doesn't depend on <stdint.h> types.
1965         * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
1966         std::size_t when std::uintptr_t is not usable.
1967         [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
1968         (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
1969         Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
1971         * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1972         (hash<u16string>, hash<u32string>): Remove dependency on
1973         _GLIBCXX_USE_C99_STDINT_TR1.
1974         * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1975         (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
1976         _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
1977         __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
1978         * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1979         (codecvt<char16_t, char, mbstate_t>)
1980         (codecvt<char32_t, char, mbstate_t>)
1981         (codecvt_byname<char16_t, char, mbstate_t>)
1982         (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
1983         on _GLIBCXX_USE_C99_STDINT_TR1.
1984         * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1985         (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
1986         * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1987         (char_traits<char16_t>, char_traits<char32_t>)
1988         (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
1989         on _GLIBCXX_USE_C99_STDINT_TR1.
1990         * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
1991         (u16string_view, u32string_view, hash<u16string_view>)
1992         (hash<u32string_view>, operator""sv(const char16_t, size_t))
1993         (operator""sv(const char32_t, size_t)): Likewise.
1994         * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1995         (hash<__u16vstring>, hash<__u32vstring>): Likewise.
1996         * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1997         (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
1998         (__u32sso_string, __u32rc_string): Likewise.
1999         * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
2000         (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
2001         * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
2002         (u16string_view, u32string_view, hash<u16string_view>)
2003         (hash<u32string_view>, operator""sv(const char16_t, size_t))
2004         (operator""sv(const char32_t, size_t)): Likewise.
2005         * src/c++11/codecvt.cc: Likewise.
2006         * src/c++98/locale_init.cc: Likewise.
2007         * src/c++98/localename.cc: Likewise.
2009         * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2010         (__atomic_futex_unsigned_base): Remove dependency on
2011         _GLIBCXX_USE_C99_STDINT_TR1 macro.
2012         * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2013         (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
2014         * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
2015         (uintmax_t): Define using predefined macros.
2016         * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
2017         (time_point, system_clock, high_resolution_clock, steady_clock): Remove
2018         dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
2019         (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
2020         [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
2021         long long when <stdint.h> is not usable.
2022         * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
2023         (condition_variable, condition_variable_any): Remove dependency on
2024         _GLIBCXX_USE_C99_STDINT_TR1.
2025         * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
2026         (packaged_task, async): Likewise.
2027         * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
2028         (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
2029         (once_flag, call_once): Likewise.
2030         * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
2031         * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
2032         (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
2033         * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
2034         (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
2035         (this_thread::sleep_until): Likewise.
2036         * src/c++11/chrono.cc: Remove dependency on
2037         _GLIBCXX_USE_C99_STDINT_TR1 macro.
2038         * src/c++11/condition_variable.cc: Likewise.
2039         * src/c++11/futex.cc: Likewise.
2040         * src/c++11/future.cc: Likewise.
2041         * src/c++11/mutex.cc: Likewise.
2042         * src/c++11/thread.cc: Likewise.
2043         * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
2044         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
2045         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
2046         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
2047         * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
2048         * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
2050 2018-07-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2052         PR libstdc++/77691
2053         * testsuite/experimental/memory_resource/new_delete_resource.cc:
2054         xfail execution on 32-bit Solaris/x86.
2056 2018-07-26  Marc Glisse  <marc.glisse@inria.fr>
2058         * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
2059         (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
2060         (vector::_M_move_assign): Reorder the swaps.
2062 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
2064         PR libstdc++/86676
2065         * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
2066         same alignment for post-release allocation.
2068 2018-07-25  Jonathan Wakely  <jwakely@redhat.com>
2070         PR libstdc++/86676
2071         * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
2072         buffer being misaligned and so returned pointer not being at start.
2074         * include/experimental/memory_resource: Include <cstddef> header.
2076         * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
2077         * src/Makefile.am: Add comment.
2078         * src/c++17/Makefile.in: Regenerate.
2080         * include/Makefile.am: Add new <bits/unique_lock.h> header.
2081         * include/Makefile.in: Regenerate.
2082         * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
2083         (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
2084         (unique_lock): Move definition to ...
2085         * include/bits/unique_lock.h: New header.
2086         [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
2087         [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
2088         (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
2089         (unique_lock::try_lock_for): Define only when <chrono> is usable.
2090         * include/std/condition_variable: Include <bits/unique_lock.h>.
2091         * include/std/mutex: Likewise.
2093 2018-07-24  Jonathan Wakely  <jwakely@redhat.com>
2095         * config/abi/pre/gnu.ver: Export new symbols.
2096         * configure: Regenerate.
2097         * include/Makefile.am: Add new <memory_resource> header.
2098         * include/Makefile.in: Regenerate.
2099         * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
2100         * include/std/memory_resource: New header.
2101         (memory_resource, polymorphic_allocator, new_delete_resource)
2102         (null_memory_resource, set_default_resource, get_default_resource)
2103         (pool_options, monotonic_buffer_resource): Define.
2104         * src/Makefile.am: Add c++17 directory.
2105         * src/Makefile.in: Regenerate.
2106         * src/c++11/Makefile.am: Fix comment.
2107         * src/c++17/Makefile.am: Add makefile for new sub-directory.
2108         * src/c++17/Makefile.in: Generate.
2109         * src/c++17/memory_resource.cc: New.
2110         (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
2111         (default_res, new_delete_resource, null_memory_resource)
2112         (set_default_resource, get_default_resource): Define.
2113         * testsuite/20_util/memory_resource/1.cc: New test.
2114         * testsuite/20_util/memory_resource/2.cc: New test.
2115         * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
2116         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
2117         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
2118         * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
2119         * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
2120         New test.
2121         * testsuite/20_util/polymorphic_allocator/1.cc: New test.
2122         * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
2123         * testsuite/20_util/polymorphic_allocator/select.cc: New test.
2124         * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
2125         Define concrete memory resource for testing.
2126         (__gnu_test::default_resource_mgr): Define RAII helper for changing
2127         default resource.
2129         PR libstdc++/86658
2130         * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
2131         parameter by reference, to avoid copying invalid iterators.
2132         * testsuite/25_algorithms/copy/86658.cc: New test.
2134         * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
2135         local variables for number of digits instead of type aliases.
2136         (__log2p1): Remove redundant branch also checked in __countl_zero.
2138         * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
2139         conditions. Add comments.
2140         * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
2141         * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
2142         * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
2144         * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
2145         (__uses_allocator_helper): Check conditions directly instead of
2146         using __is_erased_or_convertible.
2148         * include/experimental/memory_resource: Adjust comments and
2149         whitespace.
2150         (__resource_adaptor_imp): Add second template parameter for type of
2151         memory resource base class.
2152         (memory_resource): Define default constructor, destructor, copy
2153         constructor and copy assignment operator as defaulted.
2155         PR libstdc++/70966
2156         * include/experimental/memory_resource (__get_default_resource): Use
2157         placement new to create an object with dynamic storage duration.
2159 2018-07-23  Jonathan Wakely  <jwakely@redhat.com>
2161         PR libstdc++/70940
2162         * include/experimental/memory_resource
2163         (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
2164         (__resource_adaptor_common::__guaranteed_alignment): New helper to
2165         give maximum alignment an allocator guarantees. Specialize for known
2166         allocators using new and malloc.
2167         (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
2168         (__resource_adaptor_imp::do_deallocate): Likewise.
2169         * testsuite/experimental/memory_resource/new_delete_resource.cc:
2170         Check that new and delete are called with expected sizes.
2172 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
2174         PR libstdc++/86595
2175         * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
2176         noexcept.
2178 2018-07-20  Fangrui Song  <maskray@google.com>
2180         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
2181         _GLIBCXX_VISIBILITY(default).
2183 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
2185         PR libstdc++/86603
2186         * include/std/version: Move __cpp_lib_list_remove_return_type macro.
2188 2018-07-19  Jonathan Wakely  <jwakely@redhat.com>
2190         * include/std/type_traits (__is_member_object_pointer_helper): Use
2191         __not_<is_function<_Tp>>::type instead of integral_constant.
2192         (__is_member_function_pointer_helper): Likewise for
2193         is_function<_Tp>::type.
2194         (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
2195         (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
2196         (is_trivially_constructible): Remove redundant use of
2197         is_constructible.
2198         (__is_trivially_copy_assignable_impl): Remove redundant use of
2199         is_copy_assignable.
2200         (__is_trivially_move_assignable_impl): Remove redundant use of
2201         is_move_assignable.
2202         (is_trivially_destructible): Use __bool_constant.
2203         * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
2204         tests for scalar types.
2206 2018-07-19  Glen Joseph Fernandes  <glenjofe@gmail.com>
2208         * include/bits/stl_algobase.h (__copy_move_a): Used
2209         __is_trivially_copyable.
2210         (__copy_move_backward_a): Likewise.
2211         * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
2212         New test.
2214 2018-07-17  Jonathan Wakely  <jwakely@redhat.com>
2216         PR libstdc++/86450
2217         * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
2218         (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
2219         * configure: Regenerate.
2220         * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
2221         * doc/Makefile.in: Regenerate.
2222         * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
2223         * include/Makefile.in: Regenerate.
2224         * libsupc++/Makefile.in: Regenerate.
2225         * po/Makefile.in: Regenerate.
2226         * python/Makefile.in: Regenerate.
2227         * src/Makefile.in: Regenerate.
2228         * src/c++11/Makefile.in: Regenerate.
2229         * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
2230         from -Wabi=2 that don't affect exported symbols.
2231         * src/c++98/Makefile.in: Regenerate.
2232         * src/filesystem/Makefile.in: Regenerate.
2233         * testsuite/Makefile.in: Regenerate.
2235         * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
2236         (_Async_state_common::_M_join): Simplify use of std::call_once and
2237         corresponding explicit instantiation.
2238         (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
2239         (__bind_simple): Remove definitions and explicit instantiation that
2240         are not required by exported symbols.
2242 2018-07-16  Jonathan Wakely  <jwakely@redhat.com>
2244         * scripts/create_testsuite_files: Fix typo in comment.
2246         PR libstdc++/86537
2247         * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
2248         non-standard partial specialization.
2249         * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
2250         (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
2251         * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
2253 2018-07-16  Andreas Krebbel  <krebbel@linux.ibm.com>
2255         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
2256         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
2257         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
2259 2018-07-06  François Dumont  <fdumont@gcc.gnu.org>
2261         * include/debug/functions.h (__gnu_debug::__check_string): Move...
2262         * include/debug/string (__gnu_debug::__check_string): ... here.
2263         (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
2264         (__glibcxx_check_string_n_constructor): New.
2265         (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
2266         Use latter.
2267         (__glibcxx_check_string_constructor): New.
2268         (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
2269         Use latter.
2270         * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
2271         * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
2273 2018-07-06  Jonathan Wakely  <jwakely@redhat.com>
2275         PR libstdc++/84928 use std::move in <numeric> algorithms
2276         * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
2277         conditionally move, according to __cplusplus value.
2278         (accumulate, inner_product, partial_sum, adjacent_difference): Use
2279         _GLIBCXX_MOVE_IF_20.
2280         * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
2281         * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
2282         * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
2283         * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
2285         * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
2287         P0935R0 Eradicating unnecessarily explicit default constructors
2288         * config/abi/pre/gnu.ver: Tighten existing patterns and export new
2289         default constructor symbols.
2290         * include/std/sstream (basic_stringbuf, basic_istringstream)
2291         (basic_ostringstream, basic_stringstream): Remove default arguments
2292         from explicit constructors taking ios_base::openmode and add separate
2293         non-explicit default constructors.
2294         * testsuite/27_io/basic_istringstream/cons/default.cc: New.
2295         * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
2296         * testsuite/27_io/basic_stringstream/cons/default.cc: New.
2297         * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
2298         * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
2300         * include/std/variant (__accepted_index): Use void_t.
2302 2018-07-05  Jonathan Wakely  <jwakely@redhat.com>
2304         PR libstdc++/85831
2305         * config/abi/pre/gnu.ver: Export move constructors and move
2306         assignment operators for std::logic_error and std::runtime_error.
2307         * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
2308         _GLIBCXX_USE_NOEXCEPT.
2309         (logic_error, runtime_error): Declare move constructors and move
2310         assignment operators. When not declared already, define copy
2311         constructors and copy assignment operators as explicit-defaulted.
2312         (domain_error, invalid_argument, length_error, out_of_range)
2313         (overflow_error, underflow_error): Define move constructors and move
2314         assignment operators as explicitly-defaulted.
2315         * libsupc++/exception.h (exception): Likewise.
2316         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
2317         move constructors and move assignment operators as defaulted.
2318         * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
2319         assignment operators are defined.
2321         * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
2322         COW strings.
2323         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2324         Likewise.
2325         * testsuite/21_strings/basic_string/requirements/
2326         explicit_instantiation/debug.cc: Likewise.
2328         PR libstdc++/58265
2329         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2330         (basic_string::assign(basic_string&&)): Add conditional noexcept
2331         depending on the allocator's is_always_equal property (LWG 2063).
2332         * testsuite/21_strings/basic_string/modifiers/assign/char/
2333         move_assign.cc: Check for non-throwing exception specification.
2334         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
2335         move_assign.cc: Likewise.
2337         PR libstdc++/58265
2338         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2339         [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
2340         Add GLIBCXX_NOEXCEPT.
2341         (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
2342         to depend on the allocator's is_always_equal property (LWG 2063).
2343         (basic_string::swap(basic_string&)): Likewise.
2344         * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
2345         (basic_string::swap(basic_string&)): Likewise.
2346         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
2347         Check is_nothrow_move_assignable.
2348         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
2349         Check is_nothrow_move_assignable.
2350         * testsuite/21_strings/basic_string/cons/char/
2351         noexcept_move_construct.cc: Likewise.
2352         * testsuite/21_strings/basic_string/cons/wchar_t/
2353         noexcept_move_construct.cc: Likewise.
2355 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2357         P0646R1 Improving the Return Value of Erase-Like Algorithms I
2358         * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
2359         Define.
2360         (forward_list::__remove_return_type): Define typedef as size_type or
2361         void, according to __cplusplus value.
2362         (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2363         empty, according to __cplusplus value.
2364         (forward_list::remove, forward_list::unique): Use typedef and macro
2365         to change return type and add abi-tag for C++2a.
2366         (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
2367         typedef to change return type for C++2a.
2368         * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
2369         (forward_list::remove, forward_list::remove_if<Pred>)
2370         (forward_list::unique<BinPred>): Return number of removed elements
2371         for C++2a.
2372         * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
2373         (list::remove, list::unique, list::remove_if<Predicate>)
2374         (list::unique<BinaryPredicate>): Return number of removed elements
2375         for C++2a.
2376         * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
2377         (list::__remove_return_type): Define typedef as size_type or
2378         void, according to __cplusplus value.
2379         (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2380         empty, according to __cplusplus value.
2381         (list::remove, list::unique): Use typedef and macro to change return
2382         type and add abi-tag for C++2a.
2383         (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
2384         typedef to change return type for C++2a.
2385         * include/std/version (__cpp_lib_list_remove_return_type): Define.
2386         * testsuite/23_containers/forward_list/operations/
2387         remove_cxx20_return.cc: New.
2388         * testsuite/23_containers/forward_list/operations/
2389         unique_cxx20_return.cc: New.
2391         P0458R2 Checking for Existence of an Element in Associative Containers
2392         * include/bits/stl_map.h (map::contains): Add for C++2a.
2393         * include/bits/stl_multimap.h (multimap::contains): Likewise.
2394         * include/bits/stl_multiset.h (multiset::contains): Likewise.
2395         * include/bits/stl_set.h (set::contains): Likewise.
2396         * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
2397         (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
2398         (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
2399         (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
2400         * include/bits/unordered_map.h (unordered_map::contains)
2401         (unordered_multimap::contains): Add for C++2a.
2402         * include/bits/unordered_set.h (unordered_set::contains)
2403         (unordered_multiset::contains): Likewise.
2404         * testsuite/23_containers/map/operations/contains.cc: New.
2405         * testsuite/23_containers/multimap/operations/contains.cc: New.
2406         * testsuite/23_containers/multiset/operations/contains.cc: New.
2407         * testsuite/23_containers/set/operations/contains.cc: New.
2408         * testsuite/23_containers/unordered_map/operations/contains.cc: New.
2409         * testsuite/23_containers/unordered_multimap/operations/contains.cc:
2410         New.
2411         * testsuite/23_containers/unordered_multiset/operations/contains.cc:
2412         New.
2413         * testsuite/23_containers/unordered_set/operations/contains.cc: New.
2415 2018-07-04  François Dumont  <fdumont@gcc.gnu.org>
2417         PR libstdc++/86272
2418         * include/debug/string
2419         (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
2420         Use __glibcxx_check_insert_range.
2421         * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
2422         __gnu_debug::string when _GLIBCXX_DEBUG.
2423         * 21_strings/basic_string/init-list.cc: Likewise.
2424         * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
2425         * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
2426         * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
2427         * 21_strings/basic_string/types/1.cc: Likewise.
2429 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2431         * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
2432         target for std::random_device.
2433         * testsuite/26_numerics/random/random_device/cons/default.cc:
2434         Likewise.
2435         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
2436         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2437         * testsuite/experimental/random/randint.cc: Likewise.
2438         * testsuite/lib/libstdc++.exp
2439         (check_effective_target_random_device): New proc.
2441 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2442             Jakub Jelinek  <jakub@redhat.com>
2444         * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
2446 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2448         PR libstdc++/86398
2449         * include/std/type_traits (is_trivially_constructible): Check
2450         is_constructible before __is_trivially_constructible.
2451         * testsuite/20_util/is_trivially_constructible/value.cc: Add more
2452         tests, including negative cases.
2453         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
2454         zero for dg-error lineno.
2455         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
2456         Likewise.
2458         * include/std/bit (__rotl, __rotr): Avoid branch.
2459         (_If_is_unsigned_integer): Use remove_cv_t.
2460         * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
2462 2018-07-03  Jonathan Wakely  <jwakely@redhat.com>
2464         P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
2465         * include/Makefile.am: Add new header.
2466         * include/Makefile.in: Regenerate.
2467         * include/precompiled/stdc++.h: Include new header.
2468         * include/std/bit: New header.
2469         (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
2470         (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
2471         Define for C++14.
2472         [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
2473         (countr_one, popcount): Define for C++2a. Also overload for std::byte.
2474         (ispow2, ceil2, floor2, log2p1): Define for C++2a.
2475         [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
2476         std::byte.
2477         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
2478         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
2479         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
2480         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
2481         * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
2482         * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
2483         * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
2484         * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
2485         * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
2486         * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
2488         * include/bits/alloc_traits.h: Remove redundant preprocessor
2489         condition.
2491 2018-07-03  François Dumont  <fdumont@gcc.gnu.org>
2493         * include/bits/stl_algobase.h (__niter_wrap): New.
2494         (__copy_move_a2(_II, _II, _OI)): Use latter.
2495         (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
2496         (fill_n(_OI, _Size, const _Tp&)): Likewise.
2497         (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
2498         * include/debug/stl_iterator.h
2499         (std::__niter_base(const __gnu_cxx::_Safe_iterator<
2500         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
2501         * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
2502         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
2504 2018-07-02  Jonathan Wakely  <jwakely@redhat.com>
2506         P0758R1 Implicit conversion traits
2507         * include/std/type_traits [__cplusplus > 201703]
2508         (__is_convertible_helper::__is_nothrow_type): Define new member.
2509         (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
2510         noexcept.
2511         (__is_convertible_helper<_From, _To, false>::__test_nothrow)
2512         (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
2513         new members.
2514         (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
2515         * testsuite/20_util/is_nothrow_convertible/value.cc: New.
2516         * testsuite/20_util/is_nothrow_convertible/requirements/
2517         explicit_instantiation.cc: New.
2518         * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
2519         New.
2521         P0887R1 The identity metafunction
2522         * include/std/type_traits (type_identity, type_identity_t): Define
2523         for C++2a.
2524         * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
2525         * testsuite/20_util/type_identity/requirements/
2526         explicit_instantiation.cc:New.
2527         * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
2529         * include/bits/regex.h (sub_match::operator string_type): Call str().
2530         (sub_match::compare): Use _M_str() instead of str().
2531         (sub_match::_M_compare): New public function.
2532         (sub_match::__string_view): New helper type.
2533         (sub_match::_M_str): New overloaded functions to avoid creating a
2534         string_type object when not needed.
2535         (operator==, operator!=, operator<, operator>, operator<=, operator>=):
2536         Use sub_match::_M_compare instead of creating string_type objects.
2537         Fix Doxygen comments.
2538         * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
2539         (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
2540         simplify.
2541         (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
2542         __enable_if_t.
2543         * include/std/type_traits (__enable_if_t): Define for C++11.
2544         * testsuite/28_regex/sub_match/compare.cc: New.
2545         * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
2546         trait.
2547         (input_iterator_wrapper): Use remove_cv for value_type argument of
2548         std::iterator base class.
2550 2018-06-29  Jonathan Wakely  <jwakely@redhat.com>
2552         * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
2553         Add whitespace to dejagnu directive.
2554         * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
2556 2018-06-27  François Dumont  <fdumont@gcc.gnu.org>
2558         * include/bits/stl_vector.h
2559         (struct _Vector_base<>::_Vector_impl_data): New.
2560         (struct _Vector_base<>::_Vector_impl): Inherit from latter.
2561         (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
2562         (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
2563         (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
2564         (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
2565         (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
2566         (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
2567         (_Vector_base()): Default.
2568         (_Vector_base(_Vector_base&&)): Default.
2569         (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
2570         (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
2571         (_Vector_base::_M_create_storage(size_t)): Make protected.
2572         (vector()): Default.
2573         (vector(vector&&)): Default.
2574         (vector(vector&&, const allocator_type&, true_type)): New.
2575         (vector(vector&&, const allocator_type&, false_type)): New.
2576         (vector(vector&&, const allocator_type&)): Use latters.
2577         (vector(_InputIte, _InputIte, const allocator_type&)): Call
2578         _M_range_initialize directly.
2579         * include/debug/vector
2580         (vector(vector&&, const allocator_type&)): Add noexcept qualification.
2581         * testsuite/23_containers/vector/allocator/default_init.cc: New.
2582         * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
2583         static assertions.
2585 2018-06-27  Jonathan Wakely  <jwakely@redhat.com>
2587         * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
2588         (__is_byte<byte>): Define specialization for std::byte.
2590         PR libstdc++/86138
2591         * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
2592         Declare explicit instantiations of COW empty reps and I/O functions.
2594 2018-06-26  David Edelsohn  <dje.gcc@gmail.com>
2596         * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
2597         directives.
2598         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2600 2018-06-26  Jonathan Wakely  <jwakely@redhat.com>
2602         * include/bits/regex.tcc (regex_iterator::operator==): Add missing
2603         noexcept.
2605 2018-06-25  Jonathan Wakely  <jwakely@redhat.com>
2607         PR libstdc++/86112
2608         * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
2609         Replace dict comprehension.
2611         PR libstdc++/81092
2612         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
2614         PR libstdc++/86292
2615         * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
2616         Add try-catch block.
2617         * testsuite/23_containers/vector/cons/86292.cc: New.
2619         * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
2621         * include/experimental/algorithm (sample, shuffle): Add new overloads
2622         using per-thread random number engine.
2623         * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
2624         dependencies by using __gnu_test::test_container.
2625         * testsuite/experimental/algorithm/sample-2.cc: New.
2626         * testsuite/experimental/algorithm/shuffle.cc: New.
2628 2018-06-22  Jonathan Wakely  <jwakely@redhat.com>
2630         * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
2631         different size_t mangling on 32-bit targets.
2633         PR libstdc++/86280
2634         * include/experimental/memory_resource
2635         (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
2636         enough for result of left shift.
2638         PR libstdc++/86138
2639         * include/bits/basic_string.tcc:
2640         [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
2641         (basic_string<char>::_Rep::_S_empty_rep_storage)
2642         (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
2643         instantiation declarations.
2644         [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
2645         explicit instantiation declarations.
2646         * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
2647         * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
2649 2018-06-21  Jonathan Wakely  <jwakely@redhat.com>
2651         PR libstdc++/83328
2652         * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
2653         * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
2654         * configure: Regenerate.
2655         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2656         (basic_string::insert(const_iterator, initializer_list<C>)): Add.
2657         [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
2658         (basic_string::insert(iterator, initializer_list<C>)): Suppress
2659         definition.
2660         * include/debug/string (basic_string::insert(iterator, C)): Change
2661         first parameter to const_iterator.
2662         (basic_string::insert(iterator, size_type, C)): Likewise. Change
2663         return type to iterator.
2664         (basic_string::insert(iterator, InputIterator, InputIterator)):
2665         Likewise.
2666         (basic_string::insert(iterator, initializer_list<C>)): Change first
2667         parameter to const_iterator and return type to iterator.
2668         * src/c++11/string-inst.cc: Extend comment.
2669         * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
2670         New.
2671         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
2672         New.
2673         * testsuite/util/testsuite_abi.cc: Add new symbol version.
2675         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
2677         PR libstdc++/70940
2678         * include/experimental/memory_resource
2679         (__resource_adaptor_imp::do_deallocate): Add missing return.
2680         * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
2681         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
2682         resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
2683         __gnu_cxx::malloc_allocator.
2685         PR libstdc++/70940
2686         * include/experimental/memory_resource (__resource_adaptor_common):
2687         New base class.
2688         (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
2689         pointer from unaligned, and vice versa.
2690         (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
2691         allocated pointer to meet alignment request.
2692         (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
2693         original pointer for deallocation.
2694         (__resource_adaptor_imp::do_is_equal): Reformat.
2695         (__resource_adaptor_imp::_S_aligned_size): Remove.
2696         (__resource_adaptor_imp::_S_supported): Remove.
2697         (new_delete_resource): Use __gnu_cxx::new_allocator.
2698         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
2699         extended alignments and use debug_allocator to check for matching
2700         allocate/deallocate pairs.
2702 2018-06-21  François Dumont  <fdumont@gcc.gnu.org>
2704         * include/debug/safe_iterator.h
2705         (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
2706         Compare __x base iterator with a value-initialized iterator of the
2707         same type.
2709 2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
2711         PR libstdc++/70966
2712         * include/experimental/memory_resource (__resource_adaptor_imp): Add
2713         static assertions to enforce requirements on pointer types.
2714         (__resource_adaptor_imp::get_allocator()): Add noexcept.
2715         (new_delete_resource, null_memory_resource): Return address of an
2716         object with dynamic storage duration.
2717         (__null_memory_resource): Remove.
2718         * testsuite/experimental/memory_resource/70966.cc: New.
2720         * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
2721         missed from recent commit.
2723 2018-06-19  Jonathan Wakely  <jwakely@redhat.com>
2725         * include/std/utility: Remove unused <exception> header.
2727 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
2729         LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
2730         * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
2731         (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
2732         a specialization of std::pair.
2733         * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
2734         pair elements are constructed correctly.
2736         LWG 2989 hide path iostream operators from normal lookup
2737         * include/bits/fs_path.h (operator<<, operator>>): Define inline as
2738         friends.
2739         * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
2741         LWG 3050 Fix cv-qualification of convertibility constraints
2742         * include/std/chrono (duration, operator*, operator/, operator%): Use
2743         const-qualified type as source type in is_convertible constraints.
2744         * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
2745         * testsuite/20_util/duration/cons/dr3050.cc: New.
2746         * testsuite/20_util/duration/literals/range.cc: Rename to...
2747         * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
2748         dg-error lineno.
2750 2018-06-18  Maya Rashish  <coypu@sdf.org>
2752         * crossconfig.m4: Handle OpenBSD just like NetBSD.
2753         * configure: Rebuilt.
2755 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
2757         P0754R2 <version> header
2758         * include/Makefile.am: Add new header.
2759         * include/Makefile.in: Regenerate.
2760         * include/bits/c++config: Change doxygen comment to suggest <version>
2761         instead of <iosfwd>.
2762         * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
2763         unconditionally.  Add C++17 and C++20 headers.
2764         * include/std/version: New header.
2765         * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
2766         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
2767         * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
2768         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
2769         * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
2770         * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
2771         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
2772         New.
2773         * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
2774         * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
2775         * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
2776         * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
2777         * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
2778         * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
2779         * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
2780         New.
2781         * testsuite/18_support/headers/version/macros.cc: New.
2782         * testsuite/18_support/headers/version/macros.cc: New.
2784         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
2785         enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
2786         symlink.
2787         * config.h.in: Regenerate.
2788         * configure: Regenerate.
2789         * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
2791         LWG 3035. std::allocator's constructors should be constexpr
2792         * include/bits/allocator.h (allocator): Add constexpr to constructors
2793         for C++2a. Replace dynamic exception specifications with NOTHROW
2794         macro.
2795         (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
2796         NOTHROW.
2797         * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
2798         * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
2799         to constructors for C++2a.
2800         * include/ext/new_allocator.h (new_allocator): Likewise.
2802 2018-06-16  Jonathan Wakely  <jwakely@redhat.com>
2804         LWG 3076 basic_string CTAD ambiguity
2805         * doc/xml/manual/intro.xml: Document LWG 3076 change.
2806         * include/bits/basic_string.h
2807         [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
2808         (basic_string(const _CharT*, const _Alloc&)): Turn into a function
2809         template constrained by _RequireAllocator.
2810         (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
2811         * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
2812         Define.
2813         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
2814         deduction
2815         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2816         Likewise.
2818 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
2820         PR libstdc++/86169
2821         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2822         (basic_string::data()): Unshare string.
2823         * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
2824         New.
2826         * include/std/string_view (basic_string_view(const CharT*)): Remove
2827         check for null pointer and add nonnull attribute.
2828         (compare(const CharT*), compare(size_type, size_type, const CharT*))
2829         (find(const CharT*, size_type), rfind(const CharT*, size_type))
2830         (find_first_of(const CharT*, size_type))
2831         (find_last_of(const CharT*, size_type))
2832         (find_first_not_of(const CharT*, size_type))
2833         (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
2834         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
2835         * testsuite/21_strings/basic_string_view/operations/compare/char/
2836         nonnull.cc: New.
2837         * testsuite/21_strings/basic_string_view/operations/find/char/
2838         nonnull.cc: New.
2839         * testsuite/21_strings/basic_string_view/operations/rfind/char/
2840         nonnull.cc: New.
2842         PR libstdc++/86168
2843         * include/bits/random.h (random_device(const string&)): Remove
2844         default argument.
2846         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
2847         define for C++17 and above.
2849         LWG 2993 reference_wrapper<T> conversion from T&&
2850         * doc/xml/manual/intro.xml: Document LWG 2993 change.
2851         * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
2852         (reference_wrapper(_Tp&&)): Remove.
2853         (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
2854         template.
2855         (reference_wrapper): Add deduction guide.
2856         * testsuite/20_util/reference_wrapper/deduction.cc: New.
2857         * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
2859         LWG 3039 Unnecessary decay in thread and packaged_task
2860         * include/std/future (__constrain_pkgdtask): Replace with ...
2861         (packaged_task::__not_same): New alias template, using
2862         __remove_cvref_t instead of decay.
2863         * include/std/thread (thread::__not_same): Add comment.
2865 2018-06-14  Jonathan Wakely  <jwakely@redhat.com>
2867         LWG 3075 basic_string needs deduction guides from basic_string_view
2868         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
2869         deduction from string views.
2870         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2871         Likewise.
2873         LWG 3074 make scalar types non-deduced in valarray non-member functions
2874         * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
2875         scalar parameters to be a non-deduced context.
2876         * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
2877         whitespace.
2878         * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
2879         * testsuite/26_numerics/valarray/transcend.cc: New.
2881         * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
2882         Move back to <utility>.
2883         * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
2884         Restore to here.
2886         P0935R0 Eradicating unnecessarily explicit default constructors
2887         * include/backward/strstream (strstreambuf): Add non-explicit default
2888         constructor.
2889         * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
2890         Likewise.
2891         * include/bits/regex.h (match_results): Likewise.
2892         * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
2893         default constructor.
2894         * testsuite/22_locale/conversions/string/1.cc: Likewise.
2895         * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
2896         * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
2898         * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
2899         macro from <utility> and change type to long.
2900         * include/std/utility (__cpp_lib_tuple_element_t): Remove.
2901         * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
2902         macro.
2904         P0935R0 Eradicating unnecessarily explicit default constructors
2905         * include/bits/random.h (uniform_real_distribution::param_type)
2906         (normal_distribution::param_type, lognormal_distribution::param_type)
2907         (gamma_distribution::param_type, chi_squared_distribution::param_type)
2908         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
2909         (student_t_distribution::param_type)
2910         (bernoulli_distribution::param_type)
2911         (binomial_distribution::param_type)
2912         (geometric_distribution::param_type)
2913         (negative_binomial_distribution::param_type)
2914         (poisson_distribution::param_type)
2915         (exponential_distribution::param_type)
2916         (weibull_distribution::param_type)
2917         (extreme_value_distribution::param_type): Add non-explicit default
2918         constructors. Remove default argument for first parameter of explicit
2919         constructors.
2920         * include/bits/uniform_int_dist.h
2921         (uniform_int_distribution::param_type): Likewise.
2922         * include/ext/random
2923         (beta_distribution::param_type, rice_distribution::param_type)
2924         (nakagami_distribution::param_type, pareto_distribution::param_type)
2925         (k_distribution::param_type, arcsine_distribution::param_type)
2926         (hoyt_distribution::param_type, triangular_distribution::param_type)
2927         (von_mises_distribution::param_type)
2928         (hypergeometric_distribution::param_type)
2929         (logistic_distribution::param_type)
2930         (uniform_inside_sphere_distribution::param_type): Likewise.
2931         (uniform_on_sphere_distribution::param_type): Make default constructor
2932         non-explicit.
2933         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
2934         Test param_type for non-explicit default constructor.
2935         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
2936         Likewise.
2937         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
2938         Likewise.
2939         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
2940         Likewise.
2941         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
2942         Likewise.
2943         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
2944         Likewise.
2945         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
2946         Likewise.
2947         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
2948         Likewise.
2949         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
2950         Likewise.
2951         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
2952         Likewise.
2953         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
2954         Likewise.
2955         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
2956         Likewise.
2957         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
2958         Likewise.
2959         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
2960         Likewise.
2961         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
2962         Likewise.
2963         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
2964         Likewise.
2965         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
2966         Likewise.
2967         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
2968         Likewise.
2969         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
2970         Likewise.
2971         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
2972         Likewise.
2973         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
2974         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
2975         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
2976         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
2977         Likewise.
2978         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
2979         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
2980         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
2981         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
2982         Likewise.
2983         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
2984         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
2985         * testsuite/ext/random/triangular_distribution/cons/default.cc:
2986         Likewise.
2987         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
2988         Likewise.
2989         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
2990         Likewise.
2991         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
2992         Likewise.
2994 2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
2995             Jonathan Wakely  <jwakely@redhat.com>
2997         PR libstdc++/83982
2998         * include/bits/vector.tcc (vector::_M_default_append(size_type)):
2999         Default-construct new elements before moving existing ones.
3000         * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
3001         New.
3003 2018-06-13  Jonathan Wakely  <jwakely@redhat.com>
3005         PR libstdc++/86127
3006         * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
3007         unused typedef.
3008         (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
3009         Use node allocator to create and destroy elements.
3010         (forward_list::_Tp_alloc_type): Remove unused typedef.
3011         (forward_list::_Alloc_traits): Use allocator_traits instead of
3012         __gnu_cxx::__alloc_traits.
3014 2018-06-13  François Dumont  <fdumont@gcc.gnu.org>
3016         * include/debug/helper_functions.h
3017         (__gnu_debug::_Safe_iterator<>): Add declaration.
3018         (__can_advance(_Ite, _Size)): New.
3019         (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
3020         * include/debug/functions.h
3021         (__gnu_debug::_Safe_iterator<>): Remove declaration.
3022         * include/debug/stl_iterator.h
3023         (__can_advance(const _Safe_iterator<>&)): New definition.
3024         * include/debug/stl_iterator.h
3025         (__can_advance(const std::reverse_iterator<>&, _Size)): New.
3026         (__can_advance(const std::move_iterator<>&, _Size)): New.
3027         * include/debug/macros.h (__glibcxx_check_can_increment): New.
3028         * include/debug/debug.h (__glibcxx_requires_can_increment): New.
3029         * include/bits/stl_algobase.h (fill_n): Use latter.
3030         * testsuite/25_algorithms/fill_n/2.cc: New.
3031         * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
3032         * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
3033         * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
3034         * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
3036         * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
3037         (__glibcxx_requires_can_decrement_range): New.
3039 2018-06-12  François Dumont  <fdumont@gcc.gnu.org>
3041         * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
3042         (__glibcxx_check_can_decrement_range): New.
3043         * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
3044         __glibcxx_requires_can_increment_range.
3045         (std::move(_II, _II, _OI)): Likewise.
3046         (std::copy_backward(_BI, _BI, _BI2)): Use
3047         __glibcxx_requires_can_decrement_range.
3048         (std::move_backward(_BI, _BI, _BI2)): Likewise.
3049         * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
3050         * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
3051         * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
3052         * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
3053         * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
3054         * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
3056 2018-06-12  Jonathan Wakely  <jwakely@redhat.com>
3058         P0935R0 Eradicating unnecessarily explicit default constructors
3059         * include/bits/random.h (linear_congruential_engine)
3060         (mersenne_twister_engine, subtract_with_carry_engine, random_device)
3061         (uniform_real_distribution, normal_distribution)
3062         (lognormal_distribution, gamma_distribution, chi_squared_distribution)
3063         (cauchy_distribution, fisher_f_distribution, student_t_distribution)
3064         (bernoulli_distribution, binomial_distribution,geometric_distribution)
3065         (negative_binomial_distribution, exponential_distribution)
3066         (weibull_distribution, extreme_value_distribution): Add non-explicit
3067         default constructors. Remove default argument for first parameter of
3068         explicit constructors.
3069         (piecewise_constant_distribution, piecewise_linear_distribution):
3070         Make default constructor non-explicit.
3071         * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
3072         non-explicit default constructors. Remove default argument for first
3073         parameter of explicit constructor.
3074         * include/ext/random
3075         (simd_fast_mersenne_twister_engine, beta_distribution)
3076         (rice_distribution, nakagami_distribution, pareto_distribution)
3077         (k_distribution, arcsine_distribution, hoyt_distribution)
3078         (triangular_distribution, von_mises_distribution)
3079         (hypergeometric_distribution, logistic_distribution)
3080         (uniform_inside_sphere_distribution): Likewise.
3081         (uniform_on_sphere_distribution): Make default constructor
3082         non-explicit.
3083         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
3084         Test for non-explicit default constructor. Fix references to standard.
3085         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
3086         Likewise.
3087         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
3088         Likewise.
3089         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
3090         Likewise.
3091         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
3092         Likewise.
3093         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
3094         Likewise.
3095         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
3096         Likewise.
3097         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
3098         Likewise.
3099         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
3100         Likewise.
3101         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
3102         Likewise.
3103         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
3104         Likewise.
3105         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
3106         Likewise.
3107         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
3108         Likewise.
3109         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
3110         Likewise.
3111         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
3112         Likewise.
3113         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
3114         Likewise.
3115         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
3116         Likewise.
3117         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
3118         Likewise.
3119         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
3120         Likewise.
3121         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
3122         Likewise.
3123         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
3124         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
3125         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
3126         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
3127         Likewise.
3128         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
3129         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
3130         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
3131         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
3132         Likewise.
3133         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
3134         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
3135         * testsuite/ext/random/triangular_distribution/cons/default.cc:
3136         Likewise.
3137         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
3138         Likewise.
3139         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
3140         Likewise.
3141         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
3142         Likewise.
3143         * testsuite/util/testsuite_common_types.h
3144         (implicitly_default_constructible): New helper.
3146 2018-06-08  Jonathan Wakely  <jwakely@redhat.com>
3148         * include/bits/ios_base.h (ios::Init::Init(const Init&))
3149         (ios::Init::operator=): Define as defaulted.
3150         * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
3151         Likewise.
3152         * include/bits/stream_iterator.h (istream_iterator::operator=)
3153         (ostream_iterator::operator=): Likewise.
3154         * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
3155         Likewise.
3156         * include/std/bitset (bitset::reference::reference(const reference&)):
3157         Likewise.
3158         * include/std/complex (complex<float>::complex(const complex&))
3159         (complex<double>::complex(const complex&))
3160         (complex<long double>::complex(const complex&)): Likewise.
3162 2018-06-07  Jonathan Wakely  <jwakely@redhat.com>
3164         * include/bits/regex.h (sub_match): Add noexcept to default
3165         constructor and length observer.
3166         (match_results): Add noexcept to default constructor and observers
3167         with no preconditions. Define destructor as defaulted.
3168         (operator==, operator!=, swap): Add noexcept.
3169         (regex_iterator): Add default member initializers and define default
3170         constructor and destructor as defaulted. Add noexcept to equality
3171         and dereference operators.
3173 2018-06-07  François Dumont  <fdumont@gcc.gnu.org>
3175         * src/c++11/debug.cc
3176         (_Safe_iterator_base::_M_detach()): Reset state only if needed.
3177         (_Safe_iterator_base::_M_detach_single()): Likewise.
3178         (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
3179         (_Safe_local_iterator_base::_M_detach_single()): Likewise.
3181 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
3183         * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
3184         move of const value.
3186 2018-06-06  Jakub Jelinek  <jakub@redhat.com>
3188         PR c++/86068
3189         * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
3190         rather than __cpp_transactional_memory >= 201505L.
3192 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
3194         PR libstdc++/86008
3195         * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
3196         Define new partial specialization.
3197         * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
3198         new overload.
3199         (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
3200         value not reference for iteration.
3201         * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
3202         comment.
3203         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
3204         * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
3205         comment.
3207 2018-06-05  Jonathan Wakely  <jwakely@redhat.com>
3209         * include/std/type_traits: Fix comment typos.
3211         * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
3212         mingw* targets.
3213         * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
3214         * testsuite/experimental/filesystem/operations/read_symlink.cc:
3215         Likewise.
3217 2018-06-05  François Dumont  <fdumont@gcc.gnu.org>
3219         * include/bits/stl_tempbuf.h
3220         (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
3221         (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
3222         * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
3223         * include/bits/stl_algo.h (__stable_partition): Adapt.
3224         (__inplace_merge): Adapt.
3225         (__stable_sort): Adapt.
3227 2018-06-04  Jonathan Wakely  <jwakely@redhat.com>
3229         PR libstdc++/85930
3230         * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
3231         unconditionally. Remove redundant declaration.
3232         [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
3233         alignment-specifier.
3235         * include/bits/postypes.h (fpos): Define special members as defaulted.
3237         PR libstdc++/85930
3238         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
3239         the static variable correctly.
3241 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
3243         PR libstdc++/78870 support std::filesystem on Windows
3244         * config.h.in: Regenerate.
3245         * configure: Regenerate.
3246         * configure.ac: Check for link, readlink and symlink.
3247         * include/bits/fs_path.h (path::operator/=(const path&)): Move
3248         definition out of class body.
3249         (path::is_absolute(), path::_M_append(path)): Likewise.
3250         (operator<<(basic_ostream, const path&)): Use std::quoted directly.
3251         (operator>>(basic_istream, path&)): Likewise.
3252         (u8path): Reorder definitions and fix Windows implementation.
3253         (path::is_absolute()): Define inline and fix for Windows.
3254         [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
3255         Define POSIX version inline.
3256         (path::_M_append(path)): Define inline.
3257         * include/experimental/bits/fs_path.h (path::is_absolute()): Move
3258         definition out of class body.
3259         (operator<<(basic_ostream, const path&)): Fix type of delimiter and
3260         escape characters.
3261         (operator>>(basic_istream, path&)): Likewise.
3262         (path::is_absolute()): Define inline and fix for Windows.
3263         * src/filesystem/dir-common.h (__gnu_posix): New namespace.
3264         (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
3265         (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
3266         Define as adaptors for Windows functions/types or as
3267         using-declarations for POSIX functions/types.
3268         (_Dir_base, get_file_type): Qualify names to use declarations from
3269         __gnu_posix namespace.
3270         (_Dir_base::is_dor_or_dotdot): New helper functions.
3271         * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
3272         names to use declarations from __gnu_posix namespace.
3273         * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
3274         (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
3275         (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
3276         (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
3277         (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
3278         (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
3279         Define as adaptors for Windows functions/types or as
3280         using-declarations for POSIX functions/types.
3281         (stat_type, do_copy_file): Qualify names to use declarations from
3282         __gnu_posix namespace.
3283         (do_space): Declare new function.
3284         (make_file_type): Only use S_ISLNK if defined.
3285         * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
3286         path::value_type not char.
3287         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
3288         names to use declarations from __gnu_posix namespace.
3289         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
3290         add implementation for Windows.
3291         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
3292         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
3293         [!_PC_PATH_MAX]: Don't use pathconf.
3294         [PATH_MAX]: Use if defined.
3295         (filesystem::current_path(const path&, error_code&))
3296         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
3297         (filesystem::last_write_time, filesystem::permissions): Use names
3298         from __gnu_posix.
3299         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
3300         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
3301         implementation for Windows.
3302         (filesystem::rename, filesystem::resize_file): Use names from
3303         __gnu_posix.
3304         (filesystem::space): Use do_space.
3305         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
3306         (filesystem::status, filesystem::symlink_status): Use names from
3307         __gnu_posix.
3308         (filesystem::temp_directory_path): Add implementation for Windows.
3309         * src/filesystem/path.cc (dot): Define constant.
3310         (path::replace_extension): Use dot.
3311         (path::_M_find_extension): Likewise. Use path::string_type not
3312         std::string.
3313         (path::_M_split_cmpts): Use dot.
3314         (filesystem_error::_M_get_what): Use u8string() not native().
3315         * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
3316         Qualify names to use declarations from __gnu_posix namespace.
3317         * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
3318         correct error_code.
3319         (filesystem::absolute(const path&, error_code&)): Add implementation
3320         for Windows.
3321         (char_ptr, filesystem::canonical): Use path::value_type not char.
3322         (do_copy_file): Use names from __gnu_posix.
3323         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
3324         sendfile.
3325         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
3326         names to use declarations from __gnu_posix namespace.
3327         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
3328         add implementation for Windows.
3329         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
3330         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
3331         [!_PC_PATH_MAX]: Don't use pathconf.
3332         [PATH_MAX]: Use if defined.
3333         (filesystem::current_path(const path&, error_code&))
3334         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
3335         (filesystem::last_write_time, filesystem::permissions): Use names
3336         from __gnu_posix.
3337         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
3338         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
3339         implementation for Windows.
3340         (filesystem::rename, filesystem::resize_file): Use names from
3341         __gnu_posix.
3342         (do_space): Define.
3343         (filesystem::space): Use do_space.
3344         (filesystem::status, filesystem::symlink_status): Use names from
3345         __gnu_posix.
3346         (filesystem::temp_directory_path): Add implementation for Windows.
3347         * src/filesystem/std-path.cc
3348         [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
3349         Define for Windows.
3350         (dot): Define constant.
3351         (path::replace_extension, is_dot): Use dot.
3352         (path::lexically_normal): Check _M_type instead of calling
3353         non-existent function.
3354         (path::_M_find_extension): Use dot. Use path::string_type not
3355         std::string.
3356         (path::_M_split_cmpts): Use dot.
3357         (filesystem_error::_M_get_what): Use u8string() not native().
3358         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
3359         use symlinks.
3360         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
3361         Likewise.
3362         * testsuite/27_io/filesystem/operations/absolute.cc: Use
3363         __gnu_test::root_path() instead of "/" and add Windows-specific tests.
3364         * testsuite/27_io/filesystem/operations/canonical.cc: Use
3365         path::string() to get narrow string, not path::native().
3366         * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
3367         with std::filesystem::path not std::basic_string.
3368         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
3369         * testsuite/27_io/filesystem/operations/exists.cc: Use
3370         __gnu_test::root_path() instead of "/".
3371         * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
3372         fstreams with std::filesystem::path not std::basic_string.
3373         * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
3374         path::string() to get narrow string.
3375         * testsuite/27_io/filesystem/operations/space.cc: Check results for
3376         errors, expect sensible values otherwise.
3377         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
3378         helpers for adjusting the environment on Windows.
3379         * testsuite/27_io/filesystem/path/append/path.cc: Test
3380         Windows-specific behaviour.
3381         * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
3382         of path::string_type objects.
3383         * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
3384         string to wide string on Windows.
3385         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
3386         for backslash as root-directory.
3387         * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
3388         path::string() to get narrow string.
3389         * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
3390         paths.
3391         * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
3392         not std::string.
3393         * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
3394         different definintion of absolute paths on Windows.
3395         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3396         Do not use symlinks.
3397         * testsuite/experimental/filesystem/operations/absolute.cc: Test
3398         Windows behaviour.
3399         * testsuite/experimental/filesystem/operations/copy.cc: Construct
3400         fstreams with NTCTS not std::basic_string.
3401         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
3402         * testsuite/experimental/filesystem/operations/exists.cc: Use
3403         __gnu_test::root_path() instead of "/".
3404         * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
3405         fstreams with NTCTS not std::basic_string.
3406         * testsuite/experimental/filesystem/operations/last_write_time.cc:
3407         Use path::string() to get narrow string.
3408         * testsuite/experimental/filesystem/operations/space.cc: Use
3409         __gnu_test::root_path() instead of "/".
3410         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3411         Add helpers for adjusting the environment on Windows.
3412         * testsuite/experimental/filesystem/path/append/path.cc: Use
3413         path::string() to get narrow strings for comparisons.
3414         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
3415         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
3416         Likewise.
3417         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
3418         * testsuite/experimental/filesystem/path/native/string.cc: Use
3419         string_type not std::string.
3420         * testsuite/experimental/filesystem/path/query/is_absolute.cc:
3421         Adjust for different definintion of absolute paths on Windows.
3422         * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
3423         function.
3424         (__gnu_test::scoped_file): Construct fstreams with NTCTS not
3425         std::basic_string.
3427 2018-05-31  Jonathan Wakely  <jwakely@redhat.com>
3429         PR libstdc++/85951
3430         * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
3431         uint_least16_t and uint_least32_t.
3432         (__make_unsigned<wchar_t>): Define unconditionally.
3433         (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
3434         typedefs.
3435         (__make_unsigned_selector_base): New type to provide helper templates.
3436         (__make_unsigned_selector<_Tp, false, true>): Reimplement using
3437         __make_unsigned_selector_base helpers.
3438         (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
3439         (__make_signed_selector<_Tp, true, false>): Remove intermediate
3440         typedefs.
3441         (__make_signed<wchar_t>, __make_signed<char16_t>)
3442         (__make_signed<char32_t>)): Define unconditionally.
3443         * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
3444         wchar_t, char16_t and char32_t are transformed correctly.
3445         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
3446         dg-error lineno.
3447         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
3448         wchar_t, char16_t and char32_t are transformed correctly.
3449         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
3450         dg-error lineno.
3452 2018-05-29  Jonathan Wakely  <jwakely@redhat.com>
3454         * include/std/variant (__erased_dtor): Qualify call to __get.
3456 2018-05-27  François Dumont  <fdumont@gcc.gnu.org>
3458         * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
3459         (_Rb_tree(const allocator_type&)): Use latter.
3460         * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
3461         (map(initializer_list<value_type>, const allocator_type&)): Likewise.
3462         (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3463         * include/bits/stl_multimap.h
3464         (multimap(const allocator_type&)): Likewise.
3465         (multimap(initializer_list<value_type>, const allocator_type&)):
3466         Likewise.
3467         (multimap(_InputIterator, _InputIterator, const allocator_type&)):
3468         Likewise.
3469         * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
3470         (set(initializer_list<value_type>, const allocator_type&)): Likewise.
3471         (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3472         * include/bits/stl_multiset.h
3473         (multiset(const allocator_type&)): Likewise.
3474         (multiset(initializer_list<value_type>, const allocator_type&)):
3475         Likewise.
3476         (multiset(_InputIterator, _InputIterator, const allocator_type&)):
3477         Likewise.
3479 2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
3481         PR libstdc++/85768
3482         * src/c++11/debug.cc: Remove backtrace usage.
3484 2018-05-24  Maya Rashish  <coypu@sdf.org>
3486         PR target/85904
3487         * crossconfig.m4: Test for aligned_alloc on netbsd.
3488         * configure: Regenerate.
3490 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
3492         PR libstdc++/69769
3493         PR libstdc++/85886
3494         * include/bits/atomic_base.h (__atomic_base::value_type)
3495         (__atomic_base::difference_type): Add new typedefs.
3496         * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
3497         (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
3498         (atomic<T*>::operator++, atomic<T*>::operator--)
3499         (atomic<T*>::operator+=, atomic<T*>::operator-=)
3500         (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
3501         to enforce C++17 requirement on pointer arithmetic.
3502         (__atomic_val_t, __atomic_diff_t): New alias templates.
3503         (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
3504         (atomic_compare_exchange_weak_explicit)
3505         (atomic_compare_exchange_strong_explicit, atomic_store)
3506         (atomic_exchange, atomic_compare_exchange_weak)
3507         (atomic_compare_exchange_strong): Use __atomic_val_t to make
3508         scalar parameters be non-deduced contexts.
3509         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
3510         (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
3511         atomic instead of __atomic_base, and use __atomic_diff_t for scalar
3512         parameters.
3513         (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
3514         (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
3515         (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
3516         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
3517         (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
3518         address types.
3519         * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
3520         * testsuite/29_atomics/atomic/69769.cc: New test.
3521         * testsuite/29_atomics/atomic/nonmembers.cc: New test.
3522         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
3523         Disable test for C++17 and later.
3524         * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
3525         * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
3526         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
3527         test.
3529 2018-05-23  Jonathan Wakely  <jwakely@redhat.com>
3531         * include/bits/fs_path.h (path::__is_encoded_char): Change from class
3532         template to alias template.
3533         (path::__value_type_is_char): Use remove_const_t.
3534         (path:_S_string_from_iter): New helper function.
3535         (path::_S_convert(InputIter, __null_terminated))
3536         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
3537         Use _S_string_from_iter.
3538         (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
3539         rep for COW strings.
3540         * include/experimental/bits/fs_path.h (path::__is_encoded_char):
3541         Change from class template to alias template.
3542         (path::__value_type_is_char): Use remove_const.
3543         (path:_S_string_from_iter): New helper function.
3544         (path::_S_convert(InputIter, __null_terminated))
3545         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
3546         Use _S_string_from_iter.
3547         * testsuite/27_io/filesystem/path/append/source.cc: Test appending
3548         wide strings.
3549         * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
3550         string equality, not path equivalence.
3551         * testsuite/27_io/filesystem/path/construct/format.cc: Check
3552         construction from std::string and std::wstring and input iterators.
3553         * testsuite/27_io/filesystem/path/construct/locale.cc: Check
3554         construction from iterators.
3555         * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
3556         exact string equality, not path equivalence.
3557         * testsuite/experimental/filesystem/path/construct/locale.cc: Check
3558         construction from iterators.
3560         * include/bits/fs_path.h (path::_M_type): Change default member
3561         initializer to _Filename.
3562         (path::begin): Create past-the-end iterator for empty path.
3563         * src/filesystem/std-path.cc (path::remove_filename()): Remove
3564         debugging check.
3565         (path::has_relative_path()): Return false for empty filenames.
3566         (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
3567         Fix offset of empty final component.
3568         * testsuite/27_io/filesystem/path/itr/components.cc: New.
3569         * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
3571 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
3573         Add support for opening file streams from wide character strings.
3574         * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
3575         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
3576         Define new overload.
3577         * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
3578         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
3579         Declare new overload.
3580         * configure.ac: Check for _wfopen.
3581         * crossconfig.m4: Likewise.
3582         * configure: Regenerate.
3583         * config.h.in: Regenerate.
3584         * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
3585         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
3586         Define new overload.
3587         * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
3588         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
3589         Declare new overload.
3590         [_GLIBCXX_HAVE__WFOPEN]
3591         (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3592         (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
3593         (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3594         (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
3595         (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3596         (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
3597         new overloads.
3598         * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
3599         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
3600         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
3601         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
3602         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
3603         * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
3604         * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
3606 2018-05-21  François Dumont  <fdumont@gcc.gnu.org>
3608         PR libstdc++/85845
3609         * include/bits/stl_tree.h
3610         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
3611         qualification.
3613 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
3615         * src/filesystem/std-ops.cc (absolute): Report an error for empty
3616         paths.
3617         (weakly_canonical(const path&)): Do not call canonical on empty path.
3618         (weakly_canonical(const path&, error_code&)): Likewise.
3619         * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
3621         PR libstdc++/85818
3622         * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
3623         dg-require-filesystem-ts.
3625         PR libstdc++/85843
3626         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
3627         initialize base class to avoid warnings.
3629 2018-05-19  Jonathan Wakely  <jwakely@redhat.com>
3631         * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
3632         [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
3633         little_endian element in bitmask.
3634         * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
3635         * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
3637 2018-05-18  François Dumont  <fdumont@gcc.gnu.org>
3639         * include/bits/stl_tree.h
3640         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
3641         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
3642         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
3643         (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
3644         * include/debug/map.h
3645         (map(map&&, const_allocator_type&)): Add noexcept qualitication.
3646         * include/debug/multimap.h
3647         (multimap(multimap&&, const_allocator_type&)): Likewise.
3648         * include/debug/set.h
3649         (set(set&&, const_allocator_type&)): Likewise.
3650         * include/debug/multiset.h
3651         (multiset(multiset&&, const_allocator_type&)): Likewise.
3652         * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
3653         Add checks.
3654         * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
3655         Add checks.
3656         * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
3657         Add checks.
3658         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
3659         Add checks.
3660         * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
3661         Add checks.
3662         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
3663         Add checks.
3664         * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
3665         Add checks.
3666         * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
3667         Add checks.
3669 2018-05-18  Jason Merrill  <jason@redhat.com>
3671         * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
3672         for conversion to const_iterator.  Add defaulted copy ops.
3673         * libsupc++/new (bad_alloc): Add defaulted copy ops.
3674         * libsupc++/exception.h (exception): Add defaulted copy ops.
3675         * include/std/system_error (system_error): Add defaulted copy ops.
3676         * include/std/stdexcept (domain_error, invalid_argument)
3677         (length_error, out_of_range, range_error, overflow_error)
3678         (underflow_error): Add defaulted copy ops.
3679         * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
3680         copy assignment.
3681         * include/bits/allocator.h (allocator): Add defaulted copy assignment.
3682         * include/ext/throw_allocator.h (condition_base): Add defaulted
3683         default and copy ctor and copy assignment.
3685 2018-05-18  Jonathan Wakely  <jwakely@redhat.com>
3687         PR libstdc++/85098
3688         * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
3689         (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
3690         (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
3691         (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
3692         definitions.
3693         * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
3694         whitespace.
3695         * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
3696         braces around body of do-while.
3697         * testsuite/28_regex/basic_regex/85098.cc: New
3699 2018-05-17  Jonathan Wakely  <jwakely@redhat.com>
3701         PR libstdc++/85818
3702         * src/filesystem/path.cc (path::preferred_separator): Add used
3703         attribute.
3704         * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
3706         PR libstdc++/85812
3707         * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
3708         * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
3709         Refactor to separate non-throwing and throwing implementations.
3710         [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
3711         if constructing the object throws.
3713 2018-05-15  Jonathan Wakely  <jwakely@redhat.com>
3715         PR libstdc++/85749
3716         * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
3717         (linear_congruential_engine, mersenne_twister_engine)
3718         (subtract_with_carry_engine, discard_block_engine)
3719         (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
3720         constrain function templates taking seed sequences.
3721         * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
3722         (mersenne_twister_engine::seed(_Sseq&))
3723         (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
3724         match declarations.
3725         * include/ext/random (simd_fast_mersenne_twister_engine): Use
3726         __is_seed_seq to constrain function templates taking seed sequences.
3727         * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
3728         Change return type to match declaration.
3729         * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
3730         New.
3731         * testsuite/26_numerics/random/independent_bits_engine/cons/
3732         seed_seq2.cc: New.
3733         * testsuite/26_numerics/random/linear_congruential_engine/cons/
3734         seed_seq2.cc: New.
3735         * testsuite/26_numerics/random/mersenne_twister_engine/cons/
3736         seed_seq2.cc: New.
3737         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
3738         * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
3739         New.
3740         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
3741         seed_seq2.cc: New.
3742         * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
3743         seed_seq2.cc: New.
3745         PR libstdc++/83891
3746         * include/bits/fs_path.h (path::is_absolute()): Use same definition
3747         for all operating systems.
3748         * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
3749         * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
3750         * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
3751         * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
3753         * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
3754         unused <vector> header.
3755         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
3756         * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
3757         * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
3758         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
3759         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
3760         Likewise.
3761         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
3762         Likewise.
3763         * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
3764         * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
3765         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
3766         * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
3767         * testsuite/experimental/filesystem/path/decompose/extension.cc:
3768         Likewise.
3769         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
3770         * testsuite/experimental/filesystem/path/query/has_extension.cc:
3771         Likewise.
3772         * testsuite/experimental/filesystem/path/query/has_filename.cc:
3773         Likewise.
3774         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
3775         Likewise.
3776         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
3777         Likewise.
3778         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
3779         Likewise.
3780         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
3781         Likewise.
3782         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
3783         Likewise.
3784         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
3785         * testsuite/experimental/filesystem/path/query/is_relative.cc:
3786         Likewise.
3788         PR libstdc++/84159
3789         * include/bits/fs_path.h (path::operator/=, path::append): Construct
3790         temporary path before calling _M_append.
3791         (path::_M_append): Change parameter to path and implement C++17
3792         semantics.
3793         * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
3794         and more examples from the standard.
3795         * testsuite/27_io/filesystem/path/append/source.cc: New.
3796         * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
3797         * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
3799         * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
3800         __invoke to prevent ADL.
3802 2018-05-14  Jonathan Wakely  <jwakely@redhat.com>
3804         PR libstdc++/81256
3805         * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
3806         exceptions from _M_terminate_output().
3807         * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
3808         exceptions from close().
3809         * testsuite/27_io/basic_filebuf/close/81256.cc: New.
3811         * include/bits/valarray_array.h (__valarray_get_memory): Remove.
3812         (__valarray_get_storage): Call operator new directly. Remove ignored
3813         top-level restrict qualifier and add malloc attribute instead.
3814         (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
3816         PR libstdc++/67554
3817         * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
3818         (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
3820         PR libstdc++/82966
3821         * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
3822         instead of type.
3823         * testsuite/23_containers/set/modifiers/node_swap.cc: New.
3825 2018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3827         PR libstdc++/80165
3828         * testsuite/20_util/variant/80165.cc: New.
3830 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
3832         * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
3833         * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
3834         of C++11 containers with Debug Mode support.
3835         * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
3836         * doc/html/*: Regenerate.
3838 2018-05-10  Jason Merrill  <jason@redhat.com>
3840         * include/bits/regex_compiler.h (_S_cache_size): Change from
3841         function to variable.
3843 2018-05-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
3845         PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
3846         * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
3847         argument defaulted to +1.  Doxy comments on same.
3848         * testsuite/special_functions/02_assoc_legendre/
3849         check_value.cc: Regen.
3850         * testsuite/tr1/5_numerical_facilities/special_functions/
3851         02_assoc_legendre/check_value.cc: Regen.
3853 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
3855         PR libstdc++/85729
3856         * include/bits/c++config.h (__replacement_assert): Add linkage
3857         specification.
3858         * include/bits/std_abs.h: Add comment to closing brace of block.
3859         * include/c_global/cstddef: Add linkage specification.
3860         * include/c_global/cstring: Likewise.
3861         * include/c_global/cwchar: Likewise.
3863 2018-05-09  François Dumont  <fdumont@gcc.gnu.org>
3865         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
3866         Rename in...
3867         (_Safe_iterator<>::_S_constant()): ...that.
3868         * include/debug/safe_local_iterator.h
3869         (_Safe_local_iterator<>::_M_constant()): Rename in...
3870         (_Safe_local_iterator<>::_S_constant()): ...that.
3871         * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
3872         (_Iterator_state::__rbegin): New.
3873         (_Iterator_state::__rmiddle): New.
3874         (_Iterator_state::__rend): New.
3875         (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
3876         _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
3877         iterator type.
3878         (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
3879         _Is_iterator)): Likewise.
3880         (_Parameter::_S_reverse_state(_Iterator_state)): New.
3881         (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
3882         _Is_iterator)): New.
3883         (_Parameter(std::reverse_iterator<> const&, const char*,
3884         _Is_iterator)): New.
3885         (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
3886         const char*, _Is_iterator)): New.
3887         (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
3888         New.
3889         (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
3890         _Is_iterator)): New.
3891         * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
3892         * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
3893         * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
3895 2018-05-09  Jonathan Wakely  <jwakely@redhat.com>
3897         * include/bits/std_function.h (_Base_manager::_M_get_pointer):
3898         Use constexpr if in C++17 mode.
3899         (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
3900         Copy from const object.
3901         * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
3903 2018-05-08  François Dumont  <fdumont@gcc.gnu.org>
3905         * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
3906         [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
3907         backtrace.
3909         * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
3910         * include/debug/functions.h (__check_valid_range): Use latter.
3911         * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
3912         use latter.
3913         * include/debug/deque
3914         (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
3915         * include/debug/forward_list
3916         (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
3917         Likewise.
3918         * include/debug/list
3919         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3920         * include/debug/list
3921         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3922         * include/debug/map.h
3923         (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3924         (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
3925         Likewise.
3926         * include/debug/multimap.h
3927         (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3928         (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
3929         const _Alloc&)): Likewise.
3930         * include/debug/set.h
3931         (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3932         (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
3933         Likewise.
3934         * include/debug/multiset.h
3935         (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3936         (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
3937         const _Alloc&)): Likewise.
3938         * include/debug/string
3939         (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
3940         Likewise.
3941         * include/debug/unordered_map
3942         (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
3943         Likewise.
3944         (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
3945         const _Alloc&)): Likewise.
3946         * include/debug/unordered_set
3947         (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
3948         Likewise.
3949         (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
3950         const _Alloc&)): Likewise.
3951         * include/debug/vector
3952         (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
3954         * include/debug/formatter.h (_Error_formatter::_M_function): New.
3955         (_Error_formatter(const char*, unsigned int)): Adapt.
3956         (_Error_formatter::_M_at): Rename in...
3957         (_Error_formatter::_S_at): ...that and adapt.
3958         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
3959         (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
3960         * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
3961         when available.
3963 2018-05-08  Jonathan Wakely  <jwakely@redhat.com>
3965         * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
3966         Use normal std::vector even in Debug Mode.
3968         PR libstdc++/85672
3969         * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
3970         to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
3971         * include/Makefile.in: Regenerate.
3972         * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
3973         within conditional block.
3975 2018-05-07  Jonathan Wakely  <jwakely@redhat.com>
3977         * doc/xml/manual/using.xml (table.cmd_options): Document that the
3978         C++17 Filesystem implementation also needs -lstdc++fs.
3980         PR libstdc++/85671
3981         * include/bits/fs_path.h (operator/): Permit copy elision.
3982         * include/experimental/bits/fs_path.h (operator/): Likewise.
3984 2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
3986         Moar PR libstdc++/80506
3987         * include/bits/random.tcc (gamma_distribution::__generate_impl()):
3988         Fix magic number used in loop condition.
3990 2018-05-04  Jonathan Wakely  <jwakely@redhat.com>
3992         PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
3993         * include/std/optional (_Optional_payload): Add noexcept to default
3994         constructor. Re-indent.
3995         (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
3996         constructor for copying disengaged payloads.
3997         (_Optional_payload<_Tp, true, false, true>): Likewise.
3998         (_Optional_payload<_Tp, true, true, false>): Likewise.
3999         (_Optional_payload<_Tp, true, false, false>): Likewise.
4000         * testsuite/20_util/optional/cons/85642.cc: New.
4001         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
4003 2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
4005         PR libstdc++/82644
4006         * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
4007         inline definitions instead of using-declarations.
4008         [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
4009         * testsuite/tr1/5_numerical_facilities/special_functions/
4010         07_conf_hyperg/compile_cxx17.cc: New.
4011         * testsuite/tr1/5_numerical_facilities/special_functions/
4012         17_hyperg/compile_cxx17.cc: New.
4014         PR libstdc++/84769
4015         * include/std/variant (visit): Qualify std::get call.
4017         PR libstdc++/85632 use uintmax_t for arithmetic
4018         * src/filesystem/ops.cc (experimental::filesystem::space): Perform
4019         arithmetic in result type.
4020         * src/filesystem/std-ops.cc (filesystem::space): Likewise.
4021         * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
4022         is greater than free space.
4023         * testsuite/experimental/filesystem/operations/space.cc: New.
4025         * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
4026         * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
4027         New.
4028         * testsuite/20_util/remove_cvref/value.cc: New.
4029         * testsuite/20_util/remove_cvref/value_ext.cc: New.
4031         PR libstdc++/84087 LWG DR 2268 basic_string default arguments
4032         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
4033         (append(const basic_string&, size_type, size_type)
4034         (assign(const basic_string&, size_type, size_type)
4035         (insert(size_type, const basic_string&, size_type, size_type)
4036         (replace(size_type,size_type,const basic_string&,size_type,size_type)
4037         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
4038         Add default arguments (LWG 2268).
4039         [_GLIBCXX_USE_CXX11_ABI=0]
4040         (append(const basic_string&, size_type, size_type)
4041         (assign(const basic_string&, size_type, size_type)
4042         (insert(size_type, const basic_string&, size_type, size_type)
4043         (replace(size_type,size_type,const basic_string&,size_type,size_type)
4044         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
4045         Likewise.
4046         * testsuite/21_strings/basic_string/dr2268.cc: New test.
4048         PR libstdc++/84535
4049         * include/std/thread (thread::__not_same): New SFINAE helper.
4050         (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
4051         first argument is not a std::thread. Add static assertion to check
4052         INVOKE expression is valid.
4053         (thread::thread(thread&), thread::thread(const thread&&)): Remove.
4054         (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
4055         __invoke_result for return types and remove exception specifications.
4056         * testsuite/30_threads/thread/cons/84535.cc: New.
4058         * include/std/future (__async_result_of): Use __invoke_result instead
4059         of result_of.
4061         * include/std/any (any_cast): Use __remove_cvref_t.
4062         * include/std/tuple (__make_tuple): Likewise.
4063         * include/std/type_traits (__remove_cvref_t): Define.
4064         (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
4065         [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
4066         * include/std/variant (__erased_hash): Use __remove_cvref_t.
4068 2018-05-02  François Dumont  <fdumont@gcc.gnu.org>
4070         * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
4071         ensure overloaded comma not used.
4072         * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
4073         * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
4074         * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
4075         * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
4076         * testsuite/23_containers/list/modifiers/assign/1.cc: New.
4077         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
4078         * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
4080 2018-05-02  Jonathan Wakely  <jwakely@redhat.com>
4082         PR libstdc++/68197
4083         * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
4084         indices to unsigned.
4085         * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
4086         as failure. Refactor error handling.
4087         * testsuite/27_io/ios_base/storage/68197.cc: New.
4089         PR libstdc++/57997
4090         PR libstdc++/83860
4091         * include/bits/gslice_array.h (gslice_array): Define default
4092         constructor as deleted, as per C++11 standard.
4093         * include/bits/mask_array.h (mask_array): Likewise.
4094         * include/bits/slice_array.h (slice_array): Likewise.
4095         * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
4096         to namespace __detail.
4097         (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
4098         members.
4099         * include/bits/valarray_before.h (_ValArrayRef): New helper for type
4100         of data members in closure objects.
4101         (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
4102         (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
4103         __detail.
4104         (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
4105         (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
4106         (_SBase::_M_expr): Use _ValArrayRef for type of data members.
4107         * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
4108         (_ValFunClos, _RefFunClos): Move to namespace __detail and add
4109         using-declarations to namespace std.
4110         * testsuite/26_numerics/valarray/83860.cc: New.
4112         * testsuite/backward/strstream_move.cc: Remove duplicate function
4113         call.
4115         PR libstdc++/69608
4116         * include/backward/strstream (strstreambuf): Define move constructor
4117         and move assignment operator.
4118         (istrstream, ostrstream, strstream): Likewise.
4119         * testsuite/backward/strstream_move.cc: New.
4121 2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
4123         PR libstdc++/84654
4124         * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
4125         * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
4126         * configure: Regenerate.
4127         * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
4128         based on ENABLE_FLOAT128.
4129         * include/Makefile.in: Regenerate.
4130         * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
4131         [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
4132         _GLIBCXX_USE_FLOAT128.
4134 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
4136         * configure: Regenerated.
4138 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
4140         * configure: Regenerated.
4142 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
4143             Jakub Jelinek  <jakub@redhat.com>
4145         PR libstdc++/85442
4146         * src/c++11/Makefile.am: Don't generate debuginfo again for
4147         cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
4148         * src/c++11/Makefile.in: Regenerate.
4150 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
4152         PR libstdc++/84442
4153         * testsuite/30_threads/thread/cons/terminate.cc
4154         [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
4156 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
4158         PR jit/85384
4159         * configure: Regenerate.
4161 2018-04-16  Jonathan Wakely  <jwakely@redhat.com>
4163         * testsuite/experimental/filesystem/file_status/1.cc: Add
4164         -DUSE_FILESYSTEM_TS to dg-options.
4165         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
4166         Likewise.
4167         * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
4168         * testsuite/experimental/filesystem/iterators/
4169         recursive_directory_iterator.cc: Likewise.
4170         * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
4171         * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
4172         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
4173         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
4174         * testsuite/experimental/filesystem/operations/create_directories.cc:
4175         Likewise.
4176         * testsuite/experimental/filesystem/operations/create_directory.cc:
4177         Likewise.
4178         * testsuite/experimental/filesystem/operations/create_symlink.cc:
4179         Likewise.
4180         * testsuite/experimental/filesystem/operations/current_path.cc:
4181         Likewise.
4182         * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
4183         * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
4184         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
4185         * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
4186         * testsuite/experimental/filesystem/operations/last_write_time.cc:
4187         Likewise.
4188         * testsuite/experimental/filesystem/operations/permissions.cc:
4189         Likewise.
4190         * testsuite/experimental/filesystem/operations/read_symlink.cc:
4191         Likewise.
4192         * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
4193         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
4194         * testsuite/experimental/filesystem/operations/status.cc: Likewise.
4195         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
4196         Likewise.
4197         * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
4198         * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
4199         * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
4200         * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
4201         * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
4202         * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
4203         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
4204         * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
4205         * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
4206         * testsuite/experimental/filesystem/path/construct/default.cc:
4207         Likewise.
4208         * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
4209         * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
4210         * testsuite/experimental/filesystem/path/construct/string_view.cc:
4211         Likewise.
4212         * testsuite/experimental/filesystem/path/decompose/extension.cc:
4213         Likewise.
4214         * testsuite/experimental/filesystem/path/decompose/filename.cc:
4215         Likewise.
4216         * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
4217         Likewise.
4218         * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
4219         Likewise.
4220         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
4221         Likewise.
4222         * testsuite/experimental/filesystem/path/decompose/root_name.cc:
4223         Likewise.
4224         * testsuite/experimental/filesystem/path/decompose/root_path.cc:
4225         Likewise.
4226         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
4227         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
4228         Likewise.
4229         * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
4230         * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
4231         * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
4232         Likewise.
4233         * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
4234         Likewise.
4235         * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
4236         Likewise.
4237         * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
4238         Likewise.
4239         * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
4240         * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
4241         * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
4242         Likewise.
4243         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
4244         * testsuite/experimental/filesystem/path/query/has_extension.cc:
4245         Likewise.
4246         * testsuite/experimental/filesystem/path/query/has_filename.cc:
4247         Likewise.
4248         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
4249         Likewise.
4250         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
4251         Likewise.
4252         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
4253         Likewise.
4254         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
4255         Likewise.
4256         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
4257         Likewise.
4258         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
4259         * testsuite/experimental/filesystem/path/query/is_relative.cc:
4260         Likewise.
4262 2018-04-13  Jonathan Wakely  <jwakely@redhat.com>
4264         * src/c++11/Makefile.am: Fix sed command.
4265         * src/c++11/Makefile.in: Regenerate.
4267         * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
4268         handle mangled names starting with double underscores on darwin.
4269         * src/c++11/Makefile.in: Regenerate.
4271 2018-04-12  Jonathan Wakely  <jwakely@redhat.com>
4273         * src/c++11/Makefile.am: Fix comment.
4274         * src/c++11/Makefile.in: Regenerate.
4275         * src/c++11/cxx11-ios_failure.cc: Fix comment.
4276         * src/c++98/ios_failure.cc: Likewise.
4278         * src/c++11/ios.cc: Remove redundant macro definition.
4280 2018-04-11  Jonathan Wakely  <jwakely@redhat.com>
4282         * doc/xml/manual/abi.xml: Document header locations in recent
4283         releases.
4284         * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
4285         * doc/xml/manual/spine.xml: Update copyright years.
4286         * doc/xml/manual/strings.xml: Adjust tolower example to avoid
4287         undefined behaviour.
4288         * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
4289         * doc/html/*: Regenerate.
4291 2018-04-10  Jonathan Wakely  <jwakely@redhat.com>
4293         * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
4294         * doc/xml/manual/backwards_compatibility.xml: Likewise.
4295         * doc/xml/manual/containers.xml: Likewise.
4296         * doc/xml/manual/debug_mode.xml: Likewise.
4297         * doc/xml/manual/extensions.xml: Likewise.
4298         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
4299         * doc/xml/manual/using.xml: Likewise.
4300         * doc/xml/manual/utilities.xml: Likewise.
4302         PR libstdc++/85222
4303         * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
4304         cxx11-ios_failure.cc to rewrite type info for __ios_failure.
4305         * src/c++11/Makefile.in: Regenerate.
4306         * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
4307         New types.
4308         [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
4309         * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
4310         * src/c++98/ios_failure.cc (__construct_ios_failure)
4311         (__destroy_ios_failure, is_ios_failure_handler): New functions.
4312         [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
4313         * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
4314         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
4315         handler types, to always catch std::ios_base::failure.
4316         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
4317         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
4318         exceptions_failbit.cc: Likewise.
4319         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
4320         exceptions_failbit.cc: Likewise.
4321         * testsuite/27_io/basic_istream/extractors_other/char/
4322         exceptions_null.cc: Likewise.
4323         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
4324         exceptions_null.cc: Likewise.
4325         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
4326         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
4327         * testsuite/27_io/basic_ostream/inserters_other/char/
4328         exceptions_null.cc: Likewise.
4329         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
4330         exceptions_null.cc: Likewise.
4331         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
4333 2018-04-05  Jonathan Wakely  <jwakely@redhat.com>
4335         * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
4336         __get calls to avoid ADL and avoid ambiguity due to Clang bug.
4338 2018-04-03  Jonathan Wakely  <jwakely@redhat.com>
4340         PR libstdc++/85183
4341         * include/std/variant (_Move_assign_base::operator=): Fix incorrect
4342         value categories.
4343         * testsuite/20_util/variant/85183.cc: New.
4345 2018-03-26  Jonathan Wakely  <jwakely@redhat.com>
4347         * include/std/variant (__get): Qualify calls to avoid ADL.
4348         (__select_index): Adjust whitespace.
4349         (variant): Add using-declaration to workaround Clang bug.
4351 2018-03-22  Jonathan Wakely  <jwakely@redhat.com>
4353         PR libstdc++/85040
4354         * include/bits/stl_function.h (greater::__not_overloaded)
4355         (less::__not_overloaded, greater_equal::__not_overloaded)
4356         (less_equal::__not_overloaded): Fix ambiguous specializations.
4357         * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
4358         tests for type with overloaded operators.
4360 2018-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4362         PR libstdc++/77691
4363         * testsuite/experimental/memory_resource/resource_adaptor.cc:
4364         xfail execution on 32-bit Solaris/x86.
4366 2018-03-21  Jonathan Wakely  <jwakely@redhat.com>
4368         * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
4369         VERIFY instead of assert.
4370         * testsuite/20_util/hash/84998.cc: New test.
4371         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
4372         copy of test adjusted for Debug Mode.
4373         * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
4374         test in Debug Mode.
4376 2018-03-20  François Dumont  <fdumont@gcc.gnu.org>
4378         PR libstdc++/84998
4379         * include/bits/stl_bvector.h: Fix std::hash friend declaration.
4380         * include/std/bitset: Likewise.
4381         * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
4382         declaration.
4383         * include/bits/stl_multimap.h (std::multimap<>): Likewise.
4384         * include/bits/stl_multiset.h (std::multiset<>): Likewise.
4385         * include/bits/stl_set.h (std::set<>): Likewise.
4386         * include/bits/unordered_map.h (std::unordered_map<>): Fix
4387         _Hash_merge_helper friend declaration.
4388         (std::unordered_multimap<>): Likewise.
4389         * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
4390         (std::unordered_multiset<>): Likewise.
4392 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
4394         * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
4395         trailing slash for domain level link.
4396         * doc/xml/faq.xml: Ditto.
4397         * doc/xml/manual/appendix_free.xml (software): Ditto.
4398         * doc/xml/manual/intro.xml: Ditto.
4399         * doc/xml/manual/spine.xml: Ditto.
4400         * doc/xml/spine.xml: Ditto.
4402 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
4404         * doc/xml/manual/documentation_hacking.xml: Adjust link to
4405         docbook.org.
4407 2018-03-17  Jonathan Wakely  <jwakely@redhat.com>
4409         * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
4410         to compile as C++98.
4412 2018-03-14  Jonathan Wakely  <jwakely@redhat.com>
4414         PR libstdc++/78420
4415         * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
4416         (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
4417         to ensure total order for pointers.
4418         (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
4419         Add operator() overloads for pointer arguments and make generic
4420         overloads dispatch to new _S_cmp functions when comparisons would
4421         use built-in operators for pointers.
4422         * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
4424 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
4426         PR libstdc++/84773
4427         PR libstdc++/83662
4428         * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
4429         * configure: Regenerate.
4430         * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
4431         (aligned_alloc): Add using-declaration.
4432         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
4434 2018-03-09  François Dumont  <fdumont@gcc.gnu.org>
4436         * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
4437         Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
4438         registration.
4440 2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
4442         PR libstdc++/84769
4443         * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
4444         Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
4446         src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
4447         src/filesystem/std-ops.cc (create_dir): Likewise.
4449 2018-03-08  François Dumont  <fdumont@gcc.gnu.org>
4451         * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
4452         (StdListIteratorPrinter): Inherit from latter.
4453         (StdFwdListIteratorPrinter): New, inherit from latter.
4454         (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
4455         when iterator has no associated container.
4456         (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
4457         __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
4458         registrations.
4459         * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
4460         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
4462 2018-03-06  Ville Voutilainen  <ville.voutilainen@gmail.com>
4464         PR libstdc++/84601
4465         * include/std/optional (_Optional_payload): Split into multiple
4466         specializations that can handle different cases of trivial or
4467         non-trivial assignment operators.
4468         * testsuite/20_util/optional/84601.cc: New.
4469         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
4471 2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
4473         PR libstdc++/84671
4474         * include/bits/parse_numbers.h (_Number_help): Add partial
4475         specialization to handle digit separators. Adjust partial
4476         specialization for recursion temrination to require _Pow == 1ULL.
4477         * testsuite/20_util/duration/literals/84671.cc: New
4479 2018-02-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
4481         Implement the missing bits of LWG 2769
4482         * include/std/any (any_cast(const any&)): Add static_assert.
4483         (any_cast(any&)): Likewise.
4484         (any_cast(any&&)): Likewise, and remove the handling
4485         for copyable-but-not-movable type.
4486         * testsuite/20_util/any/misc/any_cast.cc: Adjust.
4487         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
4488         add new tests.
4490 2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
4492         PR libstdc++/84532
4493         * include/std/thread (thread::__make_invoker): Construct tuple
4494         directly instead of using make_tuple.
4495         * testsuite/30_threads/async/84532.cc: New.
4496         * testsuite/30_threads/thread/84532.cc: New.
4498 2018-02-20  François Dumont  <fdumont@gcc.gnu.org>
4500         * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
4501         (template<> __aligned_buffer): Define as __aligned_membuf alias.
4503 2018-02-19  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
4505         PR target/84148
4506         * configure: Regenerate.
4508 2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
4510         PR libstdc++/81797
4511         * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
4512         * configure: Regenerate.
4513         * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
4514         defined.
4515         * include/Makefile.in: Regenerate.
4517 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
4519         PR libstdc++/83833
4520         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
4521         Add -ffloat-store to options for m68k and ia32.
4523         * doc/xml/faq.xml: Update copyright years.
4524         * doc/html/*: Regenerate.
4526         PR libstdc++/83658
4527         * include/std/any (any::__do_emplace): Only set _M_manager after
4528         constructing the contained object.
4529         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
4530         * testsuite/20_util/any/modifiers/83658.cc: New test.
4532 2018-01-25  Jonathan Wakely  <jwakely@redhat.com>
4534         PR libstdc++/81076
4535         * include/c_global/cstddef (__byte_operand): Define primary template.
4536         * testsuite/18_support/byte/81076.cc: New test.
4538 2018-01-19  Christophe Lyon  <christophe.lyon@linaro.org>
4540         * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
4541         dg-options and dg-add-options order.
4542         * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
4543         * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
4544         Likewise.
4545         * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
4546         * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
4547         Likewise.
4548         * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
4549         Likewise.
4550         * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
4551         * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
4552         Likewise.
4553         * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
4554         Likewise.
4555         * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
4556         Likewise.
4557         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
4558         Likewise.
4559         * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
4560         Likewise.
4561         * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
4562         Likewise.
4563         * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
4564         Likewise.
4565         * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
4566         Likewise.
4567         * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
4568         * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
4569         * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
4570         * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
4571         * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
4572         * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
4573         * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
4574         * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
4575         * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
4576         Likewise.
4577         * testsuite/special_functions/19_sph_bessel/check_nan.cc:
4578         Likewise.
4579         * testsuite/special_functions/20_sph_legendre/check_nan.cc:
4580         Likewise.
4581         * testsuite/special_functions/21_sph_neumann/check_nan.cc:
4582         Likewise.
4584 2018-01-18  Uros Bizjak  <ubizjak@gmail.com>
4586         * configure.ac (AC_CHECK_HEADERS): Add linux/types.h.  Conditionally
4587         include linux/types.h when checking linux/random.h header.
4588         * config.h.in: Regenerate.
4589         * configure: Ditto.
4590         * src/c++11/random.cc: Conditionally include linux/types.h.
4592 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
4594         * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
4596 2018-01-16  Jonathan Wakely  <jwakely@redhat.com>
4598         PR libstdc++/83834
4599         * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
4600         pattern with exact match for std::cerr.
4602 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
4604         PR libstdc++/83833
4605         * include/bits/random.h (chi_squared_distribution::param): Update
4606         gamma distribution parameter.
4607         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
4608         test.
4610         PR libstdc++/83830
4611         * include/std/type_traits (has_unique_object_representations_v): Add
4612         variable template.
4613         * testsuite/20_util/has_unique_object_representations/value.cc: Check
4614         variable template.
4616 2018-01-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
4618         Make optional conditionally
4619         trivially_{copy,move}_{constructible,assignable}
4620         * include/std/optional (_Optional_payload): Fix the comment in
4621         the class head and turn into a primary and one specialization.
4622         (_Optional_payload::_M_engaged): Strike the NSDMI.
4623         (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
4624         New.
4625         (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
4626         Likewise.
4627         (_Optional_payload<_Tp, false>::_M_get): Likewise.
4628         (_Optional_payload<_Tp, false>::_M_reset): Likewise.
4629         (_Optional_base_impl): Likewise.
4630         (_Optional_base): Turn into a primary and three specializations.
4631         (optional(nullopt)): Change the base init.
4632         * testsuite/20_util/optional/assignment/8.cc: New.
4633         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
4634         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
4636 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
4638         PR libstdc++/80276
4639         * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
4640         (get_template_arg_list): New.
4641         (StdVariantPrinter._template_args): Remove, use get_template_arg_list
4642         instead.
4643         (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
4644         of strings and regular expressions.
4645         (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
4646         (FilteringTypePrinter): Add docstring. Match using startswith. Use
4647         strip_inline_namespaces instead of strip_versioned_namespace.
4648         (add_one_type_printer): Prepend namespace to match argument.
4649         (register_type_printers): Add type printers for char16_t and char32_t
4650         string types and for types using cxx11 ABI. Update calls to
4651         add_one_template_type_printer to provide default argument dicts.
4652         * testsuite/libstdc++-prettyprinters/80276.cc: New test.
4653         * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
4654         basic_string<unsigned char> and basic_string<signed char>.
4655         * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
4656         to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
4658 2018-01-14  Andreas Schwab  <schwab@linux-m68k.org>
4660         PR libstdc++/81092
4661         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
4663 2018-01-13  Tim Shen  <timshen@google.com>
4665         PR libstdc++/83601
4666         * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
4667         * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
4668         * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
4670 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4672         PR libstdc++/64054
4673         * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
4674         Remove dg-xfail-run-if.
4676 2018-01-10  François Dumont  <fdumont@gcc.gnu.org>
4678         * include/bits/forward_list.h
4679         (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
4680         (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
4681         (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
4682         (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
4683         (_Fwd_list_impl()): Add noexcept qualification.
4684         (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
4685         (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
4686         (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
4687         (_Fwd_list_base()): Default.
4688         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
4689         (_Fwd_list_base(_Fwd_list_base&&)): Default.
4690         (forward_list<>()): Default.
4691         (forward_list<>(forward_list&&)): Default.
4692         (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
4693         (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
4694         (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
4695         * include/bits/forward_list.tcc
4696         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
4697         _M_impl._M_head move assignment.
4698         (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
4699         * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
4701 2018-01-09  Jonathan Wakely  <jwakely@redhat.com>
4703         PR libstdc++/80276
4704         * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
4705         (UniquePointerPrinter): Print correct template argument, not type of
4706         the pointer.
4707         (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
4708         a type.
4709         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
4710         array type.
4711         * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
4712         weak_ptr of array types.
4714 2018-01-09  François Dumont  <fdumont@gcc.gnu.org>
4716         PR libstdc++/83709
4717         * include/bits/hashtable_policy.h
4718         (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
4719         __first != __last.
4720         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
4721         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
4722         Add false_type parameter.
4723         (_Insert_base::insert): Adapt.
4724         * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
4725         Adapt.
4726         (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
4727          Add __n_elt parameter, defaulted to 1.
4728         (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
4729         policy _M_need_rehash.
4730         (_Hashtable::_M_merge_unique): Pass target number of elements to add to
4731         produce only 1 rehash if necessary.
4732         * testsuite/23_containers/unordered_map/insert/83709.cc: New.
4733         * testsuite/23_containers/unordered_set/insert/83709.cc: New.
4735 2018-01-09  Juraj Oršulić  <juraj.orsulic@fer.hr>
4736             Jonathan Wakely  <jwakely@redhat.com>
4738         PR libstdc++/59253 (partial)
4739         * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
4740         type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
4741         (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
4742         children.
4743         * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
4744         of unique_ptr printer.
4745         * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
4746         output of shared_ptr printer.
4748 2018-01-05  Jonathan Wakely  <jwakely@redhat.com>
4750         PR libstdc++/83626
4751         * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
4752         unnecessary symlink_status call.
4753         (remove_all(const path&, error_code&)): Use filesystem::remove.
4754         * src/filesystem/std-ops.cc: Likewise.
4756         PR libstdc++/83279
4757         * src/filesystem/std-ops.cc  (do_copy_file): Use non-null offset with
4758         sendfile.
4760         PR libstdc++/83626
4761         * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
4762         report an error for ENOENT.
4763         (remove_all(const path&)): Fix type of result variable.
4764         (remove_all(const path&, error_code&)): Use non-throwing increment
4765         for directory iterator. Call POSIX remove directly to avoid redundant
4766         calls to symlink_status. Do not report errors for ENOENT.
4767         * src/filesystem/std-ops.cc: Likewise.
4768         * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
4769         overload.
4770         * testsuite/experimental/filesystem/operations/remove_all.cc:
4771         Likewise.
4773 2018-01-04  Jonathan Wakely  <jwakely@redhat.com>
4775         PR libstdc++/83626
4776         * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
4777         redundant call to ec.clear().
4778         (remove_all(const path&, error_code&))): Do not return an error for
4779         non-existent paths.
4780         * src/filesystem/std-ops.cc: Likewise.
4781         * testsuite/27_io/filesystem/operations/remove.cc: New test.
4782         * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
4783         results for non-existent paths.
4784         * testsuite/experimental/filesystem/operations/remove.cc: New test.
4785         * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
4786         expected results for non-existent paths.
4788         * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
4789         check status_known once.
4790         * include/experimental/bits/fs_ops.h: Likewise.
4792         PR libstdc++/83607
4793         * include/std/functional (__is_byte_like): New trait.
4794         (__is_std_equal_to): Remove.
4795         (__boyer_moore_base_t): Use __is_byte_like instead of
4796         __is_std_equal_to.
4797         * include/experimental/functional (__is_std_equal_to): Remove.
4798         (__boyer_moore_base_t): Use __is_byte_like instead of
4799         __is_std_equal_to.
4800         * testsuite/20_util/function_objects/83607.cc: New test.
4802 2018-01-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
4804         Protect optional's deduction guide with the feature macro
4805         * include/std/optional: Use the feature macro.
4807 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
4809         Update copyright years.
4811 Copyright (C) 2018 Free Software Foundation, Inc.
4813 Copying and distribution of this file, with or without modification,
4814 are permitted in any medium without royalty provided the copyright
4815 notice and this notice are preserved.