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