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