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