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