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