PR tree-optimization/86034
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob88e7c6dce515eba1caf32404bc8841beb33aef16
1 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
3         PR libstdc++/78870 support std::filesystem on Windows
4         * config.h.in: Regenerate.
5         * configure: Regenerate.
6         * configure.ac: Check for link, readlink and symlink.
7         * include/bits/fs_path.h (path::operator/=(const path&)): Move
8         definition out of class body.
9         (path::is_absolute(), path::_M_append(path)): Likewise.
10         (operator<<(basic_ostream, const path&)): Use std::quoted directly.
11         (operator>>(basic_istream, path&)): Likewise.
12         (u8path): Reorder definitions and fix Windows implementation.
13         (path::is_absolute()): Define inline and fix for Windows.
14         [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
15         Define POSIX version inline.
16         (path::_M_append(path)): Define inline.
17         * include/experimental/bits/fs_path.h (path::is_absolute()): Move
18         definition out of class body.
19         (operator<<(basic_ostream, const path&)): Fix type of delimiter and
20         escape characters.
21         (operator>>(basic_istream, path&)): Likewise.
22         (path::is_absolute()): Define inline and fix for Windows.
23         * src/filesystem/dir-common.h (__gnu_posix): New namespace.
24         (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
25         (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
26         Define as adaptors for Windows functions/types or as
27         using-declarations for POSIX functions/types.
28         (_Dir_base, get_file_type): Qualify names to use declarations from
29         __gnu_posix namespace.
30         (_Dir_base::is_dor_or_dotdot): New helper functions.
31         * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
32         names to use declarations from __gnu_posix namespace.
33         * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
34         (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
35         (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
36         (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
37         (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
38         (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
39         Define as adaptors for Windows functions/types or as
40         using-declarations for POSIX functions/types.
41         (stat_type, do_copy_file): Qualify names to use declarations from
42         __gnu_posix namespace.
43         (do_space): Declare new function.
44         (make_file_type): Only use S_ISLNK if defined.
45         * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
46         path::value_type not char.
47         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
48         names to use declarations from __gnu_posix namespace.
49         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
50         add implementation for Windows.
51         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
52         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
53         [!_PC_PATH_MAX]: Don't use pathconf.
54         [PATH_MAX]: Use if defined.
55         (filesystem::current_path(const path&, error_code&))
56         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
57         (filesystem::last_write_time, filesystem::permissions): Use names
58         from __gnu_posix.
59         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
60         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
61         implementation for Windows.
62         (filesystem::rename, filesystem::resize_file): Use names from
63         __gnu_posix.
64         (filesystem::space): Use do_space.
65         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
66         (filesystem::status, filesystem::symlink_status): Use names from
67         __gnu_posix.
68         (filesystem::temp_directory_path): Add implementation for Windows.
69         * src/filesystem/path.cc (dot): Define constant.
70         (path::replace_extension): Use dot.
71         (path::_M_find_extension): Likewise. Use path::string_type not
72         std::string.
73         (path::_M_split_cmpts): Use dot.
74         (filesystem_error::_M_get_what): Use u8string() not native().
75         * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
76         Qualify names to use declarations from __gnu_posix namespace.
77         * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
78         correct error_code.
79         (filesystem::absolute(const path&, error_code&)): Add implementation
80         for Windows.
81         (char_ptr, filesystem::canonical): Use path::value_type not char.
82         (do_copy_file): Use names from __gnu_posix.
83         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
84         sendfile.
85         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
86         names to use declarations from __gnu_posix namespace.
87         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
88         add implementation for Windows.
89         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
90         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
91         [!_PC_PATH_MAX]: Don't use pathconf.
92         [PATH_MAX]: Use if defined.
93         (filesystem::current_path(const path&, error_code&))
94         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
95         (filesystem::last_write_time, filesystem::permissions): Use names
96         from __gnu_posix.
97         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
98         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
99         implementation for Windows.
100         (filesystem::rename, filesystem::resize_file): Use names from
101         __gnu_posix.
102         (do_space): Define.
103         (filesystem::space): Use do_space.
104         (filesystem::status, filesystem::symlink_status): Use names from
105         __gnu_posix.
106         (filesystem::temp_directory_path): Add implementation for Windows.
107         * src/filesystem/std-path.cc
108         [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
109         Define for Windows.
110         (dot): Define constant.
111         (path::replace_extension, is_dot): Use dot.
112         (path::lexically_normal): Check _M_type instead of calling
113         non-existent function.
114         (path::_M_find_extension): Use dot. Use path::string_type not
115         std::string.
116         (path::_M_split_cmpts): Use dot.
117         (filesystem_error::_M_get_what): Use u8string() not native().
118         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
119         use symlinks.
120         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
121         Likewise.
122         * testsuite/27_io/filesystem/operations/absolute.cc: Use
123         __gnu_test::root_path() instead of "/" and add Windows-specific tests.
124         * testsuite/27_io/filesystem/operations/canonical.cc: Use
125         path::string() to get narrow string, not path::native().
126         * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
127         with std::filesystem::path not std::basic_string.
128         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
129         * testsuite/27_io/filesystem/operations/exists.cc: Use
130         __gnu_test::root_path() instead of "/".
131         * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
132         fstreams with std::filesystem::path not std::basic_string.
133         * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
134         path::string() to get narrow string.
135         * testsuite/27_io/filesystem/operations/space.cc: Check results for
136         errors, expect sensible values otherwise.
137         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
138         helpers for adjusting the environment on Windows.
139         * testsuite/27_io/filesystem/path/append/path.cc: Test
140         Windows-specific behaviour.
141         * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
142         of path::string_type objects.
143         * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
144         string to wide string on Windows.
145         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
146         for backslash as root-directory.
147         * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
148         path::string() to get narrow string.
149         * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
150         paths.
151         * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
152         not std::string.
153         * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
154         different definintion of absolute paths on Windows.
155         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
156         Do not use symlinks.
157         * testsuite/experimental/filesystem/operations/absolute.cc: Test
158         Windows behaviour.
159         * testsuite/experimental/filesystem/operations/copy.cc: Construct
160         fstreams with NTCTS not std::basic_string.
161         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
162         * testsuite/experimental/filesystem/operations/exists.cc: Use
163         __gnu_test::root_path() instead of "/".
164         * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
165         fstreams with NTCTS not std::basic_string.
166         * testsuite/experimental/filesystem/operations/last_write_time.cc:
167         Use path::string() to get narrow string.
168         * testsuite/experimental/filesystem/operations/space.cc: Use
169         __gnu_test::root_path() instead of "/".
170         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
171         Add helpers for adjusting the environment on Windows.
172         * testsuite/experimental/filesystem/path/append/path.cc: Use
173         path::string() to get narrow strings for comparisons.
174         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
175         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
176         Likewise.
177         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
178         * testsuite/experimental/filesystem/path/native/string.cc: Use
179         string_type not std::string.
180         * testsuite/experimental/filesystem/path/query/is_absolute.cc:
181         Adjust for different definintion of absolute paths on Windows.
182         * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
183         function.
184         (__gnu_test::scoped_file): Construct fstreams with NTCTS not
185         std::basic_string.
187 2018-05-31  Jonathan Wakely  <jwakely@redhat.com>
189         PR libstdc++/85951
190         * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
191         uint_least16_t and uint_least32_t.
192         (__make_unsigned<wchar_t>): Define unconditionally.
193         (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
194         typedefs.
195         (__make_unsigned_selector_base): New type to provide helper templates.
196         (__make_unsigned_selector<_Tp, false, true>): Reimplement using
197         __make_unsigned_selector_base helpers.
198         (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
199         (__make_signed_selector<_Tp, true, false>): Remove intermediate
200         typedefs.
201         (__make_signed<wchar_t>, __make_signed<char16_t>)
202         (__make_signed<char32_t>)): Define unconditionally.
203         * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
204         wchar_t, char16_t and char32_t are transformed correctly.
205         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
206         dg-error lineno.
207         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
208         wchar_t, char16_t and char32_t are transformed correctly.
209         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
210         dg-error lineno.
212 2018-05-29  Jonathan Wakely  <jwakely@redhat.com>
214         * include/std/variant (__erased_dtor): Qualify call to __get.
216 2018-05-27  François Dumont  <fdumont@gcc.gnu.org>
218         * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
219         (_Rb_tree(const allocator_type&)): Use latter.
220         * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
221         (map(initializer_list<value_type>, const allocator_type&)): Likewise.
222         (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
223         * include/bits/stl_multimap.h
224         (multimap(const allocator_type&)): Likewise.
225         (multimap(initializer_list<value_type>, const allocator_type&)):
226         Likewise.
227         (multimap(_InputIterator, _InputIterator, const allocator_type&)):
228         Likewise.
229         * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
230         (set(initializer_list<value_type>, const allocator_type&)): Likewise.
231         (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
232         * include/bits/stl_multiset.h
233         (multiset(const allocator_type&)): Likewise.
234         (multiset(initializer_list<value_type>, const allocator_type&)):
235         Likewise.
236         (multiset(_InputIterator, _InputIterator, const allocator_type&)):
237         Likewise.
239 2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
241         PR libstdc++/85768
242         * src/c++11/debug.cc: Remove backtrace usage.
244 2018-05-24  Maya Rashish  <coypu@sdf.org>
246         PR target/85904
247         * crossconfig.m4: Test for aligned_alloc on netbsd.
248         * configure: Regenerate.
250 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
252         PR libstdc++/69769
253         PR libstdc++/85886
254         * include/bits/atomic_base.h (__atomic_base::value_type)
255         (__atomic_base::difference_type): Add new typedefs.
256         * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
257         (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
258         (atomic<T*>::operator++, atomic<T*>::operator--)
259         (atomic<T*>::operator+=, atomic<T*>::operator-=)
260         (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
261         to enforce C++17 requirement on pointer arithmetic.
262         (__atomic_val_t, __atomic_diff_t): New alias templates.
263         (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
264         (atomic_compare_exchange_weak_explicit)
265         (atomic_compare_exchange_strong_explicit, atomic_store)
266         (atomic_exchange, atomic_compare_exchange_weak)
267         (atomic_compare_exchange_strong): Use __atomic_val_t to make
268         scalar parameters be non-deduced contexts.
269         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
270         (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
271         atomic instead of __atomic_base, and use __atomic_diff_t for scalar
272         parameters.
273         (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
274         (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
275         (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
276         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
277         (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
278         address types.
279         * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
280         * testsuite/29_atomics/atomic/69769.cc: New test.
281         * testsuite/29_atomics/atomic/nonmembers.cc: New test.
282         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
283         Disable test for C++17 and later.
284         * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
285         * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
286         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
287         test.
289 2018-05-23  Jonathan Wakely  <jwakely@redhat.com>
291         * include/bits/fs_path.h (path::__is_encoded_char): Change from class
292         template to alias template.
293         (path::__value_type_is_char): Use remove_const_t.
294         (path:_S_string_from_iter): New helper function.
295         (path::_S_convert(InputIter, __null_terminated))
296         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
297         Use _S_string_from_iter.
298         (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
299         rep for COW strings.
300         * include/experimental/bits/fs_path.h (path::__is_encoded_char):
301         Change from class template to alias template.
302         (path::__value_type_is_char): Use remove_const.
303         (path:_S_string_from_iter): New helper function.
304         (path::_S_convert(InputIter, __null_terminated))
305         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
306         Use _S_string_from_iter.
307         * testsuite/27_io/filesystem/path/append/source.cc: Test appending
308         wide strings.
309         * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
310         string equality, not path equivalence.
311         * testsuite/27_io/filesystem/path/construct/format.cc: Check
312         construction from std::string and std::wstring and input iterators.
313         * testsuite/27_io/filesystem/path/construct/locale.cc: Check
314         construction from iterators.
315         * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
316         exact string equality, not path equivalence.
317         * testsuite/experimental/filesystem/path/construct/locale.cc: Check
318         construction from iterators.
320         * include/bits/fs_path.h (path::_M_type): Change default member
321         initializer to _Filename.
322         (path::begin): Create past-the-end iterator for empty path.
323         * src/filesystem/std-path.cc (path::remove_filename()): Remove
324         debugging check.
325         (path::has_relative_path()): Return false for empty filenames.
326         (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
327         Fix offset of empty final component.
328         * testsuite/27_io/filesystem/path/itr/components.cc: New.
329         * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
331 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
333         Add support for opening file streams from wide character strings.
334         * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
335         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
336         Define new overload.
337         * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
338         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
339         Declare new overload.
340         * configure.ac: Check for _wfopen.
341         * crossconfig.m4: Likewise.
342         * configure: Regenerate.
343         * config.h.in: Regenerate.
344         * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
345         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
346         Define new overload.
347         * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
348         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
349         Declare new overload.
350         [_GLIBCXX_HAVE__WFOPEN]
351         (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
352         (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
353         (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
354         (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
355         (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
356         (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
357         new overloads.
358         * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
359         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
360         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
361         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
362         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
363         * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
364         * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
366 2018-05-21  François Dumont  <fdumont@gcc.gnu.org>
368         PR libstdc++/85845
369         * include/bits/stl_tree.h
370         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
371         qualification.
373 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
375         * src/filesystem/std-ops.cc (absolute): Report an error for empty
376         paths.
377         (weakly_canonical(const path&)): Do not call canonical on empty path.
378         (weakly_canonical(const path&, error_code&)): Likewise.
379         * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
381         PR libstdc++/85818
382         * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
383         dg-require-filesystem-ts.
385         PR libstdc++/85843
386         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
387         initialize base class to avoid warnings.
389 2018-05-19  Jonathan Wakely  <jwakely@redhat.com>
391         * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
392         [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
393         little_endian element in bitmask.
394         * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
395         * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
397 2018-05-18  François Dumont  <fdumont@gcc.gnu.org>
399         * include/bits/stl_tree.h
400         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
401         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
402         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
403         (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
404         * include/debug/map.h
405         (map(map&&, const_allocator_type&)): Add noexcept qualitication.
406         * include/debug/multimap.h
407         (multimap(multimap&&, const_allocator_type&)): Likewise.
408         * include/debug/set.h
409         (set(set&&, const_allocator_type&)): Likewise.
410         * include/debug/multiset.h
411         (multiset(multiset&&, const_allocator_type&)): Likewise.
412         * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
413         Add checks.
414         * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
415         Add checks.
416         * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
417         Add checks.
418         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
419         Add checks.
420         * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
421         Add checks.
422         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
423         Add checks.
424         * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
425         Add checks.
426         * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
427         Add checks.
429 2018-05-18  Jason Merrill  <jason@redhat.com>
431         * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
432         for conversion to const_iterator.  Add defaulted copy ops.
433         * libsupc++/new (bad_alloc): Add defaulted copy ops.
434         * libsupc++/exception.h (exception): Add defaulted copy ops.
435         * include/std/system_error (system_error): Add defaulted copy ops.
436         * include/std/stdexcept (domain_error, invalid_argument)
437         (length_error, out_of_range, range_error, overflow_error)
438         (underflow_error): Add defaulted copy ops.
439         * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
440         copy assignment.
441         * include/bits/allocator.h (allocator): Add defaulted copy assignment.
442         * include/ext/throw_allocator.h (condition_base): Add defaulted
443         default and copy ctor and copy assignment.
445 2018-05-18  Jonathan Wakely  <jwakely@redhat.com>
447         PR libstdc++/85098
448         * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
449         (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
450         (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
451         (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
452         definitions.
453         * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
454         whitespace.
455         * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
456         braces around body of do-while.
457         * testsuite/28_regex/basic_regex/85098.cc: New
459 2018-05-17  Jonathan Wakely  <jwakely@redhat.com>
461         PR libstdc++/85818
462         * src/filesystem/path.cc (path::preferred_separator): Add used
463         attribute.
464         * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
466         PR libstdc++/85812
467         * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
468         * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
469         Refactor to separate non-throwing and throwing implementations.
470         [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
471         if constructing the object throws.
473 2018-05-15  Jonathan Wakely  <jwakely@redhat.com>
475         PR libstdc++/85749
476         * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
477         (linear_congruential_engine, mersenne_twister_engine)
478         (subtract_with_carry_engine, discard_block_engine)
479         (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
480         constrain function templates taking seed sequences.
481         * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
482         (mersenne_twister_engine::seed(_Sseq&))
483         (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
484         match declarations.
485         * include/ext/random (simd_fast_mersenne_twister_engine): Use
486         __is_seed_seq to constrain function templates taking seed sequences.
487         * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
488         Change return type to match declaration.
489         * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
490         New.
491         * testsuite/26_numerics/random/independent_bits_engine/cons/
492         seed_seq2.cc: New.
493         * testsuite/26_numerics/random/linear_congruential_engine/cons/
494         seed_seq2.cc: New.
495         * testsuite/26_numerics/random/mersenne_twister_engine/cons/
496         seed_seq2.cc: New.
497         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
498         * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
499         New.
500         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
501         seed_seq2.cc: New.
502         * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
503         seed_seq2.cc: New.
505         PR libstdc++/83891
506         * include/bits/fs_path.h (path::is_absolute()): Use same definition
507         for all operating systems.
508         * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
509         * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
510         * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
511         * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
513         * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
514         unused <vector> header.
515         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
516         * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
517         * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
518         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
519         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
520         Likewise.
521         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
522         Likewise.
523         * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
524         * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
525         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
526         * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
527         * testsuite/experimental/filesystem/path/decompose/extension.cc:
528         Likewise.
529         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
530         * testsuite/experimental/filesystem/path/query/has_extension.cc:
531         Likewise.
532         * testsuite/experimental/filesystem/path/query/has_filename.cc:
533         Likewise.
534         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
535         Likewise.
536         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
537         Likewise.
538         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
539         Likewise.
540         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
541         Likewise.
542         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
543         Likewise.
544         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
545         * testsuite/experimental/filesystem/path/query/is_relative.cc:
546         Likewise.
548         PR libstdc++/84159
549         * include/bits/fs_path.h (path::operator/=, path::append): Construct
550         temporary path before calling _M_append.
551         (path::_M_append): Change parameter to path and implement C++17
552         semantics.
553         * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
554         and more examples from the standard.
555         * testsuite/27_io/filesystem/path/append/source.cc: New.
556         * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
557         * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
559         * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
560         __invoke to prevent ADL.
562 2018-05-14  Jonathan Wakely  <jwakely@redhat.com>
564         PR libstdc++/81256
565         * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
566         exceptions from _M_terminate_output().
567         * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
568         exceptions from close().
569         * testsuite/27_io/basic_filebuf/close/81256.cc: New.
571         * include/bits/valarray_array.h (__valarray_get_memory): Remove.
572         (__valarray_get_storage): Call operator new directly. Remove ignored
573         top-level restrict qualifier and add malloc attribute instead.
574         (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
576         PR libstdc++/67554
577         * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
578         (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
580         PR libstdc++/82966
581         * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
582         instead of type.
583         * testsuite/23_containers/set/modifiers/node_swap.cc: New.
585 2018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
587         PR libstdc++/80165
588         * testsuite/20_util/variant/80165.cc: New.
590 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
592         * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
593         * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
594         of C++11 containers with Debug Mode support.
595         * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
596         * doc/html/*: Regenerate.
598 2018-05-10  Jason Merrill  <jason@redhat.com>
600         * include/bits/regex_compiler.h (_S_cache_size): Change from
601         function to variable.
603 2018-05-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
605         PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
606         * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
607         argument defaulted to +1.  Doxy comments on same.
608         * testsuite/special_functions/02_assoc_legendre/
609         check_value.cc: Regen.
610         * testsuite/tr1/5_numerical_facilities/special_functions/
611         02_assoc_legendre/check_value.cc: Regen.
613 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
615         PR libstdc++/85729
616         * include/bits/c++config.h (__replacement_assert): Add linkage
617         specification.
618         * include/bits/std_abs.h: Add comment to closing brace of block.
619         * include/c_global/cstddef: Add linkage specification.
620         * include/c_global/cstring: Likewise.
621         * include/c_global/cwchar: Likewise.
623 2018-05-09  François Dumont  <fdumont@gcc.gnu.org>
625         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
626         Rename in...
627         (_Safe_iterator<>::_S_constant()): ...that.
628         * include/debug/safe_local_iterator.h
629         (_Safe_local_iterator<>::_M_constant()): Rename in...
630         (_Safe_local_iterator<>::_S_constant()): ...that.
631         * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
632         (_Iterator_state::__rbegin): New.
633         (_Iterator_state::__rmiddle): New.
634         (_Iterator_state::__rend): New.
635         (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
636         _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
637         iterator type.
638         (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
639         _Is_iterator)): Likewise.
640         (_Parameter::_S_reverse_state(_Iterator_state)): New.
641         (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
642         _Is_iterator)): New.
643         (_Parameter(std::reverse_iterator<> const&, const char*,
644         _Is_iterator)): New.
645         (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
646         const char*, _Is_iterator)): New.
647         (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
648         New.
649         (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
650         _Is_iterator)): New.
651         * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
652         * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
653         * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
655 2018-05-09  Jonathan Wakely  <jwakely@redhat.com>
657         * include/bits/std_function.h (_Base_manager::_M_get_pointer):
658         Use constexpr if in C++17 mode.
659         (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
660         Copy from const object.
661         * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
663 2018-05-08  François Dumont  <fdumont@gcc.gnu.org>
665         * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
666         [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
667         backtrace.
669         * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
670         * include/debug/functions.h (__check_valid_range): Use latter.
671         * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
672         use latter.
673         * include/debug/deque
674         (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
675         * include/debug/forward_list
676         (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
677         Likewise.
678         * include/debug/list
679         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
680         * include/debug/list
681         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
682         * include/debug/map.h
683         (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
684         (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
685         Likewise.
686         * include/debug/multimap.h
687         (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
688         (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
689         const _Alloc&)): Likewise.
690         * include/debug/set.h
691         (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
692         (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
693         Likewise.
694         * include/debug/multiset.h
695         (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
696         (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
697         const _Alloc&)): Likewise.
698         * include/debug/string
699         (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
700         Likewise.
701         * include/debug/unordered_map
702         (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
703         Likewise.
704         (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
705         const _Alloc&)): Likewise.
706         * include/debug/unordered_set
707         (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
708         Likewise.
709         (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
710         const _Alloc&)): Likewise.
711         * include/debug/vector
712         (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
714         * include/debug/formatter.h (_Error_formatter::_M_function): New.
715         (_Error_formatter(const char*, unsigned int)): Adapt.
716         (_Error_formatter::_M_at): Rename in...
717         (_Error_formatter::_S_at): ...that and adapt.
718         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
719         (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
720         * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
721         when available.
723 2018-05-08  Jonathan Wakely  <jwakely@redhat.com>
725         * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
726         Use normal std::vector even in Debug Mode.
728         PR libstdc++/85672
729         * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
730         to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
731         * include/Makefile.in: Regenerate.
732         * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
733         within conditional block.
735 2018-05-07  Jonathan Wakely  <jwakely@redhat.com>
737         * doc/xml/manual/using.xml (table.cmd_options): Document that the
738         C++17 Filesystem implementation also needs -lstdc++fs.
740         PR libstdc++/85671
741         * include/bits/fs_path.h (operator/): Permit copy elision.
742         * include/experimental/bits/fs_path.h (operator/): Likewise.
744 2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
746         Moar PR libstdc++/80506
747         * include/bits/random.tcc (gamma_distribution::__generate_impl()):
748         Fix magic number used in loop condition.
750 2018-05-04  Jonathan Wakely  <jwakely@redhat.com>
752         PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
753         * include/std/optional (_Optional_payload): Add noexcept to default
754         constructor. Re-indent.
755         (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
756         constructor for copying disengaged payloads.
757         (_Optional_payload<_Tp, true, false, true>): Likewise.
758         (_Optional_payload<_Tp, true, true, false>): Likewise.
759         (_Optional_payload<_Tp, true, false, false>): Likewise.
760         * testsuite/20_util/optional/cons/85642.cc: New.
761         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
763 2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
765         PR libstdc++/82644
766         * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
767         inline definitions instead of using-declarations.
768         [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
769         * testsuite/tr1/5_numerical_facilities/special_functions/
770         07_conf_hyperg/compile_cxx17.cc: New.
771         * testsuite/tr1/5_numerical_facilities/special_functions/
772         17_hyperg/compile_cxx17.cc: New.
774         PR libstdc++/84769
775         * include/std/variant (visit): Qualify std::get call.
777         PR libstdc++/85632 use uintmax_t for arithmetic
778         * src/filesystem/ops.cc (experimental::filesystem::space): Perform
779         arithmetic in result type.
780         * src/filesystem/std-ops.cc (filesystem::space): Likewise.
781         * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
782         is greater than free space.
783         * testsuite/experimental/filesystem/operations/space.cc: New.
785         * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
786         * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
787         New.
788         * testsuite/20_util/remove_cvref/value.cc: New.
789         * testsuite/20_util/remove_cvref/value_ext.cc: New.
791         PR libstdc++/84087 LWG DR 2268 basic_string default arguments
792         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
793         (append(const basic_string&, size_type, size_type)
794         (assign(const basic_string&, size_type, size_type)
795         (insert(size_type, const basic_string&, size_type, size_type)
796         (replace(size_type,size_type,const basic_string&,size_type,size_type)
797         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
798         Add default arguments (LWG 2268).
799         [_GLIBCXX_USE_CXX11_ABI=0]
800         (append(const basic_string&, size_type, size_type)
801         (assign(const basic_string&, size_type, size_type)
802         (insert(size_type, const basic_string&, size_type, size_type)
803         (replace(size_type,size_type,const basic_string&,size_type,size_type)
804         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
805         Likewise.
806         * testsuite/21_strings/basic_string/dr2268.cc: New test.
808         PR libstdc++/84535
809         * include/std/thread (thread::__not_same): New SFINAE helper.
810         (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
811         first argument is not a std::thread. Add static assertion to check
812         INVOKE expression is valid.
813         (thread::thread(thread&), thread::thread(const thread&&)): Remove.
814         (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
815         __invoke_result for return types and remove exception specifications.
816         * testsuite/30_threads/thread/cons/84535.cc: New.
818         * include/std/future (__async_result_of): Use __invoke_result instead
819         of result_of.
821         * include/std/any (any_cast): Use __remove_cvref_t.
822         * include/std/tuple (__make_tuple): Likewise.
823         * include/std/type_traits (__remove_cvref_t): Define.
824         (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
825         [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
826         * include/std/variant (__erased_hash): Use __remove_cvref_t.
828 2018-05-02  François Dumont  <fdumont@gcc.gnu.org>
830         * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
831         ensure overloaded comma not used.
832         * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
833         * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
834         * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
835         * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
836         * testsuite/23_containers/list/modifiers/assign/1.cc: New.
837         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
838         * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
840 2018-05-02  Jonathan Wakely  <jwakely@redhat.com>
842         PR libstdc++/68197
843         * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
844         indices to unsigned.
845         * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
846         as failure. Refactor error handling.
847         * testsuite/27_io/ios_base/storage/68197.cc: New.
849         PR libstdc++/57997
850         PR libstdc++/83860
851         * include/bits/gslice_array.h (gslice_array): Define default
852         constructor as deleted, as per C++11 standard.
853         * include/bits/mask_array.h (mask_array): Likewise.
854         * include/bits/slice_array.h (slice_array): Likewise.
855         * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
856         to namespace __detail.
857         (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
858         members.
859         * include/bits/valarray_before.h (_ValArrayRef): New helper for type
860         of data members in closure objects.
861         (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
862         (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
863         __detail.
864         (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
865         (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
866         (_SBase::_M_expr): Use _ValArrayRef for type of data members.
867         * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
868         (_ValFunClos, _RefFunClos): Move to namespace __detail and add
869         using-declarations to namespace std.
870         * testsuite/26_numerics/valarray/83860.cc: New.
872         * testsuite/backward/strstream_move.cc: Remove duplicate function
873         call.
875         PR libstdc++/69608
876         * include/backward/strstream (strstreambuf): Define move constructor
877         and move assignment operator.
878         (istrstream, ostrstream, strstream): Likewise.
879         * testsuite/backward/strstream_move.cc: New.
881 2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
883         PR libstdc++/84654
884         * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
885         * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
886         * configure: Regenerate.
887         * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
888         based on ENABLE_FLOAT128.
889         * include/Makefile.in: Regenerate.
890         * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
891         [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
892         _GLIBCXX_USE_FLOAT128.
894 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
896         * configure: Regenerated.
898 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
900         * configure: Regenerated.
902 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
903             Jakub Jelinek  <jakub@redhat.com>
905         PR libstdc++/85442
906         * src/c++11/Makefile.am: Don't generate debuginfo again for
907         cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
908         * src/c++11/Makefile.in: Regenerate.
910 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
912         PR libstdc++/84442
913         * testsuite/30_threads/thread/cons/terminate.cc
914         [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
916 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
918         PR jit/85384
919         * configure: Regenerate.
921 2018-04-16  Jonathan Wakely  <jwakely@redhat.com>
923         * testsuite/experimental/filesystem/file_status/1.cc: Add
924         -DUSE_FILESYSTEM_TS to dg-options.
925         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
926         Likewise.
927         * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
928         * testsuite/experimental/filesystem/iterators/
929         recursive_directory_iterator.cc: Likewise.
930         * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
931         * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
932         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
933         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
934         * testsuite/experimental/filesystem/operations/create_directories.cc:
935         Likewise.
936         * testsuite/experimental/filesystem/operations/create_directory.cc:
937         Likewise.
938         * testsuite/experimental/filesystem/operations/create_symlink.cc:
939         Likewise.
940         * testsuite/experimental/filesystem/operations/current_path.cc:
941         Likewise.
942         * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
943         * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
944         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
945         * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
946         * testsuite/experimental/filesystem/operations/last_write_time.cc:
947         Likewise.
948         * testsuite/experimental/filesystem/operations/permissions.cc:
949         Likewise.
950         * testsuite/experimental/filesystem/operations/read_symlink.cc:
951         Likewise.
952         * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
953         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
954         * testsuite/experimental/filesystem/operations/status.cc: Likewise.
955         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
956         Likewise.
957         * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
958         * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
959         * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
960         * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
961         * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
962         * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
963         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
964         * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
965         * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
966         * testsuite/experimental/filesystem/path/construct/default.cc:
967         Likewise.
968         * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
969         * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
970         * testsuite/experimental/filesystem/path/construct/string_view.cc:
971         Likewise.
972         * testsuite/experimental/filesystem/path/decompose/extension.cc:
973         Likewise.
974         * testsuite/experimental/filesystem/path/decompose/filename.cc:
975         Likewise.
976         * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
977         Likewise.
978         * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
979         Likewise.
980         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
981         Likewise.
982         * testsuite/experimental/filesystem/path/decompose/root_name.cc:
983         Likewise.
984         * testsuite/experimental/filesystem/path/decompose/root_path.cc:
985         Likewise.
986         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
987         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
988         Likewise.
989         * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
990         * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
991         * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
992         Likewise.
993         * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
994         Likewise.
995         * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
996         Likewise.
997         * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
998         Likewise.
999         * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
1000         * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
1001         * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
1002         Likewise.
1003         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
1004         * testsuite/experimental/filesystem/path/query/has_extension.cc:
1005         Likewise.
1006         * testsuite/experimental/filesystem/path/query/has_filename.cc:
1007         Likewise.
1008         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
1009         Likewise.
1010         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
1011         Likewise.
1012         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
1013         Likewise.
1014         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
1015         Likewise.
1016         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
1017         Likewise.
1018         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
1019         * testsuite/experimental/filesystem/path/query/is_relative.cc:
1020         Likewise.
1022 2018-04-13  Jonathan Wakely  <jwakely@redhat.com>
1024         * src/c++11/Makefile.am: Fix sed command.
1025         * src/c++11/Makefile.in: Regenerate.
1027         * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
1028         handle mangled names starting with double underscores on darwin.
1029         * src/c++11/Makefile.in: Regenerate.
1031 2018-04-12  Jonathan Wakely  <jwakely@redhat.com>
1033         * src/c++11/Makefile.am: Fix comment.
1034         * src/c++11/Makefile.in: Regenerate.
1035         * src/c++11/cxx11-ios_failure.cc: Fix comment.
1036         * src/c++98/ios_failure.cc: Likewise.
1038         * src/c++11/ios.cc: Remove redundant macro definition.
1040 2018-04-11  Jonathan Wakely  <jwakely@redhat.com>
1042         * doc/xml/manual/abi.xml: Document header locations in recent
1043         releases.
1044         * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
1045         * doc/xml/manual/spine.xml: Update copyright years.
1046         * doc/xml/manual/strings.xml: Adjust tolower example to avoid
1047         undefined behaviour.
1048         * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
1049         * doc/html/*: Regenerate.
1051 2018-04-10  Jonathan Wakely  <jwakely@redhat.com>
1053         * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
1054         * doc/xml/manual/backwards_compatibility.xml: Likewise.
1055         * doc/xml/manual/containers.xml: Likewise.
1056         * doc/xml/manual/debug_mode.xml: Likewise.
1057         * doc/xml/manual/extensions.xml: Likewise.
1058         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
1059         * doc/xml/manual/using.xml: Likewise.
1060         * doc/xml/manual/utilities.xml: Likewise.
1062         PR libstdc++/85222
1063         * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
1064         cxx11-ios_failure.cc to rewrite type info for __ios_failure.
1065         * src/c++11/Makefile.in: Regenerate.
1066         * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
1067         New types.
1068         [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
1069         * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
1070         * src/c++98/ios_failure.cc (__construct_ios_failure)
1071         (__destroy_ios_failure, is_ios_failure_handler): New functions.
1072         [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
1073         * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
1074         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
1075         handler types, to always catch std::ios_base::failure.
1076         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
1077         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
1078         exceptions_failbit.cc: Likewise.
1079         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
1080         exceptions_failbit.cc: Likewise.
1081         * testsuite/27_io/basic_istream/extractors_other/char/
1082         exceptions_null.cc: Likewise.
1083         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
1084         exceptions_null.cc: Likewise.
1085         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
1086         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
1087         * testsuite/27_io/basic_ostream/inserters_other/char/
1088         exceptions_null.cc: Likewise.
1089         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
1090         exceptions_null.cc: Likewise.
1091         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
1093 2018-04-05  Jonathan Wakely  <jwakely@redhat.com>
1095         * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
1096         __get calls to avoid ADL and avoid ambiguity due to Clang bug.
1098 2018-04-03  Jonathan Wakely  <jwakely@redhat.com>
1100         PR libstdc++/85183
1101         * include/std/variant (_Move_assign_base::operator=): Fix incorrect
1102         value categories.
1103         * testsuite/20_util/variant/85183.cc: New.
1105 2018-03-26  Jonathan Wakely  <jwakely@redhat.com>
1107         * include/std/variant (__get): Qualify calls to avoid ADL.
1108         (__select_index): Adjust whitespace.
1109         (variant): Add using-declaration to workaround Clang bug.
1111 2018-03-22  Jonathan Wakely  <jwakely@redhat.com>
1113         PR libstdc++/85040
1114         * include/bits/stl_function.h (greater::__not_overloaded)
1115         (less::__not_overloaded, greater_equal::__not_overloaded)
1116         (less_equal::__not_overloaded): Fix ambiguous specializations.
1117         * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
1118         tests for type with overloaded operators.
1120 2018-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1122         PR libstdc++/77691
1123         * testsuite/experimental/memory_resource/resource_adaptor.cc:
1124         xfail execution on 32-bit Solaris/x86.
1126 2018-03-21  Jonathan Wakely  <jwakely@redhat.com>
1128         * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
1129         VERIFY instead of assert.
1130         * testsuite/20_util/hash/84998.cc: New test.
1131         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
1132         copy of test adjusted for Debug Mode.
1133         * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
1134         test in Debug Mode.
1136 2018-03-20  François Dumont  <fdumont@gcc.gnu.org>
1138         PR libstdc++/84998
1139         * include/bits/stl_bvector.h: Fix std::hash friend declaration.
1140         * include/std/bitset: Likewise.
1141         * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
1142         declaration.
1143         * include/bits/stl_multimap.h (std::multimap<>): Likewise.
1144         * include/bits/stl_multiset.h (std::multiset<>): Likewise.
1145         * include/bits/stl_set.h (std::set<>): Likewise.
1146         * include/bits/unordered_map.h (std::unordered_map<>): Fix
1147         _Hash_merge_helper friend declaration.
1148         (std::unordered_multimap<>): Likewise.
1149         * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
1150         (std::unordered_multiset<>): Likewise.
1152 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
1154         * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
1155         trailing slash for domain level link.
1156         * doc/xml/faq.xml: Ditto.
1157         * doc/xml/manual/appendix_free.xml (software): Ditto.
1158         * doc/xml/manual/intro.xml: Ditto.
1159         * doc/xml/manual/spine.xml: Ditto.
1160         * doc/xml/spine.xml: Ditto.
1162 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
1164         * doc/xml/manual/documentation_hacking.xml: Adjust link to
1165         docbook.org.
1167 2018-03-17  Jonathan Wakely  <jwakely@redhat.com>
1169         * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
1170         to compile as C++98.
1172 2018-03-14  Jonathan Wakely  <jwakely@redhat.com>
1174         PR libstdc++/78420
1175         * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
1176         (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
1177         to ensure total order for pointers.
1178         (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
1179         Add operator() overloads for pointer arguments and make generic
1180         overloads dispatch to new _S_cmp functions when comparisons would
1181         use built-in operators for pointers.
1182         * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
1184 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
1186         PR libstdc++/84773
1187         PR libstdc++/83662
1188         * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
1189         * configure: Regenerate.
1190         * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
1191         (aligned_alloc): Add using-declaration.
1192         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
1194 2018-03-09  François Dumont  <fdumont@gcc.gnu.org>
1196         * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
1197         Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
1198         registration.
1200 2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
1202         PR libstdc++/84769
1203         * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
1204         Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
1206         src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
1207         src/filesystem/std-ops.cc (create_dir): Likewise.
1209 2018-03-08  François Dumont  <fdumont@gcc.gnu.org>
1211         * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
1212         (StdListIteratorPrinter): Inherit from latter.
1213         (StdFwdListIteratorPrinter): New, inherit from latter.
1214         (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
1215         when iterator has no associated container.
1216         (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
1217         __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
1218         registrations.
1219         * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
1220         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
1222 2018-03-06  Ville Voutilainen  <ville.voutilainen@gmail.com>
1224         PR libstdc++/84601
1225         * include/std/optional (_Optional_payload): Split into multiple
1226         specializations that can handle different cases of trivial or
1227         non-trivial assignment operators.
1228         * testsuite/20_util/optional/84601.cc: New.
1229         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
1231 2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
1233         PR libstdc++/84671
1234         * include/bits/parse_numbers.h (_Number_help): Add partial
1235         specialization to handle digit separators. Adjust partial
1236         specialization for recursion temrination to require _Pow == 1ULL.
1237         * testsuite/20_util/duration/literals/84671.cc: New
1239 2018-02-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
1241         Implement the missing bits of LWG 2769
1242         * include/std/any (any_cast(const any&)): Add static_assert.
1243         (any_cast(any&)): Likewise.
1244         (any_cast(any&&)): Likewise, and remove the handling
1245         for copyable-but-not-movable type.
1246         * testsuite/20_util/any/misc/any_cast.cc: Adjust.
1247         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
1248         add new tests.
1250 2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
1252         PR libstdc++/84532
1253         * include/std/thread (thread::__make_invoker): Construct tuple
1254         directly instead of using make_tuple.
1255         * testsuite/30_threads/async/84532.cc: New.
1256         * testsuite/30_threads/thread/84532.cc: New.
1258 2018-02-20  François Dumont  <fdumont@gcc.gnu.org>
1260         * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
1261         (template<> __aligned_buffer): Define as __aligned_membuf alias.
1263 2018-02-19  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
1265         PR target/84148
1266         * configure: Regenerate.
1268 2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
1270         PR libstdc++/81797
1271         * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
1272         * configure: Regenerate.
1273         * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
1274         defined.
1275         * include/Makefile.in: Regenerate.
1277 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
1279         PR libstdc++/83833
1280         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
1281         Add -ffloat-store to options for m68k and ia32.
1283         * doc/xml/faq.xml: Update copyright years.
1284         * doc/html/*: Regenerate.
1286         PR libstdc++/83658
1287         * include/std/any (any::__do_emplace): Only set _M_manager after
1288         constructing the contained object.
1289         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
1290         * testsuite/20_util/any/modifiers/83658.cc: New test.
1292 2018-01-25  Jonathan Wakely  <jwakely@redhat.com>
1294         PR libstdc++/81076
1295         * include/c_global/cstddef (__byte_operand): Define primary template.
1296         * testsuite/18_support/byte/81076.cc: New test.
1298 2018-01-19  Christophe Lyon  <christophe.lyon@linaro.org>
1300         * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
1301         dg-options and dg-add-options order.
1302         * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
1303         * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
1304         Likewise.
1305         * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
1306         * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
1307         Likewise.
1308         * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
1309         Likewise.
1310         * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
1311         * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
1312         Likewise.
1313         * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
1314         Likewise.
1315         * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
1316         Likewise.
1317         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
1318         Likewise.
1319         * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
1320         Likewise.
1321         * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
1322         Likewise.
1323         * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
1324         Likewise.
1325         * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
1326         Likewise.
1327         * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
1328         * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
1329         * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
1330         * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
1331         * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
1332         * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
1333         * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
1334         * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
1335         * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
1336         Likewise.
1337         * testsuite/special_functions/19_sph_bessel/check_nan.cc:
1338         Likewise.
1339         * testsuite/special_functions/20_sph_legendre/check_nan.cc:
1340         Likewise.
1341         * testsuite/special_functions/21_sph_neumann/check_nan.cc:
1342         Likewise.
1344 2018-01-18  Uros Bizjak  <ubizjak@gmail.com>
1346         * configure.ac (AC_CHECK_HEADERS): Add linux/types.h.  Conditionally
1347         include linux/types.h when checking linux/random.h header.
1348         * config.h.in: Regenerate.
1349         * configure: Ditto.
1350         * src/c++11/random.cc: Conditionally include linux/types.h.
1352 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
1354         * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
1356 2018-01-16  Jonathan Wakely  <jwakely@redhat.com>
1358         PR libstdc++/83834
1359         * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
1360         pattern with exact match for std::cerr.
1362 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
1364         PR libstdc++/83833
1365         * include/bits/random.h (chi_squared_distribution::param): Update
1366         gamma distribution parameter.
1367         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
1368         test.
1370         PR libstdc++/83830
1371         * include/std/type_traits (has_unique_object_representations_v): Add
1372         variable template.
1373         * testsuite/20_util/has_unique_object_representations/value.cc: Check
1374         variable template.
1376 2018-01-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
1378         Make optional conditionally
1379         trivially_{copy,move}_{constructible,assignable}
1380         * include/std/optional (_Optional_payload): Fix the comment in
1381         the class head and turn into a primary and one specialization.
1382         (_Optional_payload::_M_engaged): Strike the NSDMI.
1383         (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
1384         New.
1385         (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
1386         Likewise.
1387         (_Optional_payload<_Tp, false>::_M_get): Likewise.
1388         (_Optional_payload<_Tp, false>::_M_reset): Likewise.
1389         (_Optional_base_impl): Likewise.
1390         (_Optional_base): Turn into a primary and three specializations.
1391         (optional(nullopt)): Change the base init.
1392         * testsuite/20_util/optional/assignment/8.cc: New.
1393         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
1394         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
1396 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
1398         PR libstdc++/80276
1399         * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
1400         (get_template_arg_list): New.
1401         (StdVariantPrinter._template_args): Remove, use get_template_arg_list
1402         instead.
1403         (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
1404         of strings and regular expressions.
1405         (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
1406         (FilteringTypePrinter): Add docstring. Match using startswith. Use
1407         strip_inline_namespaces instead of strip_versioned_namespace.
1408         (add_one_type_printer): Prepend namespace to match argument.
1409         (register_type_printers): Add type printers for char16_t and char32_t
1410         string types and for types using cxx11 ABI. Update calls to
1411         add_one_template_type_printer to provide default argument dicts.
1412         * testsuite/libstdc++-prettyprinters/80276.cc: New test.
1413         * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
1414         basic_string<unsigned char> and basic_string<signed char>.
1415         * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
1416         to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
1418 2018-01-14  Andreas Schwab  <schwab@linux-m68k.org>
1420         PR libstdc++/81092
1421         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
1423 2018-01-13  Tim Shen  <timshen@google.com>
1425         PR libstdc++/83601
1426         * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
1427         * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
1428         * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
1430 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1432         PR libstdc++/64054
1433         * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
1434         Remove dg-xfail-run-if.
1436 2018-01-10  François Dumont  <fdumont@gcc.gnu.org>
1438         * include/bits/forward_list.h
1439         (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
1440         (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
1441         (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
1442         (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
1443         (_Fwd_list_impl()): Add noexcept qualification.
1444         (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
1445         (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
1446         (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
1447         (_Fwd_list_base()): Default.
1448         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
1449         (_Fwd_list_base(_Fwd_list_base&&)): Default.
1450         (forward_list<>()): Default.
1451         (forward_list<>(forward_list&&)): Default.
1452         (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
1453         (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
1454         (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
1455         * include/bits/forward_list.tcc
1456         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
1457         _M_impl._M_head move assignment.
1458         (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
1459         * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
1461 2018-01-09  Jonathan Wakely  <jwakely@redhat.com>
1463         PR libstdc++/80276
1464         * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
1465         (UniquePointerPrinter): Print correct template argument, not type of
1466         the pointer.
1467         (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
1468         a type.
1469         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
1470         array type.
1471         * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
1472         weak_ptr of array types.
1474 2018-01-09  François Dumont  <fdumont@gcc.gnu.org>
1476         PR libstdc++/83709
1477         * include/bits/hashtable_policy.h
1478         (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
1479         __first != __last.
1480         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
1481         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
1482         Add false_type parameter.
1483         (_Insert_base::insert): Adapt.
1484         * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
1485         Adapt.
1486         (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
1487          Add __n_elt parameter, defaulted to 1.
1488         (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
1489         policy _M_need_rehash.
1490         (_Hashtable::_M_merge_unique): Pass target number of elements to add to
1491         produce only 1 rehash if necessary.
1492         * testsuite/23_containers/unordered_map/insert/83709.cc: New.
1493         * testsuite/23_containers/unordered_set/insert/83709.cc: New.
1495 2018-01-09  Juraj Oršulić  <juraj.orsulic@fer.hr>
1496             Jonathan Wakely  <jwakely@redhat.com>
1498         PR libstdc++/59253 (partial)
1499         * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
1500         type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
1501         (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
1502         children.
1503         * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
1504         of unique_ptr printer.
1505         * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
1506         output of shared_ptr printer.
1508 2018-01-05  Jonathan Wakely  <jwakely@redhat.com>
1510         PR libstdc++/83626
1511         * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
1512         unnecessary symlink_status call.
1513         (remove_all(const path&, error_code&)): Use filesystem::remove.
1514         * src/filesystem/std-ops.cc: Likewise.
1516         PR libstdc++/83279
1517         * src/filesystem/std-ops.cc  (do_copy_file): Use non-null offset with
1518         sendfile.
1520         PR libstdc++/83626
1521         * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
1522         report an error for ENOENT.
1523         (remove_all(const path&)): Fix type of result variable.
1524         (remove_all(const path&, error_code&)): Use non-throwing increment
1525         for directory iterator. Call POSIX remove directly to avoid redundant
1526         calls to symlink_status. Do not report errors for ENOENT.
1527         * src/filesystem/std-ops.cc: Likewise.
1528         * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
1529         overload.
1530         * testsuite/experimental/filesystem/operations/remove_all.cc:
1531         Likewise.
1533 2018-01-04  Jonathan Wakely  <jwakely@redhat.com>
1535         PR libstdc++/83626
1536         * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
1537         redundant call to ec.clear().
1538         (remove_all(const path&, error_code&))): Do not return an error for
1539         non-existent paths.
1540         * src/filesystem/std-ops.cc: Likewise.
1541         * testsuite/27_io/filesystem/operations/remove.cc: New test.
1542         * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
1543         results for non-existent paths.
1544         * testsuite/experimental/filesystem/operations/remove.cc: New test.
1545         * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
1546         expected results for non-existent paths.
1548         * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
1549         check status_known once.
1550         * include/experimental/bits/fs_ops.h: Likewise.
1552         PR libstdc++/83607
1553         * include/std/functional (__is_byte_like): New trait.
1554         (__is_std_equal_to): Remove.
1555         (__boyer_moore_base_t): Use __is_byte_like instead of
1556         __is_std_equal_to.
1557         * include/experimental/functional (__is_std_equal_to): Remove.
1558         (__boyer_moore_base_t): Use __is_byte_like instead of
1559         __is_std_equal_to.
1560         * testsuite/20_util/function_objects/83607.cc: New test.
1562 2018-01-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
1564         Protect optional's deduction guide with the feature macro
1565         * include/std/optional: Use the feature macro.
1567 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1569         Update copyright years.
1571 Copyright (C) 2018 Free Software Foundation, Inc.
1573 Copying and distribution of this file, with or without modification,
1574 are permitted in any medium without royalty provided the copyright
1575 notice and this notice are preserved.