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