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