comparison libstdc++-v3/ChangeLog-2018 @ 145:1830386684a0

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