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