12018-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
152018-12-22  Iain Sandoe  <iain@sandoe.co.uk>
16
17          * /config/os/bsd/darwin/ppc-extra.ver: Append long double symbols.
18
192018-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
292018-12-19  Jonathan Wakely  <jwakely@redhat.com>
30
31          * doc/xml/manual/abi.xml: Add missing word.
32
332018-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
712018-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
842018-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
1672018-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
1832018-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
1932018-12-10  Gerald Pfeifer  <gerald@pfeifer.com>
194
195          * doc/xml/manual/documentation_hacking.xml: Update reference
196          to epubcheck.
197
1982018-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
2032018-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
2082018-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
2192018-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
2252018-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
2472018-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
2702018-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
2772018-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
2972018-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
3192018-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
3392018-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
3692018-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
3892018-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
4192018-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
4282018-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
4332018-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
4532018-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
4612018-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
4692018-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
4832018-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
4962018-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
5082018-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
5242018-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
5792018-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
5922018-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
6072018-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
6172018-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
6312018-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
6682018-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
6742018-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
6872018-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
6942018-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
7462018-11-12  Jason Merrill  <jason@redhat.com>
747
748          * libsupc++/new (std::destroying_delete_t): New.
749
7502018-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
7582018-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
7662018-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
7802018-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
7862018-11-07  Hafiz Abid Qadeer  <abidh@codesourcery.com>
787
788          * configure: Regenerated.
789
7902018-11-07  Jonathan Wakely  <jwakely@redhat.com>
791
792          * config/abi/pre/gnu.ver: Fix patterns for size_t parameters.
793
7942018-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
8262018-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
8322018-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
8432018-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
8522018-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
8592018-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
8812018-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
8872018-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
8942018-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
9102018-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
9312018-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
10642018-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
10722018-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
10792018-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
12292018-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
12552018-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
12792018-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
12852018-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
13882018-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
14002018-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
14142018-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
14222018-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
14352018-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
14822018-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
15162018-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
15412018-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
15532018-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
15662018-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
15732018-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
15832018-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
15962018-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
16232018-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
16332018-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
16742018-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
16802018-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
16872018-10-02  Joseph Myers  <joseph@codesourcery.com>
1688
1689          * testsuite/lib/libstdc++.exp (libstdc++_init): Use
1690          -fno-show-column in default cxxflags.
1691
16922018-10-01  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1693
1694          * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.
1695
16962018-10-01  Gerald Pfeifer  <gerald@pfeifer.com>
1697
1698          * doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
1699          Custom Memory Allocation".
1700
17012018-10-01  Jonathan Wakely  <jwakely@redhat.com>
1702
1703          * doc/html/*: Regenerate.
1704
17052018-09-30  Gerald Pfeifer  <gerald@pfeifer.com>
1706
1707          * doc/xml/manual/messages.xml: Switch link to www.oracle.com
1708          to https.
1709
17102018-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
17152018-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
17212018-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
17282018-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
17332018-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
17402018-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
17452018-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
17502018-09-23  Gerald Pfeifer  <gerald@pfeifer.com>
1751
1752          * doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
1753          https.
1754
17552018-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
17642018-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
17712018-09-20  Christophe Lyon  <christophe.lyon@linaro.org>
1772
1773          * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
1774          on arm*.
1775
17762018-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
17822018-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
17942018-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
18032018-09-13  Jonathan Wakely  <jwakely@redhat.com>
1804
1805          * include/std/variant (variant) [__clang__]: Limit workaround to
1806          Clang 7 and older.
1807
18082018-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
18322018-09-05  Jonathan Wakely  <jwakely@redhat.com>
1833
1834          * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
1835
18362018-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
19132018-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
19652018-09-01  Gerald Pfeifer  <gerald@pfeifer.com>
1966
1967          * doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
1968          references.
1969
19702018-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
20312018-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
20362018-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
20522018-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
20582018-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
20712018-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
20772018-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
20842018-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
21152018-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
21762018-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
22222018-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
23672018-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
23742018-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
24002018-08-21  David Edelsohn  <dje.gcc@gmail.com>
2401
2402          * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
2403
24042018-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
24132018-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
24402018-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
24452018-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
24782018-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
24942018-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
25522018-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
25802018-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
25892018-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
26112018-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
26392018-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
26462018-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
26532018-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
26872018-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
27022018-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
27192018-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
27552018-08-05  François Dumont  <fdumont@gcc.gnu.org>
2756
2757          * include/bits/stl_iterator.h: Fix comment.
2758
27592018-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
27672018-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
27742018-08-01  Mike Crowe  <mac@mcrowe.com>
2775
2776          * include/std/condition_variable (wait_for): Use steady_clock.
2777
27782018-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
27862018-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
27962018-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
28352018-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
28482018-07-26  Marek Polacek  <polacek@redhat.com>
2849
2850          * testsuite/30_threads/condition_variable_any/cond.cc: New.
2851
28522018-07-26  Marek Polacek  <polacek@redhat.com>
2853
2854          * src/c++98/locale_init.cc: Fix #ifdef condition.
2855
28562018-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
34202018-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
34262018-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
34322018-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
34382018-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
34632018-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
35292018-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
35422018-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
35482018-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
35532018-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
35582018-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
35762018-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
35842018-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
36122018-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
36232018-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
36292018-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
36432018-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
36722018-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
37252018-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
37852018-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
37992018-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
38112018-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
38162018-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
38322018-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
38612018-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
38742018-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
39202018-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
39262018-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
39552018-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
39642018-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
39702018-06-26  Jonathan Wakely  <jwakely@redhat.com>
3971
3972          * include/bits/regex.tcc (regex_iterator::operator==): Add missing
3973          noexcept.
3974
39752018-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
39982018-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
40192018-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
40722018-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
40792018-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
40932018-06-19  Jonathan Wakely  <jwakely@redhat.com>
4094
4095          * include/std/utility: Remove unused <exception> header.
4096
40972018-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
41202018-06-18  Maya Rashish  <coypu@sdf.org>
4121
4122          * crossconfig.m4: Handle OpenBSD just like NetBSD.
4123          * configure: Rebuilt.
4124
41252018-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
41722018-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
41882018-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
42352018-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
43642018-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
43732018-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
43842018-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
44092018-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
44262018-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
45162018-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
45322018-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
45432018-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
45512018-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
45562018-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
45622018-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
45772018-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
45872018-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
45972018-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
46112018-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
47972018-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
48222018-05-29  Jonathan Wakely  <jwakely@redhat.com>
4823
4824          * include/std/variant (__erased_dtor): Qualify call to __get.
4825
48262018-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
48492018-05-25  François Dumont  <fdumont@gcc.gnu.org>
4850
4851          PR libstdc++/85768
4852          * src/c++11/debug.cc: Remove backtrace usage.
4853
48542018-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
48602018-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
48992018-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
49412018-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
49762018-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
49832018-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
49992018-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
50072018-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
50392018-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
50552018-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
50692018-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
50832018-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
51722018-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
51952018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
5196
5197          PR libstdc++/80165
5198          * testsuite/20_util/variant/80165.cc: New.
5199
52002018-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
52082018-05-10  Jason Merrill  <jason@redhat.com>
5209
5210          * include/bits/regex_compiler.h (_S_cache_size): Change from
5211          function to variable.
5212
52132018-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
52232018-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
52332018-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
52652018-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
52732018-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
53332018-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
53452018-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
53542018-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
53602018-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
53732018-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
54382018-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
54502018-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
54912018-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
55042018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5505
5506          * configure: Regenerated.
5507
55082018-04-19  Jakub Jelinek  <jakub@redhat.com>
5509
5510          * configure: Regenerated.
5511
55122018-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
55202018-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
55262018-04-18  David Malcolm  <dmalcolm@redhat.com>
5527
5528          PR jit/85384
5529          * configure: Regenerate.
5530
55312018-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
56322018-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
56412018-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
56502018-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
56612018-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
57032018-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
57082018-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
57152018-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
57212018-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
57302018-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
57362018-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
57462018-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
57622018-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
57722018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
5773
5774          * doc/xml/manual/documentation_hacking.xml: Adjust link to
5775          docbook.org.
5776
57772018-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
57822018-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
57942018-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
58042018-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
58102018-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
58192018-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
58322018-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
58412018-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
58492018-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
58602018-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
58682018-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
58732018-02-19  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5874
5875          PR target/84148
5876          * configure: Regenerate.
5877
58782018-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
58872018-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
59022018-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
59082018-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
59542018-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
59622018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
5963
5964          * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
5965
59662018-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
59722018-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
59862018-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
60062018-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
60282018-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
60332018-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
60402018-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
60462018-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
60712018-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
60842018-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
61052018-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
61182018-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
61432018-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
61722018-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
61772018-01-03  Jakub Jelinek  <jakub@redhat.com>
6178
6179          Update copyright years.
6180
6181Copyright (C) 2018 Free Software Foundation, Inc.
6182
6183Copying and distribution of this file, with or without modification,
6184are permitted in any medium without royalty provided the copyright
6185notice and this notice are preserved.
6186