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