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