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