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