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