* tree-vect-loop-manip.c (vect_do_peeling): Do not use
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob99bfbbad707aa22745af51976f648b35461e665c
1 2017-11-15  Jason Merrill  <jason@redhat.com>
3         * include/std/numeric (gcd): Fix typo.
5 2017-11-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
7         Fix gcd breakage.
8         * include/std/numeric (gcd): Use remove_cv_t, not remove_cv.
10 2017-11-15  Jonathan Wakely  <jwakely@redhat.com>
12         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Leave
13         error_code unset.
14         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
15         Check for past-the-end before dereferencing.
16         * testsuite/experimental/filesystem/iterators/
17         recursive_directory_iterator.cc: Likewise.
19         * include/bits/range_access.h (size, empty, data): Add conditional
20         noexcept to generic overloads.
22 2017-11-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
24         Implement LWG 2733 and LWG 2759
25         * include/experimental/numeric (gcd): Reject cv-qualified bool.
26         (lcm): Likewise.
27         * include/std/numeric (gcd): Likewise.
28         (lcm): Likewise.
29         * testsuite/26_numerics/gcd/gcd_neg.cc: Add tests and adjust.
30         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
32 2017-11-14  Jonathan Wakely  <jwakely@redhat.com>
34         * include/bits/locale_conv.h (wbuffer_convert::_M_conv_get): Fix typo.
35         * testsuite/22_locale/conversions/buffer/3.cc: New test.
37 2017-11-10  Jonathan Wakely  <jwakely@redhat.com>
39         * testsuite/util/testsuite_tr1.h (ThrowMoveConsClass): Use noexcept.
41         PR libstdc++/82917
42         * include/std/fstream (basic_ifstream::open, basic_ofstream::open)
43         (basic_fstream::open): Fix missing return.
45 2017-11-07  Jonathan Wakely  <jwakely@redhat.com>
47         * src/filesystem/ops-common.h (make_file_type) [S_ISSOCK]: Only use
48         S_ISSOCK when defined.
50 2017-11-06  François Dumont  <fdumont@gcc.gnu.org>
52         * testsuite/libstdc++-prettyprinters/tr1.cc:  Compile with -O0.
54 2017-11-06  Martin Liska  <mliska@suse.cz>
56         * testsuite/27_io/basic_fstream/cons/char/path.cc (main):
57           Return a value for functions with non-void return type,
58           or change type to void, or add -Wno-return-type for test.
59         * testsuite/27_io/basic_ifstream/cons/char/path.cc (main):
60         Likewise.
61         * testsuite/27_io/basic_ofstream/open/char/path.cc (main):
62         Likewise.
64 2017-11-06  Paolo Carlini  <paolo.carlini@oracle.com>
66         * testsuite/20_util/optional/cons/deduction.cc: Avoid -Wreturn-type
67         warnings.
68         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
69         * testsuite/20_util/pair/traits.cc: Likewise.
70         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
71         * testsuite/20_util/variant/compile.cc: Likewise.
72         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
73         * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
74         Likewise.
76 2017-11-05  Gerald Pfeifer  <gerald@pfeifer.com>
78         * doc/xml/manual/abi.xml: Move docs.oracle.com references to https.
80 2017-11-03  Jonathan Wakely  <jwakely@redhat.com>
82         * include/std/type_traits (endian): Define new enumeration type.
83         * testsuite/20_util/endian/1.cc: New test.
85         * include/bits/node_handle.h (_Node_insert_return::get): Remove, as
86         per P0508R0.
88 2017-11-01  François Dumont  <fdumont@gcc.gnu.org>
90         * python/libstdcxx/v6/printers.py (StdExpAnyPrinter.__init__): Strip
91         typename versioned namespace before the substitution.
92         (StdExpOptionalPrinter.__init__): Likewise.
93         (StdVariantPrinter.__init__): Likewise.
94         (Printer.add_version): Inject versioned namespace after std or
95         __gnu_cxx.
96         (build_libstdcxx_dictionary): Adapt add_version usages, always pass
97         namespace first and symbol second.
99 2017-11-01  Jonathan Wakely  <jwakely@redhat.com>
101         PR libstdc++/82777
102         * src/filesystem/std-path.cc (path::lexically_normal): Remove dot-dot
103         elements correctly.
104         * testsuite/27_io/filesystem/path/generation/normal.cc: Add testcase.
105         * testsuite/util/testsuite_fs.h (compare_paths): Improve exception
106         text.
108 2017-10-30  Jonathan Wakely  <jwakely@redhat.com>
110         * include/Makefile.am (stamp-bits-sup): Do not create broken symlink
111         to stamp-bits.
112         * include/Makefile.in: Regenerate.
114         * include/std/fstream (basic_ifstream, basic_ofstream, basic_fstream):
115         Remove outdated comments about calling c_str() to create a file stream
116         from a std::string.
117         (basic_ofstream::basic_ofstream, basic_ofstream::open): Remove
118         redundant ios_mode::trunc bits from default arguments and comments.
120         * doc/xml/faq.xml: Adjust "What is libstdc++?" answer slightly.
122         * include/bits/hashtable_policy.h: Include <tuple>.
123         * include/std/unordered_map: Only include <bits/stl_pair.h> instead
124         of <utility> and <tuple>.
125         * include/std/unordered_set: Likewise.
127 2017-10-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
129         Implement LWG 2485
130         * include/debug/array (get(const array<_Tp, _Nm>&&)): New.
131         * include/std/array (get(const array<_Tp, _Nm>&&)): Likewise.
132         * include/std/tuple (get(const tuple<_Elements...>&&)): Likewise.
133         (get(const tuple<_Types...>&&)): Likewise.
134         * include/std/utility
135         (__pair_get::__const_move_get(const std::pair<_Tp1, _Tp2>&&)):
136         Likewise.
137         (get(const std::pair<_Tp1, _Tp2>&&)): Likewise.
138         (get(const pair<_Tp, _Up>&&)): Likewise.
139         (get(const pair<_Up, _Tp>&&)): Likewise.
140         * testsuite/20_util/pair/astuple/get.cc: Add tests for
141         new overloads.
142         * testsuite/20_util/pair/astuple/get_by_type.cc: Likewise.
143         * testsuite/20_util/tuple/element_access/get2.cc: Likewise.
144         * testsuite/20_util/tuple/element_access/get2_by_type.cc: Likewise.
145         * testsuite/23_containers/array/tuple_interface/get.cc: Likewise.
146         * testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc:
147         Adjust.
148         * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
149         Likewise.
151 2017-10-27  Jonathan Wakely  <jwakely@redhat.com>
153         * include/bits/node_handle.h (_Node_insert_return::get): Avoid
154         use of std::tie and std::get.
156         * include/Makefile.am: Put headers in alphabetical order.
157         * include/Makefile.in: Regenerate.
159         * include/bits/fs_dir.h (directory_iterator): Remove noexcept from
160         constructors and increment member (LWG 3013).
161         (recursive_directory_iterator): Likewise.
162         * include/bits/fs_ops.h (copy, copy_file, create_directories)
163         (is_empty, remove_all): Remove noexcept (LWG 3013 and LWG 3014).
164         * src/filesystem/std-dir.cc (directory_iterator::increment)
165         (recursive_directory_iterator::increment): Remove noexcept.
166         * src/filesystem/std-ops.cc (copy, copy_file, create_directories)
167         (is_empty, remove_all): Remove noexcept
169         * include/bits/fs_dir.h (file_status): Make default constructor
170         non-explicit (LWG 2787).
171         * testsuite/27_io/filesystem/file_status/1.cc: New test.
172         * testsuite/experimental/filesystem/file_status/1.cc: New test.
174         * include/std/fstream (basic_filebuf::_If_path): New SFINAE helper.
175         (basic_filebuf::open<Path>(const Path&, const ios_base::openmode&))
176         (basic_ifstream<Path>(const Path&, const ios_base::openmode&))
177         (basic_ifstream::open<Path>(const Path&, const ios_base::openmode&))
178         (basic_ofstream<Path>(const Path&, const ios_base::openmode&))
179         (basic_ofstream::open<Path>(const Path&, const ios_base::openmode&))
180         (basic_fstream<Path>(const Path&, const ios_base::openmode&))
181         (basic_fstream::open<Path>(const Path&, const ios_base::openmode&)):
182         New constructors and member functions.
183         * testsuite/27_io/basic_filebuf/open/char/path.cc: New test.
184         * testsuite/27_io/basic_fstream/cons/char/path.cc: New test.
185         * testsuite/27_io/basic_fstream/open/char/path.cc: New test.
186         * testsuite/27_io/basic_ifstream/cons/char/path.cc: New test.
187         * testsuite/27_io/basic_ifstream/open/char/path.cc: New test.
188         * testsuite/27_io/basic_ofstream/cons/char/path.cc: New test.
189         * testsuite/27_io/basic_ofstream/open/char/path.cc: New test.
191         * include/bits/fs_path.h (path::format): Define new enumeration type.
192         (path(string_type&&), path<Source>(const Source&))
193         (path<InputIterator>(InputIterator, InputIterator))
194         (path<Source>(const Source&, const locale&))
195         (path<InputIterator>(InputIterator, InputIterator, const locale&)):
196         Add format parameter.
197         * testsuite/27_io/filesystem/path/construct/format.cc: New test.
199         * include/bits/stl_algo.h (__find_if_not_n, generate_n): Cast to void
200         to ensure overloaded comma not used.
201         * include/bits/stl_algobase.h (__fill_n_a, equal): Likewise.
202         * include/bits/stl_uninitialized.h (__uninitialized_fill_n)
203         (__uninitialized_fill_n_a, __uninitialized_default_n_1)
204         (__uninitialized_default_n_a, __uninitialized_copy_n)
205         (__uninitialized_copy_n_pair): Likewise
206         * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
207         Use test iterator wrappers with overloaded comma operator.
208         * testsuite/25_algorithms/fill_n/1.cc: Likewise.
209         * testsuite/25_algorithms/generate_n/1.cc: New test.
210         * testsuite/25_algorithms/stable_partition/1.cc: New test.
211         * testsuite/util/testsuite_iterators.h (operator,): Add deleted
212         non-member comma operator with iterator wrappers as right operand.
214 2017-10-26  Ville Voutilainen  <ville.voutilainen@gmail.com>
216         Deduction guides for associative containers, debug mode deduction
217         guide fixes.
218         * include/bits/stl_iterator.h (__iter_key_t)
219         (__iter_val_t, __iter_to_alloc_t): New.
220         * include/bits/stl_map.h: Add deduction guides.
221         * include/bits/stl_multimap.h: Likewise.
222         * include/bits/stl_multiset.h: Likewise.
223         * include/bits/stl_set.h: Likewise.
224         * include/bits/unordered_map.h: Likewise.
225         * include/bits/unordered_set.h: Likewise.
226         * include/debug/deque: Likewise.
227         * include/debug/forward_list: Likewise.
228         * include/debug/list: Likewise.
229         * include/debug/map.h: Likewise.
230         * include/debug/multimap.h: Likewise.
231         * include/debug/multiset.h: Likewise.
232         * include/debug/set.h: Likewise.
233         * include/debug/unordered_map: Likewise.
234         * include/debug/unordered_set: Likewise.
235         * include/debug/vector: Likewise.
236         * testsuite/23_containers/map/cons/deduction.cc: New.
237         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
238         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
239         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
240         * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
241         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
242         Likewise.
243         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
244         Likewise.
245         * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
247 2017-10-25  Jonathan Wakely  <jwakely@redhat.com>
249         * doc/xml/manual/status_cxx2017.xml: Update C++17 status, and
250         information on feature-test macros.
251         * doc/html/*: Regenerate.
253         PR libstdc++/82716
254         * include/std/array (tuple_size, tuple_element): Change class-key
255         from class to struct, to avoid annoying Clang warnings.
257         PR libstdc++/79283
258         * src/filesystem/ops.cc (read_symlink): Handle st_size being zero.
259         * src/filesystem/std-ops.cc (read_symlink): Likewise.
260         (do_copy_file) [!NEED_DO_COPY_FILE]: Avoid multiple definitions.
262         * src/filesystem/std-path.cc (path::lexically_normal): Add missing
263         step to algorithm, for removing dot-dot elements after root-directory.
264         * testsuite/27_io/filesystem/operations/canonical.cc: Use
265         compare_paths for more exhaustive checks.
266         * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
267         * testsuite/27_io/filesystem/path/append/path.cc: Likewise.
268         * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
269         * testsuite/27_io/filesystem/path/concat/strings.cc: Fix comment.
270         * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
271         * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
272         Likewise.
273         * testsuite/27_io/filesystem/path/generation/normal.cc: Use
274         compare_paths for more exhaustive checks. Add extra testcases.
275         * testsuite/27_io/filesystem/path/generation/proximate.cc: Use
276         compare_paths for more exhaustive checks.
277         * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
278         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Remove
279         unused header.
280         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: Fix
281         comment.
282         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: Use
283         compare_paths for more exhaustive checks.
284         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
285         Likewise.
286         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
287         Likewise.
288         * testsuite/util/testsuite_fs.h (compare_paths): Also compare native
289         strings.
291         PR libstdc++/82706
292         * testsuite/27_io/filesystem/operations/permissions.cc: Fix test.
294 2017-10-24  François Dumont  <fdumont@gcc.gnu.org>
296         * testsuite/lib/libstdc++.exp (check_v3_target_normal_mode): Add
297         c++config.h include.
298         (check_v3_target_normal_namespace): New.
299         * testsuite/lib/dg-options.exp (dg-require-normal-namespace): New.
300         * testsuite/18_support/headers/limits/synopsis.cc: Add latter.
301         * testsuite/20_util/from_chars/requirements.cc: Likewise.
302         * testsuite/20_util/headers/functional/synopsis.cc: Likewise.
303         * testsuite/20_util/headers/memory/synopsis.cc: Likewise.
304         * testsuite/20_util/headers/utility/synopsis.cc: Likewise.
305         * testsuite/20_util/to_chars/requirements.cc: Likewise.
306         * testsuite/21_strings/headers/string/synopsis.cc: Likewise.
307         * testsuite/22_locale/headers/locale/synopsis.cc: Likewise.
308         * testsuite/23_containers/headers/bitset/synopsis.cc: Likewise.
309         * testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
310         * testsuite/23_containers/headers/forward_list/synopsis.cc: Likewise.
311         * testsuite/23_containers/headers/list/synopsis.cc: Likewise.
312         * testsuite/23_containers/headers/map/synopsis.cc: Likewise.
313         * testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
314         * testsuite/23_containers/headers/set/synopsis.cc: Likewise.
315         * testsuite/23_containers/headers/stack/synopsis.cc: Likewise.
316         * testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
317         * testsuite/23_containers/map/modifiers/erase/abi_tag.cc: Likewise.
318         * testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc: Likewise.
319         * testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc: Likewise.
320         * testsuite/23_containers/set/modifiers/erase/abi_tag.cc: Likewise.
321         * testsuite/24_iterators/headers/iterator/synopsis.cc: Likewise.
322         * testsuite/24_iterators/headers/iterator/synopsis_c++11.cc: Likewise.
323         * testsuite/24_iterators/headers/iterator/synopsis_c++14.cc: Likewise.
324         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Likewise.
325         * testsuite/26_numerics/complex/abi_tag.cc: Likewise.
326         * testsuite/26_numerics/headers/complex/synopsis.cc: Likewise.
327         * testsuite/26_numerics/headers/valarray/synopsis.cc: Likewise.
328         * testsuite/27_io/headers/fstream/synopsis.cc: Likewise.
329         * testsuite/27_io/headers/ios/synopsis.cc: Likewise.
330         * testsuite/27_io/headers/istream/synopsis.cc: Likewise.
331         * testsuite/27_io/headers/ostream/synopsis.cc: Likewise.
332         * testsuite/27_io/headers/sstream/synopsis.cc: Likewise.
333         * testsuite/27_io/headers/streambuf/synopsis.cc: Likewise.
335 2017-10-24  Jonathan Wakely  <jwakely@redhat.com>
337         * config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Ignore
338         -Wattribute-alias warnings.
339         * src/c++11/istream-inst.cc: Likewise.
340         * src/c++11/locale-inst.cc: Likewise.
341         * src/c++11/ostream-inst.cc: Likewise.
342         * src/c++11/wlocale-inst.cc: Likewise.
343         * src/c++98/hash-long-double-tr1-aux.cc: Likewise.
345         * include/bits/string_view.tcc (find_first_of, find_last_of)
346         (find_first_not_of, find_last_not_of): Add noexcept.
347         * include/std/string_view (basic_string_view(const _CharT*))
348         (basic_string_view(const _CharT*, size_type))
349         (front, back, remove_prefix, remove_suffix, find, rfind)
350         (find_first_of, find_first_not_of): Add noexcept.
351         (at(size_type), _S_compare(size_type, size_type)): Replace conditional
352         expressions with if statements.
353         (copy(_CharT*, size_type, size_type), substr(size_type, size_type)):
354         Use _M_check for length checks.
355         (compare(basic_string_view)): Reformat.
356         (_M_check(size_type, const char)): Add noexcept(false).
357         (_M_limit(size_type, size_type)): Use noexcept not _GLIBCXX_NOEXCEPT.
359         PR libstdc++/82685
360         * include/experimental/string_view (operator""sv): Add noexcept.
361         * include/std/string_view (operator""sv): Likewise.
363 2017-10-23  Jonathan Wakely  <jwakely@redhat.com>
365         * include/Makefile.am: Add new headers for C++17 filesystem library.
366         * include/Makefile.in: Regenerate.
367         * include/bits/fs_dir.h: New header, based on Filesystem TS code in
368         include/experimental/bits directory.
369         * include/bits/fs_fwd.h: Likewise.
370         * include/bits/fs_ops.h: Likewise.
371         * include/bits/fs_path.h: Likewise.
372         * include/experimental/bits/fs_dir.h: Rename Doxygen group.
373         * include/experimental/bits/fs_fwd.h: Likewise.
374         * include/experimental/bits/fs_ops.h: Likewise.
375         * include/experimental/bits/fs_path.h: Likewise.
376         * include/experimental/filesystem (filesystem_error::_M_gen_what):
377         Remove inline definition.
378         * include/precompiled/stdc++.h: Add <filesystem> to precompiled
379         header.
380         * include/std/filesystem: New header.
381         * python/libstdcxx/v6/printers.py: Enable printer for std::filesystem
382         paths.
383         * src/filesystem/Makefile.am: Add new files. Compile as C++17.
384         * src/filesystem/Makefile.in: Regenerate.
385         * src/filesystem/cow-dir.cc: Update comment.
386         * src/filesystem/cow-ops.cc: Likewise.
387         * src/filesystem/cow-path.cc: Likewise.
388         * src/filesystem/cow-std-dir.cc: New file.
389         * src/filesystem/cow-std-ops.cc: New file.
390         * src/filesystem/cow-std-path.cc: New file.
391         * src/filesystem/dir-common.h (_Dir_base, get_file_type): New header
392         for common code.
393         * src/filesystem/dir.cc (_Dir): Derive from _Dir_base.
394         (open_dir): Move to _Dir_base constructor.
395         (get_file_type): Move to dir-common.h.
396         (recurse): Move to _Dir_base::should_recurse.
397         * src/filesystem/ops-common.h: New header for common code.
398         * src/filesystem/ops.cc (is_set, make_file_type, make_file_status)
399         (is_not_found_errno, file_time, do_copy_file): Move to ops-common.h.
400         * src/filesystem/path.cc (filesystem_error::_M_gen_what): Define.
401         * src/filesystem/std-dir.cc: New file, based on Filesystem TS code.
402         * src/filesystem/std-ops.cc: Likewise.
403         * src/filesystem/std-dir.cc: Likewise.
404         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: New
405         test.
406         * testsuite/27_io/filesystem/iterators/pop.cc: New test.
407         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
408         New test.
409         * testsuite/27_io/filesystem/operations/absolute.cc: New test.
410         * testsuite/27_io/filesystem/operations/canonical.cc: New test.
411         * testsuite/27_io/filesystem/operations/copy.cc: New test.
412         * testsuite/27_io/filesystem/operations/copy_file.cc: New test.
413         * testsuite/27_io/filesystem/operations/create_directories.cc: New
414         test.
415         * testsuite/27_io/filesystem/operations/create_directory.cc: New test.
416         * testsuite/27_io/filesystem/operations/create_symlink.cc: New test.
417         * testsuite/27_io/filesystem/operations/current_path.cc: New test.
418         * testsuite/27_io/filesystem/operations/equivalent.cc: New test.
419         * testsuite/27_io/filesystem/operations/exists.cc: New test.
420         * testsuite/27_io/filesystem/operations/file_size.cc: New test.
421         * testsuite/27_io/filesystem/operations/is_empty.cc: New test.
422         * testsuite/27_io/filesystem/operations/last_write_time.cc: New test.
423         * testsuite/27_io/filesystem/operations/permissions.cc: New test.
424         * testsuite/27_io/filesystem/operations/proximate.cc: New test.
425         * testsuite/27_io/filesystem/operations/read_symlink.cc: New test.
426         * testsuite/27_io/filesystem/operations/relative.cc: New test.
427         * testsuite/27_io/filesystem/operations/remove_all.cc: New test.
428         * testsuite/27_io/filesystem/operations/space.cc: New test.
429         * testsuite/27_io/filesystem/operations/status.cc: New test.
430         * testsuite/27_io/filesystem/operations/symlink_status.cc: New test.
431         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: New
432         test.
433         * testsuite/27_io/filesystem/operations/weakly_canonical.cc: New test.
434         * testsuite/27_io/filesystem/path/append/path.cc: New test.
435         * testsuite/27_io/filesystem/path/assign/assign.cc: New test.
436         * testsuite/27_io/filesystem/path/assign/copy.cc: New test.
437         * testsuite/27_io/filesystem/path/compare/compare.cc: New test.
438         * testsuite/27_io/filesystem/path/compare/path.cc: New test.
439         * testsuite/27_io/filesystem/path/compare/strings.cc: New test.
440         * testsuite/27_io/filesystem/path/concat/path.cc: New test.
441         * testsuite/27_io/filesystem/path/concat/strings.cc: New test.
442         * testsuite/27_io/filesystem/path/construct/copy.cc: New test.
443         * testsuite/27_io/filesystem/path/construct/default.cc: New test.
444         * testsuite/27_io/filesystem/path/construct/locale.cc: New test.
445         * testsuite/27_io/filesystem/path/construct/range.cc: New test.
446         * testsuite/27_io/filesystem/path/construct/string_view.cc: New test.
447         * testsuite/27_io/filesystem/path/decompose/extension.cc: New test.
448         * testsuite/27_io/filesystem/path/decompose/filename.cc: New test.
449         * testsuite/27_io/filesystem/path/decompose/parent_path.cc: New test.
450         * testsuite/27_io/filesystem/path/decompose/relative_path.cc: New
451         test.
452         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: New
453         test.
454         * testsuite/27_io/filesystem/path/decompose/root_name.cc: New test.
455         * testsuite/27_io/filesystem/path/decompose/root_path.cc: New test.
456         * testsuite/27_io/filesystem/path/decompose/stem.cc: New test.
457         * testsuite/27_io/filesystem/path/generation/normal.cc: New test.
458         * testsuite/27_io/filesystem/path/generation/proximate.cc: New test.
459         * testsuite/27_io/filesystem/path/generation/relative.cc: New test.
460         * testsuite/27_io/filesystem/path/generic/generic_string.cc: New test.
461         * testsuite/27_io/filesystem/path/itr/traversal.cc: New test.
462         * testsuite/27_io/filesystem/path/modifiers/clear.cc: New test.
463         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: New
464         test.
465         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: New
466         test.
467         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: New
468         test.
469         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: New
470         test.
471         * testsuite/27_io/filesystem/path/modifiers/swap.cc: New test.
472         * testsuite/27_io/filesystem/path/native/string.cc: New test.
473         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: New test.
474         * testsuite/27_io/filesystem/path/query/empty.cc: New test.
475         * testsuite/27_io/filesystem/path/query/has_extension.cc: New test.
476         * testsuite/27_io/filesystem/path/query/has_filename.cc: New test.
477         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: New test.
478         * testsuite/27_io/filesystem/path/query/has_relative_path.cc: New
479         test.
480         * testsuite/27_io/filesystem/path/query/has_root_directory.cc: New
481         test.
482         * testsuite/27_io/filesystem/path/query/has_root_name.cc: New test.
483         * testsuite/27_io/filesystem/path/query/has_root_path.cc: New test.
484         * testsuite/27_io/filesystem/path/query/has_stem.cc: New test.
485         * testsuite/27_io/filesystem/path/query/is_relative.cc: New test.
486         * testsuite/experimental/filesystem/path/construct/string_view.cc:
487         Define USE_FILESYSTEM_TS.
488         * testsuite/util/testsuite_fs.h: Allow use with C++17 paths as well
489         as Filesystem TS.
491         PR libstdc++/82644
492         * doc/xml/manual/intro.xml: Include new section.
493         * doc/xml/manual/status_cxxis29124.xml: New section on IS 29124
494         status.
495         * include/bits/specfun.h [__STRICT_ANSI__] (hyperg, hypergf, hypergl)
496         (conf_hyperg, conf_hypergf, conf_hypergl): Don't declare.
497         * include/c_compatibility/math.h: Import special functions into
498         global namespace for C++17.
499         * testsuite/26_numerics/headers/cmath/82644.cc: New test.
500         * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc: New
501         test.
503 2017-10-21  Jonathan Wakely  <jwakely@redhat.com>
505         * testsuite/experimental/filesystem/path/itr/traversal.cc: Do not
506         increment past-the-end iterators.
508 2017-10-20  Jonathan Wakely  <jwakely@redhat.com>
510         * include/std/chrono (__cpp_lib_chrono): Update macro value to
511         indicate support for P0505R0.
512         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Check
513         for updated macro.
515         * include/c_global/cstddef: Define __cpp_lib_byte feature-test macro.
516         * testsuite/18_support/byte/requirements.cc: Check macro.
518 2017-10-19  Jonathan Wakely  <jwakely@redhat.com>
520         * testsuite/experimental/filesystem/iterators/
521         recursive_directory_iterator.cc: Ensure that error_code arguments are
522         cleared when required.
523         * testsuite/experimental/filesystem/operations/create_directory.cc:
524         Remove redundant check.
525         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
526         Ensure that error_code argument is cleared when required.
528         * include/experimental/bits/fs_path.h (path::iterator++(int))
529         (path::iterator--(int)): Fix for paths with only one component.
530         * testsuite/experimental/filesystem/path/itr/traversal.cc: Test
531         post-increment and post-decrement.
533         * doc/xml/manual/status_cxx2017.xml: Update references to C++17
534         section numbers.
536         * testsuite/decimal/conversion-to-integral.cc: Use predefined macro
537         instead of non-standard glibc one.
539 2017-10-16  François Dumont  <fdumont@gcc.gnu.org>
541         PR libstdc++/82558
542         * include/bits/stl_bvector.h (fill): Add iterator offset check.
543         * testsuite/23_containers/vector/bool/82558.cc: New.
545 2017-10-13  Jonathan Wakely  <jwakely@redhat.com>
547         PR libstdc++/82522
548         * doc/xml/manual/intro.xml: Document LWG 2354 changes.
549         * include/bits/stl_map.h (map::insert(value_type&&))
550         (map::insert(const_iterator, value_type&&)): Add overload for rvalues.
551         * include/bits/stl_multimap.h (multimap::insert(value_type&&))
552         (multimap::insert(const_iterator, value_type&&)): Likewise.
553         * include/bits/unordered_map.h (unordered_map::insert(value_type&&))
554         (unordered_map::insert(const_iterator, value_type&&))
555         (unordered_multimap::insert(value_type&&))
556         (unordered_multimap::insert(const_iterator, value_type&&)): Likewise.
557         * testsuite/23_containers/map/modifiers/insert/dr2354.cc: New test.
558         * testsuite/23_containers/multimap/modifiers/insert/dr2354.cc: New
559         test.
560         * testsuite/23_containers/unordered_map/insert/dr2354.cc: New test.
561         * testsuite/23_containers/unordered_multimap/insert/dr2354.cc: New
562         test.
564         PR libstdc++/82481
565         * include/std/mutex (call_once): Suppress clang-tidy warnings about
566         dangling references.
568 2017-10-10  Jonathan Wakely  <jwakely@redhat.com>
570         * include/bits/streambuf_iterator.h (istreambuf_iterator::equal):
571         Update comment about NAD issue.
573         PR libstdc++/59087
574         PR libstdc++/82417
575         * include/c_compatibility/complex.h [!C++98 && __STRICT_ANSI__]: Do
576         not include C library's <complex.h>.
577         * testsuite/26_numerics/complex/c99.cc: Depend on __STRICT_ANSI__.
578         * testsuite/26_numerics/headers/complex.h/std_c++11.h: New test.
579         * testsuite/26_numerics/headers/complex.h/std_gnu++11.h: New test.
580         * testsuite/26_numerics/headers/complex.h/std_c++98.h: New test.
582 2017-10-05  Jonathan Wakely  <jwakely@redhat.com>
584         * testsuite/20_util/to_chars/1.cc: Add dg-require-string-conversions.
586 2017-10-04  Petr Ovtchenkov  <ptr@void-ptr.info>
587             François Dumont  <fdumont@gcc.gnu.org>
589         * include/bits/streambuf_iterator.h
590         (istreambuf_iterator<>::operator*()): Do not capture iterator state
591         in Debug assertion.
592         (istreambuf_iterator<>::operator++()): Likewise and remove _M_sbuf check.
593         (istreambuf_iterator<>::operator++(int)): Likewise.
594         (istreambuf_iterator<>::_M_get()): Remove _M_c assignment.
595         (istreambuf_iterator<>::_S_is_eof()): New.
596         (istreambuf_iterator<>::_M_at_eof()): Adapt, use latter.
597         (find(istreambuf_iterator<>, istreambuf_iterator<>, _CharT)):
598         Return an iterator with _M_c set to eof to capture streambuf state
599         on evaluation.
600         (testsuite/24_iterators/istreambuf_iterator/2.cc): Add checks.
602 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
604         * include/std/charconv (__unsigned_least_t): Fix number of closing >s for
605         !_GLIBCXX_USE_INT128.
607 2017-10-02  Jonathan Wakely  <jwakely@redhat.com>
609         * include/Makefile.am: Add new <charconv> header.
610         * include/Makefile.in: Regenerate.
611         * include/precompiled/stdc++.h: Include <charconv>.
612         * include/std/charconv: New file.
613         (to_chars_result, to_chars, from_chars_result, from_chars): Define.
614         * testsuite/20_util/from_chars/1.cc: New test.
615         * testsuite/20_util/from_chars/1_neg.cc: New test.
616         * testsuite/20_util/from_chars/2.cc: New test.
617         * testsuite/20_util/from_chars/requirements.cc: New test.
618         * testsuite/20_util/to_chars/1.cc: New test.
619         * testsuite/20_util/to_chars/1_neg.cc: New test.
620         * testsuite/20_util/to_chars/2.cc: New test.
621         * testsuite/20_util/to_chars/requirements.cc: New test.
623 2017-09-27  François Dumont  <fdumont@gcc.gnu.org>
625         * testsuite/22_locale/money_get/get/char/22131.cc: Make test less
626         istreambuf_iterator implementation dependent.
627         * testsuite/22_locale/money_get/get/wchar_t/22131.cc: Likewise.
629 2017-09-25  Uros Bizjak  <ubizjak@gmail.com>
631         PR c/81854
632         * src/c++98/complex_io.cc (_GLIBCXX_LDBL_COMPAT): Declare alias
633         target as a C++ function with no prototype.
635 2017-09-21  Jonathan Wakely  <jwakely@redhat.com>
637         * testsuite/25_algorithms/clamp/1.cc: Fix order of arguments and
638         expected results when using predicate defining reverse order.
639         * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
641 2017-09-20  Jonathan Wakely  <jwakely@redhat.com>
643         PR libstdc++/79162
644         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
645         (basic_string::_If_sv): Remove from the overload set when the
646         argument is derived from basic_string.
648         PR libstdc++/79162
649         * include/bits/basic_string.h (basic_string::_If_sv): Remove from the
650         overload set when the argument is derived from basic_string.
651         * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: New
652         test.
653         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
654         New test.
656         * testsuite/24_iterators/range_access_cpp17.cc: Fix order of dg-do
657         and dg-options directives. Fix invalid test.
659         PR libstdc++/81469
660         * libsupc++/exception (uncaught_exception): Deprecate for C++17.
661         * testsuite/18_support/exception_ptr/62258.cc: Add -Wno-deprecated.
662         * testsuite/18_support/uncaught_exception/14026.cc: Likewise.
664         * include/bits/c++config (_GLIBCXX17_DEPRECATED): Define.
665         * include/bits/functional_hash.h (__hash_base::result_type)
666         (__hash_base::argument_type): Add _GLIBCXX17_DEPRECATED.
667         * include/std/optional (hash<optional<T>>::result_type)
668         (hash<optional<T>>::argument_type): Add deprecated attribute.
669         (__is_fast_hash<hash<optional<T>>>): Add partial specialization.
670         * include/std/variant (hash<variant<Types...>>::result_type)
671         (hash<variant<Types...>>::argument_type): Add deprecated attribute.
672         (__is_fast_hash<hash<variant<Types...>>>): Add partial specialization.
674         * libsupc++/exception_ptr.h (copy_exception): Remove deprecated
675         non-standard function.
677         PR libstdc++/82262
678         * include/std/optional (__optional_hash_call_base): Add template
679         parameter for remove_const_t<_Tp> and use it consistently.
680         * testsuite/20_util/optional/hash.cc: Test optional<const T>.
682 2017-09-19  Jonathan Wakely  <jwakely@redhat.com>
684         PR libstdc++/71500
685         * include/bits/regex_executor.tcc
686         (_Backref_matcher<BidIt, regex_traits<C>>::_M_apply): Use
687         std::__equal4 instead of C++14 4-iterator overloads of std::equal.
688         * include/bits/stl_algobase.h (__equal4): New functions implementing
689         4-iterator overloads of std::equal for use in C++11.
690         (equal(It1, It1, It2, It2), equal(It1, It1, It2, It2, BinaryPred)):
691         Move function bodies to new __equal4 functions.
692         * testsuite/28_regex/simple_c++11.cc: New.
694         PR libstdc++/82254
695         * include/std/type_traits (__is_invocable): Add partial specialization
696         for INVOKE<void> case and remove is_void<R> check from partial
697         specialization for INVOKE<R> case.
698         (__is_nt_invocable_impl): New helper for is_nothrow_invocable_r.
699         (is_nothrow_invocable_r): Use __is_nt_invocable_impl.
700         * testsuite/20_util/is_nothrow_invocable/value.cc: Add tests for
701         conversions that can throw or fail to convert. Use static assert
702         strings to explain negative results.
703         * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Use
704         is_nothrow_constructible in is_nt_invocable_conv.
706 2017-09-18  Jonathan Wakely  <jwakely@redhat.com>
708         PR libstdc++/81468
709         * testsuite/20_util/duration/cons/dr1177.cc: Fix incorrect test and
710         improve static assertion messages.
712         * include/std/utility (_Itup_cat, _Make_integer_sequence): Remove.
713         (_Build_index_tuple, make_integer_sequence): Use built-in to generate
714         pack expansion.
716         PR libstdc++/71187
717         * include/std/type_traits (__declval): New function to deduce return
718         type of declval.
719         (__declval_protector::_delegate): Remove.
720         (declval): Use __declval instead of add_rvalue_reference and
721         __declval_protector::__delegate.
722         * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
723         lineno.
724         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
725         Likewise.
726         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
727         Likewise.
729 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
731         * testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
732         -std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
733         of c++1z and c++17_only instead of c++1z_only.  Adjust expected
734         diagnostics and comments refering to 1z to 17.
735         * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
736         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
737         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
738         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
739         * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
740         Likewise.
741         * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
742         * testsuite/18_support/launder/1.cc (test02): Likewise.
743         * testsuite/18_support/launder/requirements_neg.cc: Likewise.
744         * testsuite/18_support/launder/requirements.cc: Likewise.
745         * testsuite/18_support/byte/requirements.cc: Likewise.
746         * testsuite/18_support/byte/ops.cc: Likewise.
747         * testsuite/18_support/byte/global_neg.cc: Likewise.
748         * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
749         Likewise.
750         * testsuite/27_io/types/4.cc: Likewise.
751         * testsuite/25_algorithms/sample/81221.cc: Likewise.
752         * testsuite/25_algorithms/sample/1.cc: Likewise.
753         * testsuite/25_algorithms/sample/2.cc: Likewise.
754         * testsuite/25_algorithms/search/searcher.cc: Likewise.
755         * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
756         * testsuite/experimental/filesystem/path/construct/string_view.cc:
757         Likewise.
758         * testsuite/24_iterators/range_access_cpp17.cc: Likewise.
759         * testsuite/24_iterators/container_access.cc: Likewise.
760         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
761         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
762         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
763         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
764         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
765         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
766         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
767         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
768         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
769         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
770         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
771         * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
772         * testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
773         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
774         * testsuite/20_util/variant/deduction.cc: Likewise.
775         * testsuite/20_util/tuple/78939.cc: Likewise.
776         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
777         * testsuite/20_util/void_t/1.cc: Likewise.
778         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
779         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
780         * testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
781         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
782         * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
783         Likewise.
784         * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
785         Likewise.
786         * testsuite/20_util/has_unique_object_representations/value.cc:
787         Likewise.
788         * testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
789         * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
790         * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
791         * testsuite/20_util/function/cons/deduction.cc: Likewise.
792         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
793         Likewise.
794         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
795         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
796         Likewise.
797         * testsuite/20_util/is_aggregate/value.cc: Likewise.
798         * testsuite/26_numerics/lcm/1.cc: Likewise.
799         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
800         * testsuite/26_numerics/gcd/1.cc: Likewise.
801         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
802         * testsuite/26_numerics/valarray/deduction.cc: Likewise.
803         * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
804         * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
805         * testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
806         Likewise.
807         * testsuite/23_containers/array/cons/deduction.cc: Likewise.
808         * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
809         * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
810         Likewise.
811         * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
812         * testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
813         Likewise.
814         * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
815         Likewise.
816         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
817         * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
818         Likewise.
819         * testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
820         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
821         * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
822         Likewise.
823         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
824         * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
825         Likewise.
826         * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
827         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
828         * testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
829         * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
830         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
831         Likewise.
832         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
833         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
834         Likewise.
835         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
836         Likewise.
837         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
838         Likewise.
839         * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
840         Likewise.
841         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
842         Likewise.
843         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
844         Likewise.
846 2017-09-13  Jonathan Wakely  <jwakely@redhat.com>
848         PR libstdc++/81468
849         * include/std/chrono (__enable_if_is_duration)
850         (__disable_if_is_duration): New alias templates to simplify SFINAE.
851         (duration_cast, floor, ceil): Use __enable_if_is_duration.
852         (duration::__is_float, duration::__is_harmonic): New alias templates
853         to simplify SFINAE.
854         (duration::duration(const _Rep2&)): Use _Require, __is_float and
855         __is_harmonic.
856         (duration::duration(const duration<_Rep2, _Period2>&)): Likewise.
857         (__common_rep_type): Remove, replace with ...
858         (__common_rep_t): New alias template.
859         (operator*, operator/, operator%): Use __common_rep_t and
860         __disable_if_is_duration.
861         (time_point::time_point(const time_point<clock, _Dur2>&)): Add missing
862         constraint from LWG DR 1177.
863         * testsuite/20_util/duration/cons/dr1177.cc: New.
864         * testsuite/20_util/duration/literals/range.cc: Update dg-error line.
865         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
866         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
867         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
868         * testsuite/20_util/time_point/cons/81468.cc: New.
870         * doc/doxygen/mainpage.html: Fix broken URLs.
872         PR libstdc++/81835
873         * doc/xml/manual/extensions.xml: Replace unstable URL.
874         * doc/html/manual/ext_demangling.html: Regenerate.
875         * libsupc++/cxxabi.h (__cxa_demangle): Fix broken URL.
877         * include/bits/allocated_ptr.h (__allocated_ptr::get): Use
878         __to_address.
879         (__allocated_ptr::_S_raw_ptr): Remove.
880         * include/bits/forward_list.h (_Fwd_list_base::_M_get_node): Use
881         __to_address.
882         * include/bits/hashtable_policy.h (_Hashtable_alloc): Likewise.
883         * include/bits/ptr_traits.h (__to_address): Define new function
884         template.
885         * include/bits/shared_ptr_base.h (__shared_ptr): Use __to_address.
886         (__shared_ptr::_S_raw_ptr): Remove.
887         * include/bits/stl_vector.h [__cplusplus >= 201103L]
888         (vector::_M_data_ptr): Use __to_address.
889         [__cplusplus < 201103L] (vector::_M_data_ptr): Don't dereference
890         possibly invalid pointers.
891         * include/ext/alloc_traits.h (__alloc_traits::construct)
892         (__alloc_traits::destroy): Use __to_address.
894 2017-09-12  Jonathan Wakely  <jwakely@redhat.com>
896         PR libstdc++/79433
897         * include/Makefile.am: Remove <bits/c++14_warning.h>.
898         * include/Makefile.in: Regenerate.
899         * include/bits/c++14_warning.h: Remove.
900         * include/experimental/algorithm: Do not include <c++14_warning.h>.
901         * include/experimental/any: Likewise.
902         * include/experimental/array: Likewise.
903         * include/experimental/bits/erase_if.h: Likewise.
904         * include/experimental/bits/lfts_config.h: Likewise.
905         * include/experimental/bits/shared_ptr.h: Likewise.
906         * include/experimental/bits/string_view.tcc: Likewise.
907         * include/experimental/chrono: Likewise.
908         * include/experimental/deque: Likewise.
909         * include/experimental/filesystem: Do not include <c++0x_warning.h>.
910         * include/experimental/forward_list: Do not include <c++14_warning.h>.
911         * include/experimental/functional: Likewise.
912         * include/experimental/iterator: Likewise.
913         * include/experimental/list: Likewise.
914         * include/experimental/map: Likewise.
915         * include/experimental/memory: Likewise.
916         * include/experimental/numeric: Likewise.
917         * include/experimental/optional: Likewise.
918         * include/experimental/propagate_const: Likewise.
919         * include/experimental/ratio: Likewise.
920         * include/experimental/regex: Likewise.
921         * include/experimental/set: Likewise.
922         * include/experimental/string: Likewise.
923         * include/experimental/string_view: Likewise.
924         * include/experimental/system_error: Likewise.
925         * include/experimental/tuple: Likewise.
926         * include/experimental/type_traits: Likewise.
927         * include/experimental/unordered_map: Likewise.
928         * include/experimental/unordered_set: Likewise.
929         * include/experimental/vector: Likewise.
930         * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error
931         line number.
932         * testsuite/experimental/array/neg.cc: Likewise.
933         * testsuite/experimental/propagate_const/assignment/move_neg.cc:
934         Likewise.
935         * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
936         * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
937         * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
938         * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
939         * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
941         PR libstdc++/79433
942         * doc/xml/manual/status_cxx2017.xml: Update feature-test macros.
943         * doc/html/*: Regenerate.
944         * include/Makefile.am: Remove <bits/c++17_warning.h>.
945         * include/Makefile.in: Regenerate.
946         * include/bits/c++17_warning.h: Remove.
947         * include/bits/string_view.tcc: Do not include <bits/c++17_warning.h>
948         for pre-C++17 modes.
949         * include/std/any: Likewise.
950         (__cpp_lib_any): Define.
951         * include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new
952         SD-6 draft.
953         * include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6
954         draft.
955         * include/std/optional: Do not include <bits/c++17_warning.h>.
956         (__cpp_lib_optional): Define.
957         * include/std/shared_mutex: Do not include <bits/c++14_warning.h>.
958         * include/std/string_view: Do not include <bits/c++17_warning.h>.
959         (__cpp_lib_string_view): Define.
960         * include/std/variant: Do not include <bits/c++17_warning.h>.
961         (__cpp_lib_variant): Define.
962         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line
963         numbers.
964         * testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm.
965         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
966         numbers.
967         * testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm.
968         * testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line
969         numbers.
970         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust
971         expected value of __cpp_lib_scoped_lock.
973         PR libstdc++/70483
974         * include/experimental/bits/string_view.tcc (basic_string_view::find)
975         (basic_string_view::rfind, basic_string_view::find_first_of)
976         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
977         (basic_string_view::find_last_not_of): Add constexpr specifier.
978         * include/experimental/string_view (basic_string_view::remove_prefix)
979         (basic_string_view::remove_suffix, basic_string_view::swap)
980         (basic_string_view::compare, basic_string_view::find)
981         (basic_string_view::rfind, basic_string_view::find_first_of)
982         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
983         (basic_string_view::find_last_not_of, operator==, operator!=)
984         (operator<, operator>, operator<=, operator>=): Likewise.
985         * testsuite/experimental/string_view/operations/compare/char/70483.cc:
986         New.
988 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
990         PR libstdc++/70483
991         * include/bits/string_view.tcc (basic_string_view::find)
992         (basic_string_view::rfind, basic_string_view::find_first_of)
993         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
994         (basic_string_view::find_last_not_of): Add constexpr specifier.
995         * include/std/string_view (basic_string_view::operator=)
996         (basic_string_view::rbegin, basic_string_view::rend)
997         (basic_string_view::crbegin, basic_string_view::crend)
998         (basic_string_view::remove_prefix, basic_string_view::remove_suffix)
999         (basic_string_view::swap, basic_string_view::compare)
1000         (basic_string_view::find, basic_string_view::rfind)
1001         (basic_string_view::find_first_of, basic_string_view::find_last_of)
1002         (basic_string_view::find_first_not_of)
1003         (basic_string_view::find_last_not_of, basic_string_view::_M_check)
1004         (basic_string_view::_M_limit, operator==, operator!=, operator<)
1005         (operator>, operator<=, operator>=): Likewise.
1006         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1007         char/1.cc: Repeat tests in constexpr context.
1008         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1009         wchar_t/1.cc: Likewise.
1010         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1011         char/1.cc: Likewise.
1012         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1013         wchar_t/1.cc: Likewise.
1014         * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
1015         Likewise.
1016         * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
1017         Likewise.
1018         * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
1019         Likewise.
1020         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
1021         Likewise.
1022         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
1023         Likewise.
1024         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
1025         Likewise.
1026         * testsuite/21_strings/basic_string_view/operators/char/2.cc:
1027         Likewise.
1028         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
1029         Likewise.
1030         * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test
1031         cbegin, cend, rbegin, rend, crbegin and crend.
1032         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
1033         Likewise.
1034         * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
1035         Remove trailing whitespace.
1036         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
1037         1.cc: Likewise.
1038         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
1039         New.
1040         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
1041         New.
1042         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
1043         New.
1044         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
1045         2.cc: New.
1047 2017-09-11  Tim Shen  <timshen@google.com>
1049         PR libstdc++/71500
1050         * include/bits/regex_executor.tcc: Support icase in regex_traits<...>
1051         for back reference matches.
1052         * testsuite/28_regex/regression.cc: Test case.
1054 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
1056         * testsuite/21_strings/basic_string/lwg2946.cc: Adjust for
1057         compatibility with old COW std::string.
1059 2017-09-09  Gerald Pfeifer  <gerald@pfeifer.com>
1061         * doc/xml/manual/allocator.xml: Adjust link for Hoard.
1062         * doc/html/manual/memory.html: Regenerate.
1064 2017-09-04  Daniel Kruegler  <daniel.kruegler@gmail.com>
1066         PR libstdc++/79162
1067         Implement LWG 2946, LWG 2758's resolution missed further corrections
1068         * include/bits/basic_string.h (basic_string::compare): Add missing
1069         required noexcept specifications.
1070         (basic_string): Introduce internal _S_to_string_view and __sv_wrapper
1071         for implicit string_view conversion.
1072         (basic_string::basic_string): Fix explicit string_view conversion by
1073         implicit conversion using _S_to_string_view and __sv_wrapper.
1074         (basic_string): Introduce internal basic_string(__sv_wrapper, Alloc)
1075         constructor.
1076         (basic_string): Fix operator=(T) template by operator=(const T&)
1077         template for uncopyable types (PR 79162).
1078         (basic_string::operator+=, basic_string::append, basic_string::assign)
1079         (basic_string::insert, basic_string::replace, basic_string::find)
1080         (basic_string::rfind, basic_string::find_first_of)
1081         (basic_string::find_last_of, basic_string::find_first_not_of)
1082         (basic_string::find_last_not_of, basic_string::compare): Replace
1083         __sv_type argument by template const T& (LWG 2946) and correct
1084         documentation describing __sv_type argument.
1085         (basic_string::find, basic_string::rfind, basic_string::find_first_of)
1086         (basic_string::find_last_of, basic_string::find_first_not_of)
1087         (basic_string::find_last_not_of, basic_string::compare): Replace
1088         unconditional noexcept specification by conditional noexcept
1089         specification to partially balance the removal of noexcept by LWG 2946.
1090         * testsuite/21_strings/basic_string/79162.cc: New.
1091         * testsuite/21_strings/basic_string/lwg2946.cc: New.
1093 2017-08-31  Jonathan Wakely  <jwakely@redhat.com>
1095         PR c++/82039
1096         * include/ext/new_allocator.h (__gnu_cxx::new_allocator::allocate):
1097         Adjust null pointer constant to avoid warning.
1099 2017-08-24  François Dumont  <fdumont@gcc.gnu.org>
1101         * include/bits/stl_list.h
1102         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
1103         (_List_impl(_Node_alloc_type&&, _List_impl&&)): New.
1104         (_List_base(_Node_alloc_type&&, _List_base&&)): New, use latter.
1105         [!_GLIBCXX_INLINE_VERSION](_List_base(_Node_alloc_type&&,_List_base&&)):
1106         Remove.
1107         (_List_base(_Node_alloc_type&&)): New.
1108         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_distance): Remove.
1109         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_node_count): Remove.
1110         (list<>::_M_node_count): New.
1111         (list<>::size()): Adapt to call latter.
1112         (list<>::_S_distance(const_iterator, const_iterator)): New.
1113         (list<>::splice(iterator, list&, const_iterator, const_iterator)):
1114         Adapt to call latter.
1115         (list(list&&, const allocator_type&, true_type)): New.
1116         (list(list&&, const allocator_type&, false_type)): New.
1117         (list(list&&, const allocator_type&)): Adapt to call latters.
1119 2017-08-21  Jonathan Wakely  <jwakely@redhat.com>
1121         PR libstdc++/81912
1122         * include/bits/stl_iterator_base_types.h (__iterator_category): Add
1123         constexpr for C++11 and later.
1124         * testsuite/24_iterators/container_access.cc: Add target selector.
1125         * testsuite/24_iterators/range_access.cc: Fix clause number in
1126         comment.
1127         * testsuite/24_iterators/range_access_cpp14.cc: Likewise.
1128         * testsuite/24_iterators/range_access_cpp17.cc: New.
1130 2017-08-21  Richard Biener  <rguenther@suse.de>
1132         * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Run all
1133         tests with -flto as well if supported.
1135 2017-08-20  Martin Sebor  <msebor@redhat.com>
1137         PR c/81854
1138         * src/c++98/compatibility.cc (_GLIBCXX_3_4_SYMVER): Declare alias
1139         target as a C++ function with no prototype.
1140         (_GLIBCXX_3_4_5_SYMVER): Ditto.
1142 2017-08-20  John David Anglin  <danglin@gcc.gnu.org>
1144         PR testsuite/81056
1145         * testsuite/17_intro/names.cc: Undef 'd' and 'r' on __hpux__.
1147 2017-08-18  Jonathan Wakely  <jwakely@redhat.com>
1149         * include/bits/hashtable_policy.h (_ReuseOrAllocNode): Remove
1150         __value_alloc_type and __value_alloc_traits typedefs.
1151         (_ReuseOrAllocNode::operator()): Call construct and destroy on the
1152         node allocator.
1153         (_Hashtable_alloc): Simplify __value_alloc_traits typedef.
1154         (_Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&...)): Call
1155         construct on the node allocator.
1156         (_Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type*)): Call
1157         destroy on the node allocator.
1159         PR libstdc++/81891
1160         * include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator,
1161         size_type, const _H1&, const _H2&, const _Hash&, const _Equal&,
1162         const _ExtractKey&, const allocator_type&)): Let destructor do clean
1163         up if an exception is thrown.
1164         * testsuite/23_containers/unordered_map/cons/81891.cc: New.
1166 2017-08-11  Jonathan Wakely  <jwakely@redhat.com>
1168         PR libstdc++/81808
1169         * testsuite/27_io/basic_fstream/53984.cc: Adjust test for targets
1170         that allow opening a directory as a FILE and reading from it.
1172 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
1174         * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
1175         Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use
1176         __is_identifier to set it.
1178 2017-08-09  Katsuhiko Nishimra  <ktns.87@gmail.com>
1180         * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use
1181         __is_identifier instead of __has_builtin.
1183 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
1185         PR libstdc++/79820
1186         PR libstdc++/81751
1187         * config/io/basic_file_stdio.cc (sys_open(FILE*, ios_base::openmode)):
1188         Call fflush on the stream instead of calling sync() while _M_cfile is
1189         null. Restore original value of errno.
1190         * testsuite/ext/stdio_filebuf/char/79820.cc: New.
1191         * testsuite/ext/stdio_filebuf/char/81751.cc: New.
1193 2017-07-31  Marek Polacek  <polacek@redhat.com>
1195         PR libstdc++/81599
1196         * include/bits/stl_stack.h: Fix typo.
1198 2017-07-26  Jonathan Wakely  <jwakely@redhat.com>
1200         * testsuite/27_io/basic_fstream/53984.cc: Fix test.
1202 2017-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
1204         * testsuite/27_io/basic_fstream/53984.cc: Fix typo in dg-require
1205         directive.
1207 2017-07-25  Jonathan Wakely  <jwakely@redhat.com>
1209         PR libstdc++/53984
1210         * include/bits/basic_ios.h (basic_ios::_M_setstate): Adjust comment.
1211         * include/bits/istream.tcc (basic_istream::sentry): Handle exceptions
1212         during construction.
1213         * include/std/istream: Adjust comments for formatted input functions
1214         and unformatted input functions.
1215         * testsuite/27_io/basic_fstream/53984.cc: New.
1216         * testsuite/27_io/basic_istream/sentry/char/53984.cc: New.
1218         * include/bits/ios_base.h (ios_base::io_state, ios_base::open_mode)
1219         (ios_base::seek_dir): Remove for C++17.
1220         * include/std/streambuf (basic_streambuf::stossc): Remove for C++17.
1221         Add deprecated attribute for C++11 and C++14.
1222         * testsuite/27_io/types/1.cc: Don't run for C++17 and later.
1223         * testsuite/27_io/types/4.cc: New.
1225 2017-07-23  Michael Collison  <michael.collison@arm.com>
1227         Add optimized implementation of mersenne twister for aarch64
1228         * config/cpu/aarch64/opt/ext/opt_random.h: New file.
1229         (__arch64_recursion): New function.
1230         (__aarch64_lsr_128): New function.
1231         (__aarch64_lsl_128): New function.
1232         (operator==): New function.
1233         (simd_fast_mersenne_twister_engine): Implement
1234         method _M_gen_rand.
1235         * config/cpu/aarch64/opt/bits/opt_random.h: New file.
1236         * include/ext/random: (simd_fast_mersenne_twister_engine):
1237         add _M_state private array.
1239 2017-07-23  François Dumont  <fdumont@gcc.gnu.org>
1241         PR libstdc++/81064
1242         * include/bits/algorithmfwd.h: Reorganize versioned namespace.
1243         * include/bits/basic_string.h: Likewise.
1244         * include/bits/c++config: Likewise.
1245         * include/bits/deque.tcc: Likewise.
1246         * include/bits/forward_list.h: Likewise.
1247         * include/bits/forward_list.tcc: Likewise.
1248         * include/bits/hashtable_policy.h: Likewise.
1249         * include/bits/list.tcc: Likewise.
1250         * include/bits/move.h: Likewise.
1251         * include/bits/quoted_string.h: Likewise.
1252         * include/bits/random.h: Likewise.
1253         * include/bits/random.tcc: Likewise.
1254         * include/bits/regex.h: Likewise.
1255         * include/bits/regex.tcc: Likewise.
1256         * include/bits/regex_automaton.h: Likewise.
1257         * include/bits/regex_automaton.tcc: Likewise.
1258         * include/bits/regex_compiler.h: Likewise.
1259         * include/bits/regex_compiler.tcc: Likewise.
1260         * include/bits/regex_constants.h: Likewise.
1261         * include/bits/regex_error.h: Likewise.
1262         * include/bits/regex_executor.h: Likewise.
1263         * include/bits/regex_executor.tcc: Likewise.
1264         * include/bits/regex_scanner.h: Likewise.
1265         * include/bits/regex_scanner.tcc: Likewise.
1266         * include/bits/specfun.h: Likewise.
1267         * include/bits/stl_algo.h: Likewise.
1268         * include/bits/stl_algobase.h: Likewise.
1269         * include/bits/stl_bvector.h: Likewise.
1270         * include/bits/stl_deque.h: Likewise.
1271         * include/bits/stl_iterator.h: Likewise.
1272         * include/bits/stl_iterator_base_funcs.h: Likewise.
1273         * include/bits/stl_list.h: Likewise.
1274         * include/bits/stl_map.h: Likewise.
1275         * include/bits/stl_multimap.h: Likewise.
1276         * include/bits/stl_multiset.h: Likewise.
1277         * include/bits/stl_relops.h: Likewise.
1278         * include/bits/stl_set.h: Likewise.
1279         * include/bits/stl_vector.h: Likewise.
1280         * include/bits/uniform_int_dist.h: Likewise.
1281         * include/bits/unordered_map.h: Likewise.
1282         * include/bits/unordered_set.h: Likewise.
1283         * include/bits/vector.tcc: Likewise.
1284         * include/c_global/cmath: Likewise.
1285         * include/c_std/cmath: Likewise.
1286         * include/decimal/decimal: Likewise.
1287         * include/decimal/decimal.h: Likewise.
1288         * include/experimental/algorithm: Likewise.
1289         * include/experimental/any: Likewise.
1290         * include/experimental/array: Likewise.
1291         * include/experimental/bits/erase_if.h: Likewise.
1292         * include/experimental/bits/fs_dir.h: Likewise.
1293         * include/experimental/bits/fs_fwd.h: Likewise.
1294         * include/experimental/bits/fs_ops.h: Likewise.
1295         * include/experimental/bits/fs_path.h: Likewise.
1296         * include/experimental/bits/lfts_config.h: Likewise.
1297         * include/experimental/bits/shared_ptr.h: Likewise.
1298         * include/experimental/bits/string_view.tcc: Likewise.
1299         * include/experimental/chrono: Likewise.
1300         * include/experimental/deque: Likewise.
1301         * include/experimental/filesystem: Likewise.
1302         * include/experimental/forward_list: Likewise.
1303         * include/experimental/functional: Likewise.
1304         * include/experimental/iterator: Likewise.
1305         * include/experimental/list: Likewise.
1306         * include/experimental/map: Likewise.
1307         * include/experimental/memory: Likewise.
1308         * include/experimental/memory_resource: Likewise.
1309         * include/experimental/numeric: Likewise.
1310         * include/experimental/optional: Likewise.
1311         * include/experimental/propagate_const: Likewise.
1312         * include/experimental/random: Likewise.
1313         * include/experimental/ratio: Likewise.
1314         * include/experimental/regex: Likewise.
1315         * include/experimental/set: Likewise.
1316         * include/experimental/source_location: Likewise.
1317         * include/experimental/string: Likewise.
1318         * include/experimental/string_view: Likewise.
1319         * include/experimental/system_error: Likewise.
1320         * include/experimental/tuple: Likewise.
1321         * include/experimental/type_traits: Likewise.
1322         * include/experimental/unordered_map: Likewise.
1323         * include/experimental/unordered_set: Likewise.
1324         * include/experimental/utility: Likewise.
1325         * include/experimental/vector: Likewise.
1326         * include/ext/bitmap_allocator.h: Likewise.
1327         * include/ext/codecvt_specializations.h: Likewise.
1328         * include/ext/rope: Likewise.
1329         * include/ext/typelist.h: Likewise.
1330         * include/std/chrono: Likewise.
1331         * include/std/complex: Likewise.
1332         * include/std/functional: Likewise.
1333         * include/std/numeric: Likewise.
1334         * include/std/string_view: Likewise.
1335         * include/std/thread: Likewise.
1336         * include/std/variant: Likewise.
1337         * include/tr1/array: Likewise.
1338         * include/tr1/bessel_function.tcc: Likewise.
1339         * include/tr1/beta_function.tcc: Likewise.
1340         * include/tr1/cmath: Likewise.
1341         * include/tr1/complex: Likewise.
1342         * include/tr1/ell_integral.tcc: Likewise.
1343         * include/tr1/exp_integral.tcc: Likewise.
1344         * include/tr1/functional: Likewise.
1345         * include/tr1/functional_hash.h: Likewise.
1346         * include/tr1/gamma.tcc: Likewise.
1347         * include/tr1/hashtable.h: Likewise.
1348         * include/tr1/hashtable_policy.h: Likewise.
1349         * include/tr1/hypergeometric.tcc: Likewise.
1350         * include/tr1/legendre_function.tcc: Likewise.
1351         * include/tr1/modified_bessel_func.tcc: Likewise.
1352         * include/tr1/poly_hermite.tcc: Likewise.
1353         * include/tr1/poly_laguerre.tcc: Likewise.
1354         * include/tr1/random.h: Likewise.
1355         * include/tr1/random.tcc: Likewise.
1356         * include/tr1/regex: Likewise.
1357         * include/tr1/riemann_zeta.tcc: Likewise.
1358         * include/tr1/shared_ptr.h: Likewise.
1359         * include/tr1/special_function_util.h: Likewise.
1360         * include/tr1/tuple: Likewise.
1361         * include/tr1/type_traits: Likewise.
1362         * include/tr1/unordered_map.h: Likewise.
1363         * include/tr1/unordered_set.h: Likewise.
1364         * include/tr1/utility: Likewise.
1365         * include/tr2/bool_set: Likewise.
1366         * include/tr2/bool_set.tcc: Likewise.
1367         * include/tr2/dynamic_bitset: Likewise.
1368         * include/tr2/dynamic_bitset.tcc: Likewise.
1369         * include/tr2/ratio: Likewise.
1370         * include/tr2/type_traits: Likewise.
1371         * src/c++11/chrono.cc: Likewise.
1372         * src/c++11/compatibility-c++0x.cc: Likewise.
1373         * src/c++11/compatibility-chrono.cc: Likewise.
1374         * src/c++11/cxx11-shim_facets.cc: Likewise.
1375         * src/c++11/hashtable_c++0x.cc: Likewise.
1376         * src/c++11/placeholders.cc: Likewise.
1377         * src/c++11/thread.cc: Likewise.
1378         * src/c++98/bitmap_allocator.cc: Likewise.
1379         * src/c++98/hashtable_tr1.cc: Likewise.
1380         * src/c++98/list.cc: Likewise.
1381         * src/shared/hashtable-aux.cc: Likewise.
1382         * testsuite/20_util/duration/literals/range.cc: Adapt line number.
1383         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1384         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1385         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1386         * testsuite/20_util/forward/c_neg.cc: Likewise.
1387         * testsuite/20_util/forward/f_neg.cc: Likewise.
1388         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
1389         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1390         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
1391         * python/libstdcxx/v6/printers.py: Adapt.
1393 2017-07-20  Jonathan Wakely  <jwakely@redhat.com>
1395         * config/allocator/malloc_allocator_base.h [__SANITIZE_ADDRESS__]
1396         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
1397         * config/allocator/new_allocator_base.h [__SANITIZE_ADDRESS__]
1398         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
1399         * doc/xml/manual/using.xml (_GLIBCXX_SANITIZE_VECTOR): Document macro.
1400         * include/bits/stl_vector.h [_GLIBCXX_SANITIZE_VECTOR]
1401         (_Vector_impl::_Asan, _Vector_impl::_Asan::_Reinit)
1402         (_Vector_impl::_Asan::_Grow, _GLIBCXX_ASAN_ANNOTATE_REINIT)
1403         (_GLIBCXX_ASAN_ANNOTATE_GROW, _GLIBCXX_ASAN_ANNOTATE_GREW)
1404         (_GLIBCXX_ASAN_ANNOTATE_SHRINK, _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC):
1405         Define annotation helper types and macros.
1406         (vector::~vector, vector::push_back, vector::pop_back)
1407         (vector::_M_erase_at_end): Add annotations.
1408         * include/bits/vector.tcc (vector::reserve, vector::emplace_back)
1409         (vector::insert, vector::_M_erase, vector::operator=)
1410         (vector::_M_fill_assign, vector::_M_assign_aux)
1411         (vector::_M_insert_rval, vector::_M_emplace_aux)
1412         (vector::_M_insert_aux, vector::_M_realloc_insert)
1413         (vector::_M_fill_insert, vector::_M_default_append)
1414         (vector::_M_shrink_to_fit, vector::_M_range_insert): Annotate.
1416 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
1418         PR libstdc++/81476
1419         * include/bits/vector.tcc (vector::_M_range_insert<_InputIterator>):
1420         Only insert elements one-by-one when inserting at the end.
1421         * testsuite/performance/23_containers/insert/81476.cc: New.
1423 2017-07-19  Volker Reichelt  <v.reichelt@netcologne.de>
1425         * libsupc++/new (bad_array_new_length): Remove redundant
1426         semicolon after in-class member function definition.
1427         * include/bits/locale_facets.h (ctype_byname, num_put): Likewise.
1428         * include/bits/locale_facets_nonio.h (time_put_byname): Likewise.
1429         * include/bits/random.h (mersenne_twister_engine): Likewise.
1430         * include/tr1/random.h (mersenne_twister): Likewise
1431         * include/ext/random (simd_fast_mersenne_twister_engine): Likewise.
1432         * include/ext/rope (char_producer, _Rope_char_consumer,
1433         _Rope_self_destruct_ptr, _Rope_const_iterator, _Rope_iterator):
1434         Likewise.
1435         * include/ext/ropeimpl.h (_Rope_flatten_char_consumer,
1436         _Rope_insert_char_consumer): Likewise.
1438 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
1440         * include/bits/fstream.tcc (basic_filebuf::xsgetn)
1441         (basic_filebuf::xsputn, basic_filebuf::seekoff): Fix indentation.
1443         * testsuite/util/testsuite_iterators.h: Fix indentation.
1445         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: Add dg-require.
1447 2017-07-18  Jonathan Wakely  <jwakely@redhat.com>
1449         PR libstdc++/81395
1450         * include/bits/fstream.tcc (basic_filebuf::xsgetn): Don't set buffer
1451         pointers for write mode after reading.
1452         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: New.
1454 2017-07-18  François Dumont  <fdumont@gcc.gnu.org>
1456         * include/bits/stl_list.h
1457         (struct _List_node_header): New.
1458         (_List_impl()): Fix noexcept qualification.
1459         (_List_impl(_List_impl&&)): New, default.
1460         (_List_base()): Default.
1461         (_List_base(_List_base&&)): Default.
1462         (_List_base::_M_move_nodes): Adapt to use
1463         _List_node_header._M_move_nodes.
1464         (_List_base::_M_init): Likewise.
1465         (list<>()): Default.
1466         (list<>(list&&)): Default.
1467         (list<>::_M_move_assign(list&&, true_type)): Use _M_move_nodes.
1468         (__distance(_List_const_iterator<>, _List_const_iterator<>,
1469         input_iterator_tag)): Adapt.
1470         * testsuite/23_containers/list/allocator/default_init.cc: New.
1472 2017-07-15  Jonathan Wakely  <jwakely@redhat.com>
1474         * include/std/mutex (scoped_lock): Reorder std::adopt_lock_t parameter
1475         as per P0739R0.
1476         * testsuite/30_threads/scoped_lock/cons/1.cc: Reorder arguments.
1477         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Test deduction
1478         with std::adopt_lock_t.
1479         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Check
1480         feature-test macro.
1482 2017-07-14  Jason Merrill  <jason@redhat.com>
1483             Jonathan Wakely  <jwakely@redhat.com>
1485         * include/std/variant (variant::variant(_Tp&&)): Constrain to remove
1486         the constructor for empty variants from the candidate functions
1487         during class template argument deduction.
1488         * testsuite/20_util/variant/deduction.cc: New.
1490 2017-07-11  Jonathan Wakely  <jwakely@redhat.com>
1492         * doc/xml/faq.xml: Update several old entries. Improve
1493         cross-references.
1494         * doc/xml/manual/intro.xml: Add anchors to each DR.
1495         * doc/html/*: Regenerate.
1497 2017-07-10  Jonathan Wakely  <jwakely@redhat.com>
1499         * testsuite/abi/pr42230.cc: Add header for std::free.
1501         PR libstdc++/81381
1502         * include/bits/sstream.tcc (basic_stringbuf::overflow)
1503         (basic_stringbuf::basic_stringbuf(const __string_type&, ios::mode))
1504         (basic_stringbuf::str()): Construct new strings with an allocator.
1505         * testsuite/27_io/basic_stringbuf/cons/81381.cc: New.
1507         PR libstdc++/81338
1508         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
1509         Declare basic_stringbuf to be a friend.
1510         * include/bits/sstream.tcc (basic_stringbuf::overflow)
1511         [_GLIBCXX_USE_CXX11_ABI]: Use unused capacity before reallocating.
1512         * include/std/sstream (basic_stringbuf::__xfer_bufptrs): Update string
1513         length to buffer length.
1514         * testsuite/27_io/basic_stringstream/assign/81338.cc: New.
1516 2017-07-06  Jonathan Wakely  <jwakely@redhat.com>
1518         * testsuite/20_util/specialized_algorithms/memory_management_tools/
1519         1.cc: Free memory.
1520         * testsuite/22_locale/locale/cons/5.cc: Remove redundant restoration
1521         of original environment and free memory.
1523         * testsuite/abi/pr42230.cc: Free memory.
1524         * testsuite/util/testsuite_abi.cc (demangle): Return std::string
1525         instead of pointer that might need freeing.
1526         * testsuite/util/testsuite_abi.h (demangle): Likewise.
1527         * testsuite/util/testsuite_hooks.cc (verify_demangle): Free memory.
1529         * include/bits/uses_allocator.h (__use_alloc(const _Alloc&&)): Add
1530         deleted overload to prevent dangling references to rvalues.
1531         * include/experimental/memory_resource
1532         (polymorphic_allocator::construct): Do not call __use_alloc with
1533         rvalue arguments.
1535 2017-06-27  Tim Shen  <timshen@google.com>
1537         PR libstdc++/80187
1538         * include/std/variant (variant::variant, variant::~variant,
1539         variant::operator=): Implement triviality forwarding for four
1540         special member functions.
1541         * testsuite/20_util/variant/compile.cc: Tests.
1543 2017-06-27  Jonathan Wakely  <jwakely@redhat.com>
1545         PR libstdc++/81221
1546         * testsuite/25_algorithms/sample/81221.cc: Disable except for
1547         check-parallel.
1549         PR libstdc++/81221
1550         * include/bits/stl_algo.h (sample): Qualify with _GLIBCXX_STD_A not
1551         std.
1552         * testsuite/25_algorithms/sample/81221.cc: New.
1554 2017-06-22  Jonathan Wakely  <jwakely@redhat.com>
1556         PR libstdc++/81173
1557         * include/bits/stl_bvector.h (vector<bool>::_M_initialize_value):
1558         Do not pass null pointer to memset.
1560 2017-06-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
1562         PR libstdc++/80675
1563         PR libstdc++/80940
1564         * include/std/istream:
1565         (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
1566         (__do_is_convertible_to_basic_istream_impl): Likewise.
1567         (__is_convertible_to_basic_istream_impl): Likewise.
1568         (__is_convertible_to_basic_istream): Use the new base.
1569         (__rvalue_istream_type): New.
1570         (operator>>(_Istream&&, _Tp&&)): Use the new helper alias
1571         for the SFINAE check, convert to the helper alias type before
1572         doing the actual extraction.
1573         * include/std/ostream:
1574         (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
1575         (__do_is_convertible_to_basic_ostream_impl): Likewise.
1576         (__is_convertible_to_basic_ostream_impl): Likewise.
1577         (__is_convertible_to_basic_ostream): Use the new base.
1578         (__rvalue_ostream_type): New.
1579         (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
1580         for the SFINAE check, convert to the helper alias type before
1581         doing the actual insertion.
1582         * testsuite/27_io/rvalue_streams-2.cc: Add new tests.
1584 2017-06-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1586         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
1588 2017-06-21  Jonathan Wakely  <jwakely@redhat.com>
1590         PR libstdc++/81092
1591         * configure: Regenerate.
1593 2017-06-20  Uros Bizjak  <ubizjak@gmail.com>
1595         * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1597 2017-06-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1599         * testsuite/20_util/variant/index_type.cc: Allow for all ilp32 and
1600         lp64 targets.
1602 2017-06-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1604         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
1605         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
1606         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
1607         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
1608         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
1609         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
1610         Likewise.
1611         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
1612         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
1613         Likewise.
1615 2017-06-18  H.J. Lu  <hongjiu.lu@intel.com>
1617         PR libstdc++/81092
1618         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1620 2017-06-18  Andreas Schwab  <schwab@linux-m68k.org>
1622         PR libstdc++/81092
1623         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
1625 2017-06-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1627         * testsuite: Remove dg-skip-if, dg-xfail-if, dg-xfail-run-if
1628         default args.
1630 2017-06-17  Jonathan Wakely  <jwakely@redhat.com>
1632         PR libstdc++/80893
1633         * testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }.
1635 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
1637         * include/bits/shared_ptr.h (get_deleter): Add overload matching
1638         standard signature.
1639         * include/bits/shared_ptr_base.h (__shared_ptr): Declare new
1640         get_deleter overload as a friend.
1641         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: New.
1643 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
1645         PR libstdc++/81092
1646         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
1647         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
1648         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
1650 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
1652         * include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
1653         * testsuite/22_locale/conversions/buffer/2.cc: New.
1655         PR libstdc++/81092
1656         * acinclude.m4: Bump libtool_VERSION.
1657         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
1658         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
1659         * config/abi/pre/gnu.ver: Add wstring constructor symbols to
1660         GLIBCXX_3.4.24 version and move random_device::_M_get_entropy() symbol
1661         to new GLIBCXX_3.4.25 version.
1662         * doc/xml/manual/abi.xml: Document new versions.
1663         * doc/html/*: Regenerate.
1664         * testsuite/21_strings/basic_string/cons/char/8.cc: Use base object
1665         constructors to ensure required symbols are exported.
1666         * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
1667         * testsuite/util/testsuite_abi.cc: Add new version.
1669         * include/bits/locale_conv.h (wbuffer_convert::_M_put): Add missing
1670         return statement.
1671         * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
1672         Return void.
1673         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
1674         Likewise.
1675         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: Add
1676         missing return statements.
1677         * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
1678         Likewise.
1679         * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
1680         Return void.
1681         * testsuite/special_functions/14_expint/pr68397.cc: Likewise.
1683 2017-06-16  François Dumont  <fdumont@gcc.gnu.org>
1685         * include/bits/stl_bvector.h
1686         (__fill_bvector(_Bit_type*, unsigned int, unsigned int, bool)):
1687         Change signature.
1688         (std::fill(_Bit_iterator, _Bit_iterator, bool)): Adapt.
1689         (_Bvector_impl_data): New.
1690         (_Bvector_impl): Inherits from latter.
1691         (_Bvector_impl(_Bit_alloc_type&&)): Delete.
1692         (_Bvector_impl(_Bvector_impl&&)): New, default.
1693         (_Bvector_base()): Default.
1694         (_Bvector_base(_Bvector_base&&)): Default.
1695         (_Bvector_base::_M_move_data(_Bvector_base&&)): New.
1696         (vector(vector&&, const allocator_type&)): Use latter.
1697         (vector<bool>::operator=(vector&&)): Likewise.
1698         (vector<bool>::vector()): Default.
1699         (vector<bool>::vector(vector&&)): Default.
1700         (vector<bool>::assign(_InputIterator, _InputIterator)): Use
1701         _M_assign_aux.
1702         (vector<bool>::assign(initializer_list<bool>)): Likewise.
1703         (vector<bool>::_M_initialize_value(bool)): New.
1704         (vector<bool>(size_type, const bool&, const allocator_type&)): Use
1705         latter.
1706         (vector<bool>::_M_initialize_dispatch(_Integer, _Integer, __true_type)):
1707         Likewise.
1708         (vector<bool>::_M_fill_assign(size_t, bool)): Likewise.
1710 2017-06-15  François Dumont  <fdumont@gcc.gnu.org>
1712         * src/c++98/tree.cc  [!_GLIBCXX_INLINE_VERSION]
1713         (_Rb_tree_rotate_left, _Rb_tree_rotate_right): Delete.
1715 2017-06-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1717         * testsuite: Add dg-require-effective-target pthread to -pthread
1718         tests.
1719         Remove explicit target lists from dg-do and dg-options.
1721         * testsuite/30_threads/async/forced_unwind.cc: Remove explit
1722         target list from dg-options.
1723         * testsuite/30_threads/packaged_task/forced_unwind.cc: Likewise.
1725         * 30_threads/shared_mutex/cons/1.cc: Likewise.
1726         Pass -pthread for all targets.
1727         * 30_threads/shared_mutex/try_lock/1.cc: Likewise.
1728         * 30_threads/shared_mutex/try_lock/2.cc: Likewise.
1729         * 30_threads/shared_mutex/unlock/1.cc: Likewise.
1731         * testsuite/30_threads/this_thread/57060.cc: Require c++11 via
1732         dg-require-effective-target.
1734 2017-06-14  Jonathan Wakely  <jwakely@redhat.com>
1736         * doc/xml/manual/test.xml: Correct instructions on running tests.
1737         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
1738         pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
1739         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1740         Likewise.
1741         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
1742         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
1743         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
1744         exceptions_failbit.cc: Likewise.
1745         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
1746         exceptions_failbit.cc: Likewise.
1747         * testsuite/27_io/basic_istream/extractors_other/char/
1748         exceptions_null.cc: Likewise.
1749         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
1750         exceptions_null.cc: Likewise.
1751         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
1752         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
1753         * testsuite/27_io/basic_ostream/inserters_other/char/
1754         exceptions_null.cc: Likewise.
1755         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
1756         exceptions_null.cc: Likewise.
1757         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
1759 2017-06-12  Pedro Alves  <palves@redhat.com>
1761         * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
1762         char_traits status.
1763         * doc/html/*: Regenerate.
1765         * include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if
1766         not already defined.
1767         (__cpp_lib_constexpr_char_traits): Uncomment.
1768         (__constant_string_p, __constant_char_array_p): New.
1769         (std::char_traits<char>, std::char_traits<wchar_t>): Add
1770         _GLIBCXX17_CONSTEXPR on compare, length and find and use
1771         __constant_string_p, __constant_char_array_p and
1772         __builtin_constant_p to defer to __gnu_cxx::char_traits at compile
1773         time.
1775         * testsuite/21_strings/char_traits/requirements/
1776         constexpr_functions_c++17.cc: Uncomment
1777         __cpp_lib_constexpr_char_traits tests.  Uncomment
1778         test_compare<char>, test_length<char>, test_find<char>,
1779         test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t>
1780         static_assert tests.
1782 2017-06-12  François Dumont  <fdumont@gcc.gnu.org>
1784         * include/bits/stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator
1785         default init.
1786         * testsuite/util/testsuite_allocator.h
1787         (__gnu_test::default_init_allocator<>) New.
1788         * testsuite/23_containers/set/allocator/default_init.cc: New.
1789         * testsuite/23_containers/map/allocator/default_init.cc: New.
1791 2017-06-12  Jonathan Wakely  <jwakely@redhat.com>
1793         PR libstdc++/55917
1794         * src/c++11/thread.cc (execute_native_thread_routine): Remove
1795         try-block so that exceptions propagate out of the thread and terminate
1796         is called by the exception-handling runtime.
1797         (execute_native_thread_routine_compat): Likewise.
1798         * testsuite/30_threads/thread/cons/terminate.cc: New.
1800 2017-06-09  Jonathan Wakely  <jwakely@redhat.com>
1802         * doc/xml/manual/intro.xml: Document LWG 2802, 2873 and 2942 changes.
1803         * include/bits/shared_ptr.h (shared_ptr): Use rvalues for deleters
1804         (LWG 2802).
1805         * include/bits/shared_ptr_base.h (_Sp_ebo_helper, _Sp_counted_deleter
1806         (_Sp_counted_deleter::_Impl, __shared_count, __shared_ptr): Likewise.
1807         * testsuite/20_util/shared_ptr/cons/lwg2802.cc: New.
1809         * include/bits/forward_list.h (forward_list): Add deduction guide.
1810         * include/bits/stl_deque.h (deque): Likewise.
1811         * include/bits/stl_list.h (list): Likewise.
1812         * include/bits/stl_vector.h (vector): Likewise.
1813         * testsuite/23_containers/deque/cons/deduction.cc: New.
1814         * testsuite/23_containers/forward_list/cons/deduction.cc: New.
1815         * testsuite/23_containers/list/cons/deduction.cc: New.
1816         * testsuite/23_containers/vector/cons/deduction.cc: New.
1818 2017-06-08  Jonathan Wakely  <jwakely@redhat.com>
1820         PR libstdc++/81017
1821         * include/bits/std_function.h (function::function(function&&))
1822         (function::operator=(funtion&&)): Add noexcept.
1823         * testsuite/20_util/function/assign/move.cc: Check for noexcept.
1824         * testsuite/20_util/function/cons/move.cc: Likewise.
1826 2017-06-07  Jonathan Wakely  <jwakely@redhat.com>
1828         * include/bits/regex.h (basic_regex): Add deduction guide from P0433.
1829         * testsuite/28_regex/basic_regex/ctors/deduction.cc: New.
1831         PR libstdc++/81002
1832         * include/bits/regex.h (basic_regex): Adjust call to __compile_nfa
1833         so iterator type is deduced.
1834         * include/bits/regex_compiler.h (__compile_nfa): Reorder template
1835         parameters to allow iterator type to be deduced.
1836         * testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New.
1838         * include/bits/alloc_traits.h (__is_allocator, _RequireAllocator):
1839         New trait and alias for detecting Allocator-like types.
1840         * include/bits/basic_string.h (basic_string): Add deduction guide
1841         from P0433.
1842         * include/ext/alloc_traits.h (__gnu_cxx::__alloc_traits): Add template
1843         parameter with default template argument that causes substitution
1844         failures for types that cannot be allocators.
1845         * testsuite/21_strings/basic_string/cons/char/deduction.cc: New.
1846         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: New.
1848 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
1850         PR libstdc++/80939
1851         * include/std/variant (__erased_ctor, __erased_assign, __erased_swap)
1852         (__erased_hash): Remove constexpr specifier and qualify calls to
1853         __ref_cast.
1854         (__erased_dtor): Remove constexpr specifier and use _Destroy.
1856 2017-06-05  Jonathan Wakely  <jwakely@redhat.com>
1858         * include/bits/stl_iterator_base_funcs.h
1859         (__advance<_RandomAccessIterator, _Distance>): Optimize for next/prev
1860         cases where incrementing or decrementing a single step.
1862         * include/bits/shared_ptr_base.h (__shared_ptr::owner_before)
1863         (__weak_ptr::owner_before, _Sp_owner_less::operator()): Add noexcept
1864         specifiers as per LWG 2873 and LWG 2942.
1865         * testsuite/20_util/owner_less/noexcept.cc: New.
1866         * testsuite/20_util/shared_ptr/observers/owner_before.cc: Test
1867         noexcept guarantees.
1868         * testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
1870 2017-06-03  Andreas Schwab  <schwab@linux-m68k.org>
1872         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
1874 2017-06-03  Eric Botcazou  <ebotcazou@adacore.com>
1876         * src/filesystem/dir.cc (fs::_Dir::advance): Use std::exchange.
1878 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
1880         PR libstdc++/80624
1881         * doc/xml/manual/status_cxx2011.xml: Document to_int_type behaviour.
1882         * include/bits/char_traits.h (char_traits<char16_t>::to_int_type):
1883         Transform eof value to U+FFFD.
1884         * testsuite/21_strings/char_traits/requirements/char16_t/eof.cc: New.
1885         * testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc: New.
1886         * testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc: New.
1888         * libsupc++/Makefile.am: Remove custom targets for files that need to
1889         be compiled as C++11 or C++14.
1890         * libsupc++/Makefile.in: Regenerate.
1891         * libsupc++/del_ops.cc: Use pragma to disable -Wsized-deallocation
1892         warnings.
1893         * libsupc++/del_opvs.cc: Likewise.
1895 2017-06-02  Richard Biener  <rguenther@suse.de>
1896         Markus Eisenmann  <meisenmann.lba@fh-salzburg.ac.at>
1898         PR libstdc++/80721
1899         * libsupc++/eh_alloc.cc (pool::free): Keep list properly
1900         sorted and add missing freelist item merging cases.
1902 2017-06-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1904         (GLIBCXX_CROSSCONFIG): Handle *-solaris* like *-linux* etc.
1905         Remove *-solaris* section.
1906         * configure: Regenerate.
1908 2017-05-31  Jonathan Wakely  <jwakely@redhat.com>
1910         PR libstdc++/80893
1911         * include/bits/stl_bvector.h (vector<bool>::_M_initialize): Avoid
1912         null pointer dereference when size is zero.
1913         * testsuite/23_containers/vector/bool/80893.cc: New.
1914         * testsuite/util/testsuite_allocator.h (PointerBase::PointerBase):
1915         Add non-explicit constructor from nullptr.
1916         (PointerBase::derived() const): Add const-qualified overload.
1918 2017-05-20  Tim Shen  <timshen@google.com>
1920         PR libstdc++/80737
1921         * include/std/variant(variant::variant): SFINAE on is_same first.
1922         * testsuite/20_util/variant/any.cc: test case.
1924 2017-05-24  Jonathan Wakely  <jwakely@redhat.com>
1926         * src/c++11/random.cc (random_device::_M_getentropy): Use __CHAR_BIT__
1927         instead of fixed number of bits.
1929 2017-05-24  Andreas Schwab  <schwab@suse.de>
1931         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
1932         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise.
1934 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
1935             Jonathan Wakely  <jwakely@redhat.com>
1937         PR libstdc++/67578
1938         * acinclude.m4: Bump libtool_VERSION.
1939         * config/abi/pre/gnu.ver: Create GLIBCXX_3.4.24 with new symbol.
1940         * config.h.in: Regenerate.
1941         * configure: Regenerate.
1942         * configure.ac: Add test for <linux/random.h>.
1943         * doc/xml/manual/abi.xml: Document new library version.
1944         * include/bits/random.h (random_device::entropy)
1945         [_GLIBCXX_USE_RANDOM_TR1]: Add call to new _M_getentropy member.
1946         (random_device::_M_getentropy): Declare.
1947         * src/c++11/random.cc (random_device::_M_getentropy): Define.
1948         * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.24 to known
1949         versions, and make it the latest version.
1951 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
1953         PR libstdc++/67214
1954         * include/bits/locale_facets.tcc (num_get::_M_extract_int): Add
1955         explicit conversion to avoid signed overflow.
1957 2017-05-19  Jonathan Wakely  <jwakely@redhat.com>
1959         PR libstdc++/80796
1960         * include/bits/stl_algo.h (search): Add new overload for C++17.
1961         * testsuite/25_algorithms/search/searcher.cc: New.
1963 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
1965         PR libstdc++/80478
1966         * include/std/functional (_Mem_fn_traits_base): Add specializations
1967         for noexcept member function types.
1968         * testsuite/20_util/function_objects/mem_fn/80478.cc: New test.
1970 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
1972         * doc/xml/manual/policy_data_structures.xml: Fix typo.
1973         * doc/xml/manual/test_policy_data_structures.xml: Likewise.
1974         * doc/html/*: Regenerate.
1976         * doc/xml/manual/abi.xml: Document latest library versions.
1977         * doc/xml/manual/build_hacking.xml: Document requirement to update
1978         abi.xml when bumping library versions.
1979         * doc/html/*: Regenerate.
1981 2017-05-17  Jonathan Wakely  <jwakely@redhat.com>
1983         * include/bits/refwrap.h: Fix Doxygen warning.
1984         * include/bits/specfun.h: Likewise.
1985         * include/bits/std_function.h: Likewise.
1986         * include/bits/stl_algo.h (set_union, set_intersection)
1987         (set_difference, set_symmetric_difference): Add Doxygen @param tags
1988         for output iterator parameters.
1989         * include/bits/stl_iterator.h (inserter): Add Doxygen @param tag for
1990         iterator parameter.
1991         * include/std/mutex (try_lock, lock): Change Mutex to Lockable in
1992         Doxygen comments.
1994 2017-05-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
1996         Implement new C++ intrinsics __is_assignable and __is_constructible.
1997         * include/std/type_traits (__do_is_static_castable_impl): Remove.
1998         (__is_static_castable_impl, __is_static_castable_safe): Likewise.
1999         (__is_static_castable, __do_is_direct_constructible_impl): Likewise.
2000         (__is_direct_constructible_impl): Likewise.
2001         (__is_direct_constructible_new_safe): Likewise.
2002         (__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise.
2003         (__is_direct_constructible_ref_cast): Likewise.
2004         (__is_direct_constructible_new, __is_direct_constructible): Likewise.
2005         (__do_is_nary_constructible_impl): Likewise.
2006         (__is_nary_constructible_impl, __is_nary_constructible): Likewise.
2007         (__is_constructible_impl): Likewise.
2008         (is_constructible): Call the intrinsic.
2009         (__is_assignable_helper): Remove.
2010         (is_assignable): Call the intrinsic.
2011         (is_trivially_constructible): Likewise.
2012         (__is_trivially_copy_constructible_impl): New.
2013         (is_trivially_copy_constructible): Use it.
2014         (__is_trivially_move_constructible_impl): New.
2015         (is_trivially_move_constructible): Use it.
2016         (is_trivially_assignable): Call the intrinsic.
2017         (__is_trivially_copy_assignable_impl): New.
2018         (is_trivially_copy_assignable): Use it.
2019         (__is_trivially_move_assignable_impl): New.
2020         (is_trivially_move_assignable): Use it.
2021         (testsuite/20_util/declval/requirements/1_neg.cc): Adjust.
2022         (testsuite/20_util/is_trivially_copy_assignable/value.cc):
2023         Add test for void.
2024         (testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise.
2025         (testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise.
2026         (testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise.
2027         (testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust.
2028         (testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc):
2029         Likewise.
2031 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
2033         * testsuite/experimental/source_location/1.cc: Change expected result
2034         for source_location::current() used in default member initializer.
2036         * doc/xml/manual/status_cxx2017.xml: Update status table.
2037         * doc/html/*: Regenerate.
2038         * include/Makefile.am: Add new header.
2039         * include/Makefile.in: Regenerate.
2040         * include/experimental/source_location: New header implementing N4519.
2041         * testsuite/experimental/source_location/1.cc: New test.
2043         PR libstdc++/80285
2044         * include/bits/shared_ptr_base.h [!__cpp_rtti] (type_info): Declare
2045         outside versioned namespace.
2047         * configure: Regenerate.
2049 2017-05-16  Marc Glisse  <marc.glisse@inria.fr>
2051         * include/std/optional (_Optional_base::_M_get): Check precondition.
2052         * testsuite/20_util/optional/cons/value_neg.cc: Update line numbers.
2054 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
2056         * doc/xml/manual/appendix_contributing.xml: Link to test docs and
2057         note higher DejaGnu version requirement.
2058         * doc/html/*: Regenerate.
2060         * doc/xml/manual/appendix_contributing.xml: Link to the list of bad
2061         identifiers.
2062         * doc/html/*: Regenerate.
2064 2017-05-15  Jonathan Wakely  <jwakely@redhat.com>
2066         PR libstdc++/80761
2067         * include/bits/node_handle.h (_Node_insert_return): Reorder members.
2068         (tuple_size, tuple_element): Remove partial specializations.
2069         * include/bits/stl_tree.h (_Rb_tree::insert_return_type): Use
2070         const_iterator for std::set.
2071         * testsuite/23_containers/map/modifiers/extract.cc: New.
2072         * testsuite/23_containers/set/modifiers/extract.cc: New.
2073         * testsuite/23_containers/unordered_map/modifiers/extract.cc: New.
2074         * testsuite/23_containers/unordered_set/modifiers/extract.cc: New.
2076 2017-05-12  Jonathan Wakely  <jwakely@redhat.com>
2078         PR libstdc++/78939
2079         * include/std/utility (tuple_size<cv T>): Only define partial
2080         specializations when tuple_size<T>::value is valid.
2081         * testsuite/20_util/tuple/78939.cc: New.
2082         * testsuite/20_util/tuple/cv_tuple_size_neg.cc: New.
2084 2017-05-11  François Dumont  <fdumont@gcc.gnu.org>
2086         * include/bits/stl_tree.h [_GLIBCXX_INLINE_VERSION]
2087         (_Rb_tree_impl<>): Remove _Is_pod_comparator
2088         template parameter.
2090         * include/debug/formatter.h [_GLIBCXX_INLINE_VERSION]
2091         (__gnu_debug::_Error_formatter::_Parameter::_M_print_field): Remove.
2092         (__gnu_debug::_Error_formatter::_Parameter::_M_print_description):
2093         Remove.
2094         (__gnu_debug::_Error_formatter::_M_format_word): Remove.
2095         (__gnu_debug::_Error_formatter::_M_print_word): Remove.
2096         (__gnu_debug::_Error_formatter::_M_print_string): Remove.
2097         (__gnu_debug::_Error_formatter::_M_get_max_length): Remove.
2098         * src/c++11/debug.cc: Adapt.
2099         * config/abi/pre/gnu-versioned-namespace.ver: Adapt.
2101 2017-05-11  Jonathan Wakely  <jwakely@redhat.com>
2103         * doc/xml/manual/allocator.xml: Fix ViewCVS URLs.
2104         * doc/xml/manual/mt_allocator.xml: Likewise.
2105         * doc/html/*: Regenerate.
2107         PR libstdc++/80285
2108         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Define
2109         function to get unique fake std::type_info reference.
2110         (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Compare to
2111         _S_ti() fake reference.
2112         (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Share
2113         single implementation with or without RTTI enable.
2114         [!__cpp_rtti]: Pass fake reference to _M_get_deleter.
2115         * testsuite/20_util/shared_ptr/creation/alloc.cc: Change expected
2116         allocation and deallocation counts.
2117         * testsuite/20_util/shared_ptr/creation/single_allocation.cc: New.
2118         * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
2119         New.
2121 2017-05-10  François Dumont  <fdumont@gcc.gnu.org>
2123         Bump version namespace.
2124         * config/abi/pre/gnu-versioned-namespace.ver: Bump version namespace
2125         from __7 to __8. Bump GLIBCXX_7.0 to GLIBCXX_8.0.
2126         * acinclude.m4 (libtool_VERSION): Bump to 8:0:0.
2127         * include/bits/c++config: Adapt.
2128         * include/bits/regex.h: Adapt.
2129         * include/experimental/bits/fs_fwd.h: Adapt.
2130         * include/experimental/bits/lfts_config.h: Adapt.
2131         * include/std/variant: Adapt.
2132         * python/libstdcxx/v6/printers.py: Adapt.
2133         * testsuite/libstdc++-prettyprinters/48362.cc: Adapt.
2135         * include/bits/stl_algobase.h (std::__iter_swap<false>): Remove
2136         _GLIBCXX_MOVE usage.
2138 2017-05-09  Jason Merrill  <jason@redhat.com>
2140         * testsuite/24_iterators/container_access.cc (test03): Make il3 static.
2142 2017-05-08  Jonathan Wakely  <jwakely@redhat.com>
2144         * include/std/optional: Use a separate static_assert per condition.
2145         * testsuite/20_util/optional/cons/value_neg.cc: Update dg-error line
2146         numbers.
2148         * doc/xml/manual/mt_allocator.xml: Clarify deallocation behaviour.
2149         * doc/html/*: Regenerate.
2151 2017-05-02  Hugo Beauzée-Luyssen <hugo@beauzee.fr>
2153         PR libstdc++/69506
2154         * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_WEAK_REF): Define.
2156 2017-04-29  François Dumont  <fdumont@gcc.gnu.org>
2158         * testsuite/libstdc++-prettyprinters/48362.cc: Replace a regexp-test
2159         by a note-test.
2161 2017-04-28  Jonathan Wakely  <jwakely@redhat.com>
2163         PR libstdc++/80553
2164         * include/bits/stl_construct.h (_Destroy, _Destroy_n): Add static
2165         assertions to ensure type is destructible.
2166         (destroy_at, destroy, destroy_n): Move from stl_uninitialized.h.
2167         * include/bits/stl_uninitialized.h (destroy_at, destroy, destroy_n):
2168         Move to stl_construct.h.
2169         * testsuite/20_util/specialized_algorithms/memory_management_tools/
2170         destroy_neg.cc: New test.
2171         * testsuite/23_containers/vector/cons/destructible_neg.cc: New test.
2173         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
2174         superfluous "" in dg-error.
2176 2017-04-28  Tom de Vries  <tom@codesourcery.com>
2178         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
2179         superfluous '{ target *-*-* }' in dg-(error|warning|message|bogus).
2181 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
2183         * include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
2184         (PB_DS_CLASS_C_DEC::end()): Remove redundant const in cast type.
2185         * testsuite/util/testsuite_rng.h (twister_rand_gen::get_prob()):
2186         Likewise.
2188 2017-04-26  Jonathan Wakely  <jwakely@redhat.com>
2190         * testsuite/23_containers/deque/allocator/move_assign-2.cc: Improve
2191         comment. Ensure first test works because allocator type propagates and
2192         not because is_always_equal is true.
2193         * testsuite/23_containers/vector/52591.cc: Likewise. Restore original
2194         testcase that instantiates the move-assignment operator.
2196 2017-04-24  Jonathan Wakely  <jwakely@redhat.com>
2198         PR libstdc++/80506
2199         * include/bits/random.tcc (gamma_distribution::operator()): Fix magic
2200         number used in loop condition.
2202         PR libstdc++/80504
2203         * include/bits/refwrap.h (ref, cref): Qualify calls.
2204         * testsuite/20_util/reference_wrapper/80504.cc: New test.
2206         PR libstdc++/80493
2207         * include/experimental/optional (optional::swap): Fix exception
2208         specification.
2210 2017-04-21  Jonathan Wakely  <jwakely@redhat.com>
2212         PR libstdc++/80316
2213         * include/std/future (_State_baseV2::_Setter::operator()): Remove
2214         _S_check calls that are done after the pointer to the shared state is
2215         already dereferenced.
2216         (_State_baseV2::_Setter<_Res, void>): Define specialization for void
2217         as partial specialization so it can be defined within the definition
2218         of _State_baseV2.
2219         (_State_baseV2::__setter): Call _S_check.
2220         (_State_baseV2::__setter(promise<void>*)): Add overload for use by
2221         promise<void>::set_value and promise<void>::set_value_at_thread_exit.
2222         (promise<T>, promise<T&>, promise<void>): Make _State a friend.
2223         (_State_baseV2::_Setter<void, void>): Remove explicit specialization.
2224         (promise<void>::set_value, promise<void>::set_value_at_thread_exit):
2225         Use new __setter overload.
2226         * testsuite/30_threads/promise/members/at_thread_exit2.cc: New test.
2227         * testsuite/30_threads/promise/members/set_exception.cc: Test
2228         promise<T&> and promise<void> specializations.
2229         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
2230         Test for no_state error condition.
2231         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
2233         * include/backward/auto_ptr.h: Ignore deprecated warnings from use
2234         of auto_ptr.
2235         * include/bits/shared_ptr.h: Likewise.
2236         * include/bits/shared_ptr_base.h: Likewise.
2237         * include/bits/unique_ptr.h: Likewise.
2238         * libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc: Adjust
2239         dg-error lineno.
2240         * libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc: Likewise.
2241         * libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc:
2242         Likewise.
2243         * libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc:
2244         Likewise.
2246 2017-04-20  Edward Smith-Rowland  <3dw4rd@verizon.net>
2248         PR libstdc++/68397 std::tr1::expint fails ... long double arguments.
2249         * include/tr1/exp_integral.tcc: Increase iteration limits.
2250         * testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
2251         pr68397.cc: New test.
2252         * testsuite/special_functions/14_expint/pr68397.cc: New test.
2254 2017-04-20  Jonathan Wakely  <jwakely@redhat.com>
2256         PR libstdc++/79862
2257         * include/std/atomic [!_GLIBCXX_USE_C99_STDINT_TR1] (atomic_int8_t)
2258         (atomic_uint8_t, atomic_int16_t, atomic_uint16_t, atomic_int32_t,
2259         (atomic_uint32_t, atomic_int64_t, atomic_uint64_t)
2260         (atomic_int_least8_t, atomic_uint_least8_t, atomic_int_least16_t)
2261         (atomic_uint_least16_t, atomic_int_least32_t, atomic_uint_least32_t)
2262         (atomic_int_least64_t, atomic_uint_least64_t, atomic_int_fast8_t)
2263         (atomic_uint_fast8_t, atomic_int_fast16_t, atomic_uint_fast16_t)
2264         (atomic_int_fast32_t, atomic_uint_fast32_t, atomic_int_fast64_t)
2265         (atomic_uint_fast64_t, atomic_intmax_t, atomic_uintmax_t): Don't
2266         define.
2268 2017-04-19  Jonathan Wakely  <jwakely@redhat.com>
2270         * doc/xml/manual/abi.xml: Rephrase one of the references to the
2271         Itanium C++ ABI.
2272         * doc/xml/manual/test.xml: Document DejaGnu 1.5.3 requirement.
2273         * doc/html/*: Regenerate.
2275         * libsupc++/new: Update comment on #endif directive.
2277         PR libstdc++/80448
2278         * include/experimental/bits/fs_dir.h (directory_iterator)
2279         (recursive_directory_iterator): Remove noexcept from defaulted
2280         constructors.
2282         PR libstdc++/80446
2283         * include/std/type_traits (is_aggregate): Change __has_builtin checks.
2284         * libsupc++/new (launder): Likewise.
2286 2017-04-18  Jonathan Wakely  <jwakely@redhat.com>
2288         * include/std/functional (default_searcher, __boyer_moore_array_base)
2289         (__is_std_equal_to, __boyer_moore_base_t, boyer_moore_searcher)
2290         (boyer_moore_horspool_searcher): Remove redundant namespace
2291         qualification.
2292         (default_searcher::operator()): Construct return value early and
2293         advance second member in-place.
2294         (boyer_moore_horspool_searcher::operator()): Increment random access
2295         iterator directly instead of using std::next.
2296         (boyer_moore_searcher::operator()): Fix return value.
2297         * testsuite/20_util/function_objects/searchers.cc: Check both parts
2298         of return values.
2300 2017-04-12  Gerald Pfeifer  <gerald@pfeifer.com>
2302         * doc/xml/faq.xml: Update reference link to C++ ABI for Itanium.
2303         * doc/xml/manual/abi.xml. Ditto (thrice).
2305 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
2307         * doc/xml/manual/status_cxx2017.xml: Remove duplicate table entry.
2308         * doc/html/*: Regenerate.
2310         * testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests
2311         that no longer fail.
2313         * include/bits/ios_base.h: Correct comment.
2314         * testsuite/util/testsuite_hooks.h: Likewise.
2316         * doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
2317         * doc/xml/manual/appendix_contributing.xml (contrib.organization): Add
2318         directories for debug, parallel and profile headers.
2319         * doc/html/*: Regenerate.
2321         * include/bits/char_traits.h (__gnu_cxx::char_traits): Add
2322         _GLIBCXX14_CONSTEXPR on assign, compare, find, and length.
2323         (std::char_traits<char>, std::char_traits<wchar_t>): Add
2324         _GLIBCXX17_CONSTEXPR on assign.
2325         (std::char_traits<char16_t>, std::char_traits<char32_t>): Add
2326         _GLIBCXX17_CONSTEXPR on assign, compare, find, and length.
2327         * testsuite/21_strings/char_traits/requirements/
2328         constexpr_functions_c++17.cc: New test.
2330 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
2332         PR libstdc++/79141
2333         * include/bits/stl_pair.h (__nonesuch_no_braces): New.
2334         (operator=(typename conditional<
2335         __and_<is_copy_assignable<_T1>,
2336         is_copy_assignable<_T2>>::value,
2337         const pair&, const __nonesuch&>::type)): Change __nonesuch
2338         to __nonesuch_no_braces.
2339         (operator=(typename conditional<
2340         __not_<__and_<is_copy_assignable<_T1>,
2341         is_copy_assignable<_T2>>>::value,
2342         const pair&, const __nonesuch&>::type)): Likewise.
2343         (operator=(typename conditional<
2344         __and_<is_move_assignable<_T1>,
2345         is_move_assignable<_T2>>::value,
2346         pair&&, __nonesuch&&>::type)): Likewise.
2347         * testsuite/20_util/pair/79141.cc: New.
2349 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
2351         Implement std::is_aggregate.
2352         * include/std/type_traits (is_aggregate, is_aggregate_v): New.
2353         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
2354         New.
2355         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
2356         * testsuite/20_util/is_aggregate/value.cc: Likewise.
2358 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
2360         Adjust optional's pretty printer for LWG 2900.
2361         * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter.__init__):
2362         Look at the nested payload in case of non-experimental optional.
2364 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
2366         Implement LWG 2900, The copy and move constructors
2367         of optional are not constexpr.
2368         * include/std/optional (_Optional_payload): New.
2369         (_Optional_base): Remove the bool parameter.
2370         (_Optional_base<_Tp, false>): Remove.
2371         (_Optional_base()): Adjust.
2372         (_Optional_base(nullopt_t)): Likewise.
2373         (_Optional_base(in_place_t, _Args&&...)): Likewise.
2374         (_Optional_base(in_place_t, initializer_list<_Up>, _Args&&...)):
2375         Likewise.
2376         (_Optional_base(const _Optional_base&)): Likewise.
2377         (_Optional_base(_Optional_base&&)): Likewise.
2378         (operator=(const _Optional_base&)): Likewise.
2379         (operator=(_Optional_base&&)): Likewise.
2380         (~_Optional_base()): Remove.
2381         (_M_is_engaged()): Adjust.
2382         (_M_get()): Likewise.
2383         (_M_construct(_Args&&...)): Likewise.
2384         (_M_destruct()): Likewise.
2385         (_M_reset()): Likewise.
2386         (_Optional_base::_Empty_byte): Remove.
2387         (_Optional_base::_M_empty): Remove.
2388         (_Optional_base::_M_payload): Adjust.
2389         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
2390         * testsuite/20_util/optional/constexpr/cons/value.cc: Add tests.
2392 2017-03-28  Jonathan Wakely  <jwakely@redhat.com>
2394         PR libstdc++/80137
2395         * include/bits/random.tcc (generate_canonical): Use std::nextafter
2396         or numeric_limits::epsilon() to reduce out-of-range values.
2397         * testsuite/26_numerics/random/uniform_real_distribution/operators/
2398         64351.cc: Verify complexity requirement is met.
2400         * doc/xml/manual/abi.xml: Add xml:id anchor.
2401         * doc/xml/manual/using.xml (manual.intro.using.macros): Document
2402         _GLIBCXX_RELEASE. Link to new anchor for __GLIBCXX__ notes.
2403         (concurrency.io.structure): Add markup.
2404         * doc/html/*: Regenerate.
2406         PR libstdc++/80229
2407         * include/bits/shared_ptr_base.h
2408         (__shared_ptr::_M_enable_shared_from_this_with): Change parameters to
2409         non-const and then use remove_cv to get unqualified type.
2410         * testsuite/20_util/enable_shared_from_this/members/const.cc: Don't
2411         cast away constness on object created const.
2412         * testsuite/20_util/shared_ptr/cons/80229.cc: New test.
2414 2017-03-26  Markus Trippelsdorf  <markus@trippelsdorf.de>
2416         PR libstdc++/80183
2417         * include/bits/stl_tree.h:
2418         (_Rb_tree_header::_M_move_data(_Rb_tree_header&)): Also save _M_color.
2420 2017-03-23  Jonathan Wakely  <jwakely@redhat.com>
2422         * testsuite/23_containers/array/tuple_interface/
2423         tuple_element_debug_neg.cc: Adjust dg-error.
2424         * testsuite/23_containers/list/operations/78389.cc: Fix less-than to
2425         define a valid strict weak ordering.
2426         * testsuite/23_containers/priority_queue/67085.cc: Disable test for
2427         Debug Mode, due to debug checks making extra copies of predicate.
2428         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
2429         Likewise.
2431         * doc/xml/faq.xml: Add link.
2432         * doc/xml/manual/backwards_compatibility.xml: Remove outdated
2433         information on pre-ISO headers. Replace broken link to C++ FAQ Lite.
2434         * doc/xml/manual/io.xml: Update broken link.
2435         * doc/html/*: Regenerate.
2437 2017-03-23  Daniel Kruegler  <daniel.kruegler@gmail.com>
2439         Implement LWG 2686, Why is std::hash specialized for error_code,
2440         but not error_condition?
2441         * include/std/system_error (hash<error_condition>): Define for C++17.
2442         * testsuite/20_util/hash/operators/size_t.cc (hash<error_condition>):
2443         Instantiate test for error_condition.
2444         * testsuite/20_util/hash/requirements/explicit_instantiation.cc
2445         (hash<error_condition>): Instantiate hash<error_condition>.
2447         * include/bits/c++config (_GLIBCXX17_INLINE): Define.
2448         * include/bits/regex_constants.h (All std::regex_constants constants):
2449         Add _GLIBCXX17_INLINE as per P0607R0.
2450         * include/bits/std_mutex.h (defer_lock, try_to_lock, adopt_lock):
2451         Likewise.
2452         * include/bits/stl_pair.h (piecewise_construct): Likewise.
2453         * include/bits/uses_allocator.h (allocator_arg, uses_allocator_v)
2454         (__is_uses_allocator_constructible_v)
2455         (__is_nothrow_uses_allocator_constructible_v): Likewise.
2456         * include/std/chrono (treat_as_floating_point_v): Likewise.
2457         * include/std/functional (is_bind_expression_v, is_placeholder_v):
2458         Likewise.
2459         * include/std/optional (nullopt): Likewise.
2460         * include/std/ratio (ratio_equal_v, ratio_not_equal_v, ratio_less_v)
2461         ratio_less_equal_v, ratio_greater_v, ratio_greater_equal_v): Likewise.
2462         * include/std/system_error (is_error_code_enum_v)
2463         (is_error_condition_enum_v): Likewise.
2464         * include/std/tuple (tuple_size_v, ignore): Likewise.
2465         (ignore): Declare ignore constexpr as per LWG 2773, declare assignment
2466         constexpr as per LWG 2933.
2467         * include/std/type_traits (All variable templates): Add
2468         _GLIBCXX17_INLINE as per P0607R0.
2469         * include/std/variant (variant_size_v, variant_npos, __index_of_v)
2470         (__tuple_count_v, __exactly_once): Likewise.
2471         * testsuite/18_support/headers/new/synopsis.cc
2472         (hardware_destructive_interference_size)
2473         (hardware_constructive_interference_size): Likewise for commented-out
2474         variables.
2475         * testsuite/20_util/tuple/creation_functions/constexpr.cc: Add new
2476         test function for constexpr std::ignore (LWG 2773).
2477         * testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc: New
2478         test for LWG 2933.
2480 2017-03-22  Jonathan Wakely  <jwakely@redhat.com>
2482         * include/bits/shared_ptr.h (shared_ptr, weak_ptr): Add deduction
2483         guides for C++17.
2484         * include/bits/std_function.h (function): Likewise.
2485         * include/bits/stl_pair.h (pair): Likewise.
2486         * include/debug/array (__gnu_debug::array): Likewise.
2487         * include/std/array (array): Likewise.
2488         * include/std/functional (make_default_searcher)
2489         (make_boyer_moore_searcher, make_boyer_moore_horspool_searcher):
2490         Remove generator functions.
2491         * include/std/tuple (tuple): Add deduction guides.
2492         * include/std/valarray (valarray): Likewise.
2493         * testsuite/20_util/function_objects/searchers.cc: Adjust to use
2494         class template argument deduction instead of generator functions.
2495         * testsuite/20_util/function/cons/deduction.cc: New test.
2496         * testsuite/20_util/optional/cons/deduction_guide.cc: Rename to ...
2497         * testsuite/20_util/optional/cons/deduction.cc: ... here.
2498         * testsuite/20_util/pair/cons/deduction.cc: New test.
2499         * testsuite/20_util/shared_ptr/cons/deduction.cc: New test.
2500         * testsuite/20_util/tuple/cons/deduction.cc: New test.
2501         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error.
2502         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: New test.
2503         * testsuite/20_util/weak_ptr/cons/deduction.cc: New test.
2504         * testsuite/23_containers/array/cons/deduction.cc: New test.
2505         * testsuite/23_containers/array/cons/deduction_neg.cc: New test.
2506         * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
2507         Adjust dg-error.
2508         * testsuite/23_containers/array/tuple_interface/get_neg.cc: Likewise.
2509         * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
2510         Likewise.
2511         * testsuite/26_numerics/valarray/deduction.cc: New test.
2512         * testsuite/30_threads/lock_guard/cons/deduction.cc: New test.
2513         * testsuite/30_threads/scoped_lock/cons/deduction.cc: New test.
2514         * testsuite/30_threads/unique_lock/cons/deduction.cc: New test.
2516 2017-03-20  François Dumont  <fdumont@gcc.gnu.org>
2518         * include/bits/stl_deque.h (deque): Access allocator value_type only if
2519         concept checks are enabled.
2520         * include/bits/stl_stack.h (stack): Likewise.
2521         * include/bits/stl_vector.h (vector): Likewise.
2522         * include/bits/stl_list.h (list): Likewise and check
2523         _SGIAssignableConcept only in C++03.
2524         * include/bits/stl_map.h (map): Likewise.
2525         * include/bits/stl_set.h (set): Likewise.
2526         * include/bits/stl_multimap.h (multimap): Likewise.
2527         * include/bits/stl_multiset.h (multiset): Likewise.
2528         * include/bits/stl_queue.h (queue, priority_queue): Likewise.
2530 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
2532         * doc/xml/manual/appendix_contributing.xml: Convert link to
2533         ansi.org to https.
2534         Update link to the C++ standard at ansi.org.
2536         * doc/xml/faq.xml: Remove information redundant with the above;
2537         instead add a reference.
2539 2017-03-17  Jonathan Wakely  <jwakely@redhat.com>
2541         * src/c++11/codecvt.cc (range): Add non-type template parameter and
2542         define oerloaded operators for reading and writing code units.
2543         (range<Elem, false>): Define partial specialization for accessing
2544         wide characters in potentially unaligned byte ranges.
2545         (ucs2_span(const char16_t*, const char16_t*, ...))
2546         (ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
2547         to range<const char16_t, false> in order to avoid unaligned reads.
2548         (__codecvt_utf16_base<char16_t>::do_out)
2549         (__codecvt_utf16_base<char32_t>::do_out)
2550         (__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for
2551         unaligned data to avoid unaligned writes.
2552         (__codecvt_utf16_base<char16_t>::do_in)
2553         (__codecvt_utf16_base<char32_t>::do_in)
2554         (__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return
2555         error if there are unprocessable trailing bytes.
2556         (__codecvt_utf16_base<char16_t>::do_length)
2557         (__codecvt_utf16_base<char32_t>::do_length)
2558         (__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type
2559         range<const char16_t, false> to span functions.
2560         * testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.
2562 2017-03-16  Jonathan Wakely  <jwakely@redhat.com>
2564         PR libstdc++/79980
2565         * src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.
2567         PR libstdc++/80041
2568         * src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out)
2569         (__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to
2570         char16_t to work with UTF-16 instead of UTF-8.
2571         * testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.
2573         * src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>)
2574         (codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>)
2575         (__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>)
2576         (__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>)
2577         (__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>)
2578         (__codecvt_utf8_utf16_base<char32_t>)
2579         (__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and
2580         do_max_length() return values.
2581         * testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
2582         * testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
2583         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.
2585         PR libstdc++/79980
2586         * include/bits/locale_conv.h (__do_str_codecvt): Set __count on
2587         error path.
2588         * src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
2589         for manipulating codecvt_mode values.
2590         (read_utf16_bom): Compare input to BOM constants instead of integral
2591         constants that depend on endianness.  Take mode parameter by
2592         reference and adjust it, to distinguish between no BOM present and
2593         UTF-16BE BOM present.
2594         (ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
2595         (surrogates): New enumeration type.
2596         (utf16_in, utf16_out): Add surrogates parameter to choose between
2597         UTF-16 and UCS2 behaviour.
2598         (utf16_span, ucs2_span): Use std::min not std::max.
2599         (ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
2600         (ucs2_in): Likewise. Adjust calls to read_utf16_bom.
2601         * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
2602         * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.
2604         PR libstdc++/79511
2605         * src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff
2606         as a surrogate pair.
2607         (__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness
2608         for internal representation.
2609         (__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise.
2610         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.
2612         PR libstdc++/80064
2613         * include/bits/stl_heap.h (__is_heap, push_heap, __adjust_heap)
2614         (pop_heap, make_heap, sort_heap, is_heap_until, is_heap): Cope with
2615         invalid instantiations using function types for _Compare argument.
2616         * testsuite/25_algorithms/make_heap/80064.cc: New test.
2618         PR libstdc++/67440
2619         * python/libstdcxx/v6/printers.py (find_type): Avoid gdb.Type.name
2620         for GDB 7.6 compatibility, use gdb.Type.unqualified instead.
2622 2017-03-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
2624         Implement LWG 2857, {variant,optional,any}::emplace should
2625         return the constructed value.
2626         * include/std/any (emplace(_Args&&...)): Change the return type and
2627         return a reference to the constructed value.
2628         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
2629         * include/std/optional (emplace(_Args&&...)): Likewise.
2630         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
2631         * include/std/variant (emplace<_Tp>(_Args&&...)): Likewise.
2632         (emplace<_Tp>(initializer_list<_Up>, _Args&&...)): Likewise.
2633         (emplace<_Np>(_Args&&...)): Likewise.
2634         (emplace<_Np>(initializer_list<_Up>, _Args&&...)): Likewise.
2635         * testsuite/20_util/any/assign/emplace.cc: Add tests for
2636         checking the return value of emplace.
2637         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
2638         * testsuite/20_util/optional/assignment/6.cc: Add tests for
2639         checking the return value of emplace.
2640         * testsuite/20_util/variant/run.cc: Likewise.
2642 2017-03-15  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
2644         PR libstdc++/62045
2645         * include/ext/pb_ds/qdetail/binary_heap_/binary_heap_.hpp
2646         (is_heap): Remove.
2647         (push_heap): Remove the wrong checking using is_heap.
2648         (make_heap): Remove the assertion using is_heap.
2649         * include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
2650         (modify): Ditto.
2651         (resize_for_insert_if_needed): Add PB_DS_ASSERT_VALID after
2652         calling make_heap.
2654 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
2656         PR libstdc++/62045
2657         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
2658         New test.
2659         * testsuite/ext/pb_ds/regression/priority_queues.cc: Fix copy&paste
2660         error in comment.
2662 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
2664         * acinclude.m4 (GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Fix typo in
2665         comment.
2666         * config.h.in: Regenerate.
2667         * configure: Regenerate.
2668         * doc/Makefile.in: Regenerate.
2670 2017-03-14  Jonathan Wakely  <jwakely@redhat.com>
2672         PR libstdc++/79162
2673         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2674         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Replace
2675         with a constrained template.
2676         [!_GLIBCXX_USE_CXX11_ABI]
2677         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Likewise.
2678         * testsuite/21_strings/basic_string/cons/char/79162.cc: New test.
2679         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: New test.
2681 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2683         PR libstdc++/80034
2684         * include/bits/list.tcc (merge(list&&)): Use const for the size_t
2685         in the catch-block.
2686         (merge(list&&, _StrictWeakOrdering)): Likewise.
2687         * testsuite/23_containers/list/operations/80034.cc: New.
2689 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2691         Implement LWG 2806, Base class of bad_optional_access.
2692         * include/std/optional (bad_optional_access):
2693         Derive from std::exception.
2694         (bad_optional_access::bad_optional_access): Adjust.
2695         (bad_optional_access::what): New.
2696         (__throw_bad_optional_access(const char*)):
2697         Remove the parameter and adjust calls.
2698         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
2699         * testsuite/20_util/optional/typedefs.cc: Likewise.
2701 2017-03-12  Ville Voutilainen  <ville.voutilainen@gmail.com>
2703         Implement LWG 2934, optional<const T> doesn't compare with T.
2704         * include/std/optional
2705         (operator==(const optional<_Tp>&, const optional<_Tp>&)):
2706         Turn into operator==(const optional<_Tp>&, const optional<_Up>&).
2707         (operator!=(const optional<_Tp>&, const optional<_Tp>&)):
2708         Turn into operator!=(const optional<_Tp>&, const optional<_Up>&).
2709         (operator<(const optional<_Tp>&, const optional<_Tp>&)):
2710         Turn into operator<(const optional<_Tp>&, const optional<_Up>&.
2711         (operator>(const optional<_Tp>&, const optional<_Tp>&)):
2712         Turn into operator>(const optional<_Tp>&, const optional<_Up>&.
2713         (operator<=(const optional<_Tp>&, const optional<_Tp>&)):
2714         Turn into operator<=(const optional<_Tp>&, const optional<_Up>&).
2715         (operator>=(const optional<_Tp>&, const optional<_Tp>&)):
2716         Turn into operator>=(const optional<_Tp>&, const optional<_Up>&).
2717         (operator==(const optional<_Tp>&, const _Tp&)):
2718         Turn into operator==(const optional<_Tp>&, const _Up&).
2719         (operator==(const _Tp&, const optional<_Tp>&)):
2720         Turn into operator==(const _Up&, const optional<_Tp>&).
2721         (operator!=(const optional<_Tp>&, const _Tp&)):
2722         Turn into operator!=(const optional<_Tp>&, const _Up&).
2723         (operator!=(const _Tp&, const optional<_Tp>&)):
2724         Turn into operator!=(const _Up&, const optional<_Tp>&).
2725         (operator<(const optional<_Tp>&, const _Tp&)):
2726         Turn into operator<(const optional<_Tp>&, const _Up&).
2727         (operator<(const _Tp&, const optional<_Tp>&)):
2728         Turn into operator<(const _Up&, const optional<_Tp>&).
2729         (operator>(const optional<_Tp>&, const _Tp&)):
2730         Turn into operator>(const optional<_Tp>&, const _Up&).
2731         (operator>(const _Tp&, const optional<_Tp>&)):
2732         Turn into operator>(const _Up&, const optional<_Tp>&).
2733         (operator<=(const optional<_Tp>&, const _Tp&)):
2734         Turn into operator<=(const optional<_Tp>&, const _Up&).
2735         (operator<=(const _Tp&, const optional<_Tp>&)):
2736         Turn into operator<=(const _Up&, const optional<_Tp>&).
2737         (operator>=(const optional<_Tp>&, const _Tp&)):
2738         Turn into operator>=(const optional<_Tp>&, const _Up&).
2739         (operator>=(const _Tp&, const optional<_Tp>&)):
2740         Turn into operator>=(const _Up&, const optional<_Tp>&).
2741         * testsuite/20_util/optional/relops/7.cc: New.
2743 2017-03-10  Jonathan Wakely  <jwakely@redhat.com>
2745         * testsuite/17_intro/names.cc: Undefine macros that clash with
2746         identifiers in AIX system headers.
2748         * include/bits/invoke.h (__invoke): Use __invoke_result instead of
2749         result_of, and __is_nothrow_invocable instead of
2750         __is_nothrow_callable.
2751         * include/bits/shared_ptr_base.h (__shared_ptr): Use __is_invocable
2752         instead of __is_callable.
2753         * include/std/functional (invoke): use invoke_result_t instead of
2754         result_of_t and is_nothrow_invocable instead of is_nothrow_callable.
2755         (_Not_fn): Use __invoke_result instead of result_of.
2756         * include/std/type_traits (__result_of_memobj, __result_of_memfun):
2757         Remove partial specializations for reference_wrapper types.
2758         (__result_of_impl): Use __inv_unwrap to strip reference_wrapper.
2759         (__invoke_result): Define replacement for result_of and then use it to
2760         define result_of.
2761         (__is_callable_impl, __is_callable, __is_nothrow_callable): Replace
2762         with __is_invocable_impl, __is_invocable, and __is_nothrow_invocable
2763         respectively.
2764         (invoke_result, invoke_result_t): Define for C++17.
2765         (is_callable, is_nothrow_callable): Replace with is_invocable,
2766         is_invocable_r, is_nothrow_invocable, and is_nothrow_invocable_r.
2767         (is_callable_v, is_nothrow_callable_v): Replace with is_invocable_v,
2768         is_invocable_r_v, is_nothrow_invocable_v, and is_nothrow_invocable_r_v.
2769         * include/std/variant (hash<variant<T...>>): Use is_nothrow_invocable_v
2770         instead of is_nothrow_callable_v.
2771         * testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
2772         main function.
2773         * testsuite/20_util/function_objects/not_fn/1.cc: Use is_invocable
2774         instead of is_callable.
2775         * testsuite/20_util/is_callable/*: Rename directory and adjust tests
2776         to use new traits.
2777         * testsuite/20_util/is_nothrow_callable/*: Likewise.
2778         * testsuite/20_util/optional/hash.cc: Use is_invocable_v instead of
2779         is_callable.
2780         * testsuite/20_util/variant/hash.cc: Likewise.
2782 2017-03-10  George Lander  <george.lander@arm.com>
2784         * acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
2785         _GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
2786         * configure: Regenerate.
2788 2017-03-09  Jonathan Wakely  <jwakely@redhat.com>
2790         * include/std/functional (_Not_fn): Define macro to simplify
2791         repetitive function definitions.
2793         * doc/xml/manual/status_cxx2017.xml: Document std::byte support.
2794         * include/c_global/cstddef (std::byte): Define for C++17.
2795         * testsuite/18_support/byte/global_neg.cc: New test.
2796         * testsuite/18_support/byte/ops.cc: New test.
2797         * testsuite/18_support/byte/requirements.cc: New test.
2799 2017-03-05  Jonathan Wakely  <jwakely@redhat.com>
2801         * doc/xml/manual/status_cxx2017.xml: Document P0156R2 status.
2802         * doc/html/*: Regenerate.
2803         * include/std/mutex (scoped_lock): Implement new C++17 template.
2804         * testsuite/30_threads/scoped_lock/cons/1.cc: New test.
2805         * testsuite/30_threads/scoped_lock/requirements/
2806         explicit_instantiation.cc: New test.
2807         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: New test.
2809 2017-03-02  Gerald Pfeifer  <gerald@pfeifer.com>
2810             François Dumont  <frs.dumont@gmail.com>
2811             Jonathan Wakely  <jwakely@redhat.com>
2813         * doc/xml/manual/debug_mode.xml: Update and simplify note
2814         on link- and run-time coexistence.
2816 2017-03-02  Jonathan Wakely  <jwakely@redhat.com>
2818         * testsuite/17_intro/headers/names.cc: Rename to ...
2819         * testsuite/17_intro/names.cc: ... here.
2821         PR libstdc++/79789
2822         * include/bits/hashtable_policy.h (__clp2): Use reserved names for
2823         parameters and local variables.
2824         * include/bits/ios_base.h (make_error_code, make_error_condition):
2825         Likewise.
2826         * include/bits/list.tcc (list::sort): Likewise.
2827         * include/bits/mask_array.h (mask_array): Likewise.
2828         * include/bits/regex.h (regex_token_iterator): Likewise.
2829         * include/bits/slice_array.h (slice_array): Likewise.
2830         * include/bits/stl_algo.h (__sample): Likewise.
2831         * include/std/memory (undeclare_no_pointers): Likewise.
2832         * include/std/type_traits (is_callable_v, is_nothrow_callable_v):
2833         Likewise.
2834         * libsupc++/exception_ptr.h (__dest_thunk): Likewise.
2835         * testsuite/17_intro/headers/names.cc: New test.
2837         PR libstdc++/79798
2838         * include/std/functional (bind::_Res_type_impl): Fix incorrect use of
2839         result_of that loses top-level cv-qualifiers.
2840         * testsuite/20_util/bind/79798.cc: New test.
2842 2017-03-01  Gerald Pfeifer  <gerald@pfeifer.com>
2844         * doc/xml/manual/documentation_hacking.xml: Tweak link to
2845         doxygen.org.
2847 2017-02-23  Jonathan Wakely  <jwakely@redhat.com>
2849         * include/experimental/iterator: Include <iterator>.
2850         * testsuite/experimental/iterator/requirements.cc: Check for contents
2851         of <iterator>.
2853 2017-02-19  Dinka Ranns  <dinka.ranns@googlemail.com>
2855         C++17 GB50 resolution
2856         * include/std/chrono (duration::operator++()): Add
2857         _GLIBCXX17_CONSTEXPR.
2858         (duration::operator++(int)): Likewise.
2859         (duration::operator--()): Likewise.
2860         (duration::operator--(int)): Likewise.
2861         (duration::operator+=(const duration&)): Likewise.
2862         (duration::operator-=(const duration&)): Likewise.
2863         (duration::operator*=(const rep&)): Likewise.
2864         (duration::operator/=(const rep&)): Likewise.
2865         (duration::operator%=(const rep&)): Likewise.
2866         (duration::operator%=(const duration&)): Likewise.
2867         (time_point::operator+=(const duration&)): Likewise.
2868         (time_point::operator-=(const duration&)): Likewise.
2869         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: New test.
2870         * testsuite/20_util/duration/literals/range.cc: Adjust dg-error.
2871         * testsuite/20_util/time_point/arithmetic/constexpr.cc: New test.
2873 2017-02-19  Gerald Pfeifer  <gerald@pfeifer.com>
2875         * doc/xml/manual/debug.xml: Adjust link to ThreadSanitizer.
2877 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
2879         * doc/xml/manual/io.xml: Update link to groups.google.com.
2880         Tweak link description.
2882 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
2884         * doc/xml/manual/profile_mode.xml: Fix link.
2886 2017-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
2888         * doc/xml/manual/policy_data_structures.xml: Simplify and
2889         standardize references to boost.org.
2890         * doc/xml/manual/policy_data_structures_biblio.xml: Ditto.
2891         * doc/xml/manual/shared_ptr.xml: Ditto.
2893 2017-02-16  Jonathan Wakely  <jwakely@redhat.com>
2895         PR libstdc++/60936
2896         * src/c++11/snprintf_lite.cc (__concat_size_t): Calculate length
2897         written to buffer, not length remaining in buffer.
2899 2017-02-15  Tim Shen  <timshen@google.com>
2901         PR libstdc++/78723
2902         * include/std/variant (operator<(), operator>(), operator<=(),
2903         operator>=(), operator==(), operator!=()): Implement P0393R3.
2904         * testsuite/20_util/variant/compile.cc: Adjust tests.
2905         * testsuite/20_util/variant/run.cc: Adjust tests.
2907 2017-02-15  Tim Shen  <timshen@google.com>
2909         PR libstdc++/79513
2910         * include/std/variant (visit()): Forward variant types to the return
2911         type detection code.
2912         * testsuite/20_util/variant/compile.cc: Add test cases.
2914 2017-02-13  H.J. Lu  <hongjiu.lu@intel.com>
2916         PR libstdc++/79348
2917         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2919 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
2921         PR libstdc++/79348
2922         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
2923         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
2924         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
2925         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
2926         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Likewise.
2927         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
2928         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Likewise.
2929         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
2930         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
2932 2017-02-13  Jonathan Wakely  <jwakely@redhat.com>
2934         PR libstdc++/79486
2935         * include/std/future (__future_base::_Task_state::_M_run)
2936         (__future_base::_Task_state::_M_run_delayed): Use lvalue types in
2937         result_of expressions.
2938         * testsuite/30_threads/packaged_task/79486.cc: New.
2940 2017-02-11  Jonathan Wakely  <jwakely@redhat.com>
2942         PR libstdc++/79467
2943         * include/bits/shared_ptr_base.h (__shared_ptr(_Yp*, _Deleter))
2944         (__shared_ptr(_Yp*, _Deleter, _Alloc)): Use lvalue types in
2945         __is_callable check.
2946         * testsuite/20_util/shared_ptr/cons/79467.cc: New.
2948         * include/bits/atomic_base.h: Re-indent.
2950 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
2952         * doc/xml/manual/profile_mode.xml: Update a paper reference.
2954 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2956         * src/c++11/snprintf_lite.cc (__err): Use https for bug reporting.
2958 2017-02-08  Jonathan Wakely  <jwakely@redhat.com>
2960         * doc/xml/manual/policy_data_structures.xml: Fix spelling of author's
2961         name.
2962         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise. Remove
2963         broken links to texts that are no longer online.
2964         * doc/xml/manual/profile_mode.xml: Update links to CGO 2009 paper and
2965         LCPC 2006 paper.
2966         * doc/xml/manual/using.xml: Update links to memory model information.
2967         * doc/xml/manual/using_exceptions.xml: Update link to "Appendix E:
2968         Standard-Library Exception Safety".
2969         * doc/html/*: Regenerate.
2971 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2973         * doc/xml/manual/profile_mode.xml: Unbreak link to
2974         "Optimizing Sorting with Machine Learning Algorithms".
2976 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2978         * src/c++11/snprintf_lite.cc (__err): Update bug reporting URL.
2980 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2982         * doc/xml/manual/abi.xml: Update link to "Sun Studio 11: C++
2983         Migration Guide".
2985 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
2987         * doc/html/ext/lwg-active.html: Remove.
2988         * doc/html/ext/lwg-closed.html: Ditto.
2989         * doc/html/ext/lwg-defects.html: Ditto.
2991         * doc/Makefile.am (xml_extradir): Remove.
2992         (xml_extra): Ditto.
2993         (stamp-html-docbook-lwg): Remove recipe...
2994         (stamp-html-docbook-data): ...and its use here.
2995         * doc/Makefile.in: Regenerate.
2997         * doc/xml/manual/intro.xml: Shorten two paragraphs explaining
2998         the relationship to the upstream working group.
2999         Replace a local link to ../ext/lwg-active.html by the upstream one.
3000         Replace all reference to ../ext/lwg-defects.html by a new entity
3001         &DR; which refers to the upstream address.
3003 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
3005         * doc/xml/manual/status_cxx2017.xml: Fix link to N4284.
3007 2017-02-06  Jonathan Wakely  <jwakely@redhat.com>
3009         PR libstdc++/79323
3010         * testsuite/20_util/duration/literals/range.cc: Prune extra output
3011         at -O0.
3013 2017-02-06  Gerald Pfeifer  <gerald@pfeifer.com>
3015         * doc/xml/manual/documentation_hacking.xml: Update URL of the
3016         DocBook Element Reference.  Use that term as link description
3017         instead of "online".
3018         epubcheck has moved to GitHub.
3019         Remove obsolete link to DocBook Publishing Tools.
3021 2017-02-03  Jonathan Wakely  <jwakely@redhat.com>
3023         PR libstdc++/66145
3024         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Restore ABI override
3025         so new ios::failure can be caught even when old ABI is the default.
3026         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
3027         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
3028         exceptions_failbit.cc: Likewise.
3029         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
3030         exceptions_failbit.cc: Likewise.
3031         * testsuite/27_io/basic_istream/extractors_other/char/
3032         exceptions_null.cc: Likewise.
3033         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
3034         exceptions_null.cc: Likewise.
3035         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
3036         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
3037         * testsuite/27_io/basic_ostream/inserters_other/char/
3038         exceptions_null.cc: Likewise.
3039         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
3040         exceptions_null.cc: Likewise.
3041         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
3043         PR libstdc++/60936
3044         * src/c++11/Makefile.am: Add new files.
3045         * src/c++11/Makefile.in: Regenerate.
3046         * src/c++11/cow-string-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
3047         (operator<<, operator>>, getline): Move explicit instantiations to ...
3048         * src/c++11/cow-string-io-inst.cc: ... new file.
3049         * src/c++11/cow-wstring-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
3050         (operator<<, operator>>, getline): Move explicit instantiations to ...
3051         * src/c++11/cow-wstring-io-inst.cc: ... new file.
3052         * src/c++11/functexcept.cc (__throw_ios_failure, __throw_system_error)
3053         (__throw_future_error, __throw_bad_function_call):
3054         (__throw_regex_error): Move functions for C++11 exceptions to the
3055         files that define the exception types.
3056         * src/c++11/functional.cc (__throw_bad_function_call): Move here.
3057         * src/c++11/future.cc (__throw_future_error): Likewise.
3058         * src/c++11/ios.cc (__throw_ios_failure): Likewise.
3059         * src/c++11/regex.cc (__throw_regex_error): Likewise.
3060         * src/c++11/snprintf_lite.cc (__concat_size_t): Print decimal
3061         representation directly instead of calling __int_to_char.
3062         * src/c++11/sso_string.cc (__sso_string): New file for definition
3063         of __sso_string type.
3064         * src/c++11/string-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
3065         explicit instantiations of narrow string I/O functions.
3066         * src/c++11/system_error.cc (__throw_system_error): Move here.
3067         (__sso_string): Move to new file.
3068         * src/c++11/wstring-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
3069         explicit instantiations of wide string I/O functions.
3070         * src/c++98/misc-inst.cc [_GLIBCXX_USE_CXX11_ABI] (operator<<)
3071         (operator>>, getline): Remove explicit instantiations from here.
3073 2017-02-02  H.J. Lu  <hongjiu.lu@intel.com>
3075         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3077 2017-02-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3079         * configure.host: Separate Solaris/SPARC and x86 baselines.
3080         * config/abi/post/solaris2.10/baseline_symbols.txt: Move ...
3081         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: ... here.
3082         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Move ...
3083         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
3084         ... here.
3085         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Move ...
3086         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: ... here.
3087         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: New file.
3088         * config/abi/post/solaris2.11/baseline_symbols.txt: Move ...
3089         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: ... here.
3090         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Move ...
3091         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
3092         ... here.
3093         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Move ...
3094         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: ... here.
3095         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: New file.
3097         * config/abi/post/solaris2.10/baseline_symbols.txt: Regenerate.
3098         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
3099         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
3100         * config/abi/post/solaris2.11/baseline_symbols.txt: Likewise.
3101         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Likewise.
3102         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Likewise.
3104 2017-02-01  Jonathan Wakely  <jwakely@redhat.com>
3106         PR libstdc++/78346
3107         * include/bits/predefined_ops.h (_Iter_equals_iter): Store iterator
3108         not its referent.
3109         (_Iter_comp_to_iter): Likewise.
3110         * testsuite/25_algorithms/search/78346.cc: New test.
3112         PR libstdc++/79254
3113         * config/abi/pre/gnu.ver: Remove recently added symbols.
3114         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3115         (basic_string::_M_copy_assign): Remove.
3116         (basic_string::operator=(const basic_string&)): Don't dispatch to
3117         _M_copy_assign. If source object is small just deallocate, otherwise
3118         perform new allocation before making any changes.
3119         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
3120         (basic_string::_M_copy_assign(const basic_string&, true_type)):
3121         Remove.
3122         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3123         Test cases where the allocators are equal or the string is small.
3124         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3125         Likewise.
3127 2017-01-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
3129         Implement LWG 2825, LWG 2756 breaks class template argument
3130         deduction for optional.
3131         * include/std/optional: Add a deduction guide.
3132         * testsuite/20_util/optional/cons/deduction_guide.cc: New.
3134 2017-01-27  Jonathan Wakely  <jwakely@redhat.com>
3136         PR libstdc++/79254
3137         * config/abi/pre/gnu.ver: Add new symbols.
3138         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3139         (basic_string::_M_copy_assign): New overloaded functions to perform
3140         copy assignment.
3141         (basic_string::operator=(const basic_string&)): Dispatch to
3142         _M_copy_assign.
3143         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
3144         (basic_string::_M_copy_assign(const basic_string&, true_type)):
3145         Define, performing rollback on exception.
3146         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3147         Test exception-safety guarantee.
3148         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3149         Likewise.
3150         * testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
3151         std::swap visible.
3153 2017-01-26  Jonathan Wakely  <jwakely@redhat.com>
3155         PR libstdc++/70607
3156         * include/tr1/complex (conj): Remove using-declaration and restore
3157         overloads, reverting previous change.
3159         * testsuite/23_containers/list/operations/78389.cc: Fix for C++11
3160         mode.
3161         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
3162         Mark as unsupported in C++98 mode.
3163         * testsuite/23_containers/queue/requirements/constructible.cc:
3164         Likewise.
3165         * testsuite/23_containers/stack/requirements/constructible.cc:
3166         Likewise.
3167         * testsuite/25_algorithms/make_heap/movable.cc: Fix for C++11 mode.
3169         PR libstdc++/79243
3170         * include/bits/c++config (literals::string_view_literals::__7): Add.
3171         Only declare versioned namespaces for the relevant C++ dialects.
3172         * include/experimental/bits/erase_if.h (fundamentals_v2::__detail):
3173         Add versioning macros.
3174         * include/experimental/bits/lfts_config.h:
3175         (fundamentals_v1::__detail::__7, fundamentals_v2::__detail::__7): Add.
3176         * include/experimental/string_view (fundamentals_v2::__detail):
3177         Add versioning macros.
3178         (fundamentals_v2::__detail::__identity): Remove.
3179         (fundamentals_v2::__detail::__idt): Use common_type instead of
3180         __detail::__identity.
3181         * include/std/string_view (__detail::__identity, __detail::__idt):
3182         Likewise.
3183         (literals::string_view_literals): Fix nesting of versioning macros.
3185         PR libstdc++/79190
3186         * libsupc++/del_opa.cc (operator delete(void*, std::align_val_t))
3187         [!_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE_POSIX_MEMALIGN
3188         && !_GLIBCXX_HAVE_MEMALIGN && !_GLIBCXX_HAVE__ALIGNED_MALLOC]:
3189         Retrieve original pointer value allocated by malloc.
3190         * libsupc++/new_opa.cc [!_GLIBCXX_HAVE_ALIGNED_ALLOC
3191         && !_GLIBCXX_HAVE_POSIX_MEMALIGN && !_GLIBCXX_HAVE_MEMALIGN
3192         && !_GLIBCXX_HAVE__ALIGNED_MALLOC] (aligned_alloc(size_t, size_t)):
3193         Define, adjusting pointer value allocated by malloc and storing for
3194         retrieval by operator delete.
3196 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
3198         * libsupc++/eh_atomics.h: Update copyright years.
3199         * testsuite/20_util/unique_ptr/cons/default.cc: Update copyright years.
3201 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
3203         PR libstdc++/61791
3204         PR libstdc++/70607
3205         * include/std/complex (real(T), imag(T)): Add _GLIBCXX_CONSTEXPR.
3206         (proj(T), conj(T)): Change return types per DR 1522.
3207         * include/tr1/complex (conj): Remove overloads and use std::conj.
3208         * testsuite/26_numerics/complex/dr781_dr1137.cc: Rename to...
3209         * testsuite/26_numerics/complex/dr781.cc: ... this, and update.
3210         * testsuite/26_numerics/complex/value_operations/constexpr2.cc: Test
3211         real(T) and imag(T). Allow testing for C++11 too.
3213 2017-01-24  Jonathan Wakely  <jwakely@redhat.com>
3215         PR libstdc++/79206
3216         * include/experimental/string_view (operator==): Check sizes first.
3217         * include/std/string_view (operator==): Likewise.
3219 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
3221         * testsuite/experimental/array/make_array.cc: Restore <functional>
3222         inclusion.
3224 2017-01-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3226         * testsuite/29_atomics/atomic/69301.cc: Require atomic builtins.
3228 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
3230         PR libstdc++/79195
3231         * include/experimental/array (__make_array_elem): New class template
3232         and partial specialization.
3233         (__is_reference_wrapper): Move into __make_array_elem specialization.
3234         (make_array): Use __make_array_elem to determine element type and move
3235         static assertion into specialization. Qualify std::forward call.
3236         (to_array): Add exception specifiation.
3237         * testsuite/experimental/array/make_array.cc: Test argument types
3238         without a common type.
3239         * testsuite/experimental/array/neg.cc: Adjust expected error message.
3241 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
3243         * doc/xml/manual/debug.xml: code.google.com uses https now.
3245 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
3247         * doc/xml/manual/test.xml: Fix link into gccint online manual.
3249 2017-01-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
3251         Make poisoned hashes SFINAE away the call operator of the hash.
3252         * include/bits/functional_hash.h
3253         (__poison_hash::__enable_hash_call): New.
3254         * include/std/optional (__optional_hash_call_base): New.
3255         (hash<optional<_Tp>>): Derive from the new base,
3256         move the hash function into that base.
3257         * include/std/variant (__variant_hash_call_base_impl): New.
3258         (__variant_hash_call_base): Likewise.
3259         (hash<variant<_Types...>>): Derive from the new base,
3260         move the hash function into that base.
3261         * testsuite/20_util/optional/hash.cc: Add tests for is_callable.
3262         * testsuite/20_util/variant/hash.cc: Likewise.
3264 2017-01-20  Joe Seymour  <joe.s@somniumtech.com>
3266         * acinclude.m4 (GLIBCXX_CHECK_SIZE_T_MANGLING): Support uint20_t.
3267         * configure: Regenerate.
3269 2017-01-20  Jonathan Wakely  <jwakely@redhat.com>
3271         PR libstdc++/69240
3272         * include/bits/random.h (uniform_real_distribution::param_type)
3273         (normal_distribution::param_type, lognormal_distribution::param_type)
3274         (gamma_distribution::param_type, chi_squared_distribution::param_type)
3275         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
3276         (student_t_distribution::param_type)
3277         (bernoulli_distribution::param_type, binomial_distribution::param_type)
3278         (geometric_distribution::param_type)
3279         (negative_binomial_distribution::param_type)
3280         (poisson_distribution::param_type)
3281         (exponential_distribution::param_type)
3282         (weibull_distribution::param_type)
3283         (extreme_value_distribution::param_type)
3284         (discrete_distribution::param_type)
3285         (piecewise_constant_distribution::param_type)
3286         (piecewise_linear_distribution::param_type): Define operator!=.
3287         * include/bits/uniform_int_dist.h
3288         (uniform_int_distribution::param_type): Likewise.
3289         * include/ext/random (beta_distribution::param_type)
3290         (rice_distribution::param_type, nakagami_distribution::param_type)
3291         (pareto_distribution::param_type, k_distribution::param_type)
3292         (arcsine_distribution::param_type, hoyt_distribution::param_type)
3293         (triangular_distribution::param_type)
3294         (von_mises_distribution::param_type)
3295         (hypergeometric_distribution::param_type)
3296         (logistic_distribution::param_type)
3297         (uniform_on_sphere_distribution::param_type)
3298         (uniform_inside_sphere_distribution::param_type): Likewise.
3299         * testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc:
3300         Test construction with param_type.
3301         * testsuite/26_numerics/random/binomial_distribution/cons/parms.cc:
3302         Likewise.
3303         * testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
3304         Likewise.
3305         * testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc:
3306         Likewise.
3307         * testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
3308         Likewise.
3309         * testsuite/26_numerics/random/extreme_value_distribution/cons/
3310         parms.cc: Likewise.
3311         * testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc:
3312         Likewise.
3313         * testsuite/26_numerics/random/gamma_distribution/cons/parms.cc:
3314         Likewise.
3315         * testsuite/26_numerics/random/geometric_distribution/cons/parms.cc:
3316         Likewise.
3317         * testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc:
3318         Likewise.
3319         * testsuite/26_numerics/random/negative_binomial_distribution/cons/
3320         parms.cc: Likewise.
3321         * testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
3322         Likewise.
3323         * testsuite/26_numerics/random/poisson_distribution/cons/parms.cc:
3324         Likewise.
3325         * testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
3326         Likewise.
3327         * testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc:
3328         Likewise.
3329         * testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc:
3330         Likewise.
3331         * testsuite/26_numerics/random/weibull_distribution/cons/parms.cc:
3332         Likewise.
3333         * testsuite/ext/random/arcsine_distribution/cons/parms.cc: Likewise.
3334         * testsuite/ext/random/beta_distribution/cons/parms.cc: Likewise.
3335         * testsuite/ext/random/hoyt_distribution/cons/parms.cc: Likewise.
3336         * testsuite/ext/random/hypergeometric_distribution/cons/parms.cc:
3337         Likewise.
3338         * testsuite/ext/random/k_distribution/cons/parms.cc: Likewise.
3339         * testsuite/ext/random/logistic_distribution/cons/parms.cc: Likewise.
3340         * testsuite/ext/random/nakagami_distribution/cons/parms.cc: Likewise.
3341         * testsuite/ext/random/normal_mv_distribution/cons/parms.cc: Likewise.
3342         * testsuite/ext/random/pareto_distribution/cons/parms.cc: Likewise.
3343         * testsuite/ext/random/rice_distribution/cons/parms.cc: Likewise.
3344         * testsuite/ext/random/triangular_distribution/cons/parms.cc:
3345         Likewise.
3346         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/
3347         parms.cc: Likewise.
3348         * testsuite/ext/random/von_mises_distribution/cons/parms.cc: Likewise.
3350         PR libstdc++/72792
3351         * include/bits/alloc_traits.h (__allocator_traits_base::__diff_type)
3352         (__allocator_traits_base::__size_type): Remove.
3353         (allocator_traits::_Ptr): New class template to detect const and void
3354         pointer types without instantiating pointer_traits::rebind
3355         unnecessarily.
3356         (allocator_traits::_Diff): Likewise for detecting difference_type.
3357         (allocator_traits::_Size): New class template to detect size_type
3358         without instantiating make_unsigned unnecessarily.
3359         * include/bits/ptr_traits.h (pointer_traits::element_type): Use
3360         __detected_or_t instead of __detected_or_t_.
3361         * include/std/type_traits (__detected_or_t_): Remove.
3362         * testsuite/20_util/allocator_traits/members/pointers.cc: New test.
3364         PR libstdc++/72792
3365         PR libstdc++/72793
3366         * include/bits/alloc_traits.h (__allocator_traits_base::__rebind):
3367         Replace with class template using void_t.
3368         (__alloc_rebind): Define in terms of
3369         __allocator_traits_base::__rebind.
3370         (allocator_traits): Remove unconditional static_assert for
3371         rebind_alloc.
3372         * include/bits/ptr_traits.h (__replace_first_arg): Remove type member.
3373         (pointer_traits::__rebind): Replace with class template using void_t.
3374         (pointer_traits::rebind): Define in terms of __rebind.
3375         (pointer_traits): Remove unconditional static_assert for rebind.
3376         * testsuite/20_util/allocator_traits/members/rebind_alloc.cc: New test.
3377         * testsuite/20_util/pointer_traits/rebind.cc: New test.
3379         PR libstdc++/69321
3380         * include/experimental/any (__any_caster): Avoid instantiating
3381         manager function for types that can't be stored in any.
3382         * include/std/any (__any_caster): Likewise.
3383         * testsuite/20_util/any/misc/any_cast.cc: Test non-copyable type.
3384         * testsuite/experimental/any/misc/any_cast.cc: Likewise.
3386         PR libstdc++/64903
3387         * include/bits/stl_algo.h (is_partitioned): Use increment instead of
3388         std::advance.
3390 2017-01-19  Jonathan Wakely  <jwakely@redhat.com>
3392         PR libstdc++/79156
3393         * include/bits/shared_ptr_base.h (__enable_shared_from_this_base):
3394         Fix return type.
3395         (__enable_shared_from_this): Declare __shared_ptr as a friend.
3396         * testsuite/ext/shared_ptr/1.cc: New test.
3398         PR libstdc++/64903
3399         * include/bits/stl_algo.h (is_partitioned): Don't retest the partition
3400         point.
3401         * testsuite/25_algorithms/is_partitioned/2.cc: New test.
3403         * doc/xml/manual/abi.xml: Fix typo.
3404         * doc/html/manual/abi.html: Likewise.
3406         PR libstdc++/67085
3407         * include/bits/predefined_ops.h (_Iter_less_val, _Val_less_iter): Add
3408         converting constructors from _Iter_less_iter.
3409         (_Iter_comp_val, _Val_comp_iter): Add converting constructors from
3410         _Iter_comp_iter.
3411         (__iter_comp_val(_Iter_comp_iter<C>): Use converting constructor.
3412         (__val_comp_iter(_Iter_comp_iter<C>): Likewise.
3413         * include/bits/stl_heap.h (__is_heap_until, __push_heap, __pop_heap)
3414         (__make_heap, __sort_heap): Change _Compare parameters to references.
3415         (__is_heap, push_heap, __adjust_heap, __pop_heap, pop_heap)
3416         (__make_heap, make_heap, sort_heap, is_heap_until): Pass comparison
3417         functions as lvalues.
3418         (is_heap): Call __is_heap_until directly to avoid copying __comp.
3419         * testsuite/23_containers/priority_queue/67085.cc: Adjust test to
3420         count copies during construction with empty sequence.
3422         PR libstdc++/67085
3423         * include/bits/stl_heap.h (__is_heap): Use _GLIBCXX_MOVE.
3424         (__make_heap, __sort_heap): Don't use _GLIBCXX_MOVE inside loops.
3425         * testsuite/23_containers/priority_queue/67085.cc: Adjust expected
3426         number of copies.
3427         * testsuite/25_algorithms/make_heap/movable.cc: New test.
3429         PR libstdc++/67085
3430         * include/bits/stl_heap.h (push_heap, __adjust_heap, __pop_heap)
3431         (pop_heap, __make_heap, make_heap, __sort_heap, sort_heap): Use
3432         _GLIBCXX_MOVE when passing comparison function to other functions.
3433         (is_heap_until, is_heap): Use std::move when passing comparison
3434         function.
3435         * testsuite/23_containers/priority_queue/67085.cc: New test.
3437         PR libstdc++/78905
3438         * doc/xml/manual/abi.xml (abi.versioning.history): Add markup to
3439         macro names, filenames, and literal values. Document _GLIBCXX_RELEASE.
3440         Document that the deprecated _GLIBCXX_VERSION macro was removed for
3441         the 4.0.0 release.
3442         * doc/html/*: Regenerate.
3443         * include/Makefile.am (_GLIBCXX_RELEASE): Set value.
3444         * include/Makefile.in: Regenerate.
3445         * include/bits/c++config (_GLIBCXX_RELEASE): Add #define.
3446         * testsuite/ext/profile/mutex_extensions_neg.cc: Use lineno of 0 in
3447         dg-error.
3449 2017-01-18  Jonathan Wakely  <jwakely@redhat.com>
3451         PR libstdc++/69301
3452         * include/std/atomic (atomic<T>::load, atomic<T>::exchange): Use
3453         aligned buffer instead of default-initialized variable.
3454         * testsuite/29_atomics/atomic/69301.cc: New test.
3455         * include/experimental/memory (observer_ptr::release): Use reserved
3456         name.
3457         * include/ext/pointer.h (_Pointer_adapter::operator++(int))
3458         (_Pointer_adapter::operator--(int)): Likewise.
3460         PR libstdc++/68925
3461         * include/experimental/random (randint): Use temporary instead of
3462         thread_local static.
3464 2017-01-17  Joshua Conner  <joshconner@google.com>
3466         * crossconfig.m4: Add fuchsia OS.
3467         * configure: Regenerate.
3469 2017-01-17  Jonathan Wakely  <jwakely@redhat.com>
3471         PR libstdc++/69699
3472         * doc/xml/manual/abi.xml (abi.versioning.history): Explain why the
3473         __GLIBCXX__ macro is not useful. Remove redundant date information
3474         and link to the GCC release timeline.
3475         (abi.versioning.active): Move partial sentence into the previous
3476         paragraph.
3477         * doc/html/*: Regenerate.
3479         PR libstdc++/79114
3480         * libsupc++/nested_exception.h (throw_with_nested): Use decay instead
3481         of remove_reference.
3482         * testsuite/18_support/nested_exception/79114.cc: New test.
3484 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
3486         PR other/79046
3487         * configure.ac: Add GCC_BASE_VER.
3488         * fragment.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
3489         get version from BASE-VER file.
3490         * po/Makefile.in: Regenerated.
3491         * libsupc++/Makefile.in: Regenerated.
3492         * testsuite/Makefile.in: Regenerated.
3493         * src/Makefile.in: Regenerated.
3494         * configure: Regenerated.
3495         * Makefile.in: Regenerated.
3496         * include/Makefile.in: Regenerated.
3497         * doc/Makefile.in: Regenerated.
3498         * python/Makefile.in: Regenerated.
3499         * src/c++11/Makefile.in: Regenerated.
3500         * src/c++98/Makefile.in: Regenerated.
3501         * src/filesystem/Makefile.in: Regenerated.
3503 2017-01-16  Jonathan Wakely  <jwakely@redhat.com>
3505         PR libstdc++/66145
3506         * src/c++11/functexcept.cc: Use new ABI for std::ios_base::failure
3507         exceptions.
3508         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Don't override ABI
3509         for test, so new ios::failure can be caught.
3510         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
3511         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
3512         exceptions_failbit.cc: Likewise.
3513         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
3514         exceptions_failbit.cc: Likewise.
3515         * testsuite/27_io/basic_istream/extractors_other/char/
3516         exceptions_null.cc: Likewise.
3517         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
3518         exceptions_null.cc: Likewise.
3519         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
3520         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
3521         * testsuite/27_io/basic_ostream/inserters_other/char/
3522         exceptions_null.cc: Likewise.
3523         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
3524         exceptions_null.cc: Likewise.
3525         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
3527         PR libstdc++/78702
3528         * include/bits/locale_classes.h (locale::facet::__shim): Change from
3529         private to protected.
3530         * src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to
3531         make locale::facet::__shim accessible.
3533 2017-01-16  Ville Voutilainen  <ville.voutilainen@gmail.com>
3535         PR libstdc++/78389
3536         * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
3537         (merge(list&&, _StrictWeakOrdering)): Likewise.
3538         * testsuite/23_containers/list/operations/78389.cc: Add
3539         better test for the sizes.
3541 2017-01-14  Jonathan Wakely  <jwakely@redhat.com>
3543         * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
3544         Skip test when -D_GLIBCXX_PROFILE mode is included in options.
3545         * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
3546         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
3547         Likewise.
3548         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
3549         * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
3550         * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
3551         * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
3552         * testsuite/23_containers/unordered_map/modifiers/extract.cc:
3553         Likewise.
3554         * testsuite/23_containers/unordered_multimap/modifiers/extract.cc::
3555         Likewise.
3556         * testsuite/23_containers/unordered_multiset/modifiers/extract.cc::
3557         Likewise.
3558         * testsuite/23_containers/unordered_set/modifiers/extract.cc:
3559         Likewise.
3560         * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
3561         Likewise.
3562         * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
3563         * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
3564         * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
3565         * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
3566         * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
3567         * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
3568         * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
3569         * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
3570         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
3571         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
3572         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
3573         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3574         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3576 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
3578         PR libstdc++/65411
3579         * config/io/basic_file_stdio.cc (__basic_file<char>::close()): Don't
3580         retry fclose on EINTR.
3582         * include/profile/base.h: Remove unused header that leads to header
3583         cycle in C++17 mode.
3585         PR libstdc++/79075
3586         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
3587         Make _If_sv private.
3588         [!_GLIBCXX_USE_CXX11_ABI] (basic_string): Add member functions taking
3589         basic_string_view arguments.
3591         PR libstdc++/79075
3592         * testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Remove
3593         redundant option from cxxflags.
3594         (check_effective_target_cxx11-abi): Define.
3595         * testsuite/21_strings/basic_string/allocator/71964.cc: Use cxx11-abi
3596         effective target.
3597         * testsuite/21_strings/basic_string/allocator/char/copy.cc: Likewise.
3598         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3599         Likewise.
3600         * testsuite/21_strings/basic_string/allocator/char/minimal.cc:
3601         Likewise.
3602         * testsuite/21_strings/basic_string/allocator/char/move.cc: Likewise.
3603         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
3604         Likewise.
3605         * testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
3606         Likewise.
3607         * testsuite/21_strings/basic_string/allocator/char/swap.cc: Likewise.
3608         * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
3609         Likewise.
3610         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3611         Likewise.
3612         * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
3613         Likewise.
3614         * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
3615         Likewise.
3616         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
3617         Likewise.
3618         * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
3619         Likewise.
3620         * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
3621         Likewise.
3622         * testsuite/23_containers/list/61347.cc: Likewise.
3623         * testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
3624         * testsuite/27_io/ios_base/failure/cxx11.cc: Likewise.
3626 2017-01-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3628         PR libstdc++/78389
3629         * include/bits/list.tcc (merge(list&&)):
3630         Adjust list sizes if the comparator throws.
3631         (merge(list&&, _StrictWeakOrdering)): Likewise.
3632         (sort()): Splice elements back from the scratch buffers
3633         if the comparator throws.
3634         (sort(_StrictWeakOrdering)): Likewise.
3635         * testsuite/23_containers/list/operations/78389.cc: New.
3637 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
3639         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Mark
3640         XFAIL for C++17 until node reinsertion supports fancy pointers.
3642         PR libstdc++/78361
3643         * testsuite/20_util/add_pointer/value.cc: Test forming function
3644         pointers.
3646 2017-01-13  Michael Brune  <lucdanton@free.fr>
3648         PR libstdc++/78361
3649         * include/std/type_traits (__is_referenceable): Handle noexcept
3650         function types.
3652 2017-01-12  Jonathan Wakely  <jwakely@redhat.com>
3654         PR libstdc++/77528
3655         * include/bits/stl_queue.h (queue, priority_queue): Remove default
3656         member-initializers and define default constructors as templates with
3657         constraints.
3658         * include/bits/stl_stack.h (stack): Likewise.
3659         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
3660         New.
3661         * testsuite/23_containers/priority_queue/requirements/
3662         explicit_instantiation/1.cc: Test more instantiations.
3663         * testsuite/23_containers/priority_queue/requirements/
3664         explicit_instantiation/1_c++98.cc: Likewise.
3665         * testsuite/23_containers/queue/requirements/constructible.cc: New.
3666         * testsuite/23_containers/stack/requirements/constructible.cc: New.
3668         PR libstdc++/66284
3669         * doc/xml/manual/intro.xml: Document LWG 2781 change.
3670         * doc/html/*: Regenerate.
3671         * include/std/functional (_Function_base::_Ref_manager): Remove.
3672         (_Function_handler): Remove partial specializations for
3673         reference_wrapper.
3674         (function::target): Remove special case for const qualification.
3675         * testsuite/20_util/function/6.cc: Adjust tests for target type.
3676         * testsuite/20_util/function/7.cc: Likewise.
3677         * testsuite/20_util/function/8.cc: Likewise.
3679 2017-01-11  Jonathan Wakely  <jwakely@redhat.com>
3681         PR libstdc++/78134
3682         * include/bits/stl_map.h (map::lower_bound, map::upper_bound)
3683         (map::equal_range): Fix return type of heterogeneous overloads.
3684         * include/bits/stl_multimap.h (multimap::lower_bound)
3685         (multimap::upper_bound, multimap::equal_range): Likewise.
3686         * include/bits/stl_multiset.h (multiset::lower_bound)
3687         (multiset::upper_bound, multiset::equal_range): Likewise.
3688         * include/bits/stl_set.h (set::lower_bound, set::upper_bound)
3689         (set::equal_range): Likewise.
3690         * testsuite/23_containers/map/operations/2.cc
3691         * testsuite/23_containers/multimap/operations/2.cc
3692         * testsuite/23_containers/multiset/operations/2.cc
3693         * testsuite/23_containers/set/operations/2.cc
3695         PR libstdc++/78273
3696         * include/bits/stl_map.h (map::count<_Kt>(const _Kt&)): Don't assume
3697         the heterogeneous comparison can only find one match.
3698         * include/bits/stl_set.h (set::count<_Kt>(const _Kt&)): Likewise.
3699         * testsuite/23_containers/map/operations/2.cc: Test count works with
3700         comparison function that just partitions rather than sorting.
3701         * testsuite/23_containers/set/operations/2.cc: Likewise.
3703 2017-01-11  Ville Voutilainen  <ville.voutilainen@gmail.com>
3705         Reduce the size of variant, it doesn't need an index of
3706         type size_t internally.
3707         * include/std/variant (parse_numbers.h): New include.
3708         (__select_index): New.
3709         (_Variant_storage<false, _Types...>::_M_reset_impl): Use
3710         _index_type for comparison with variant_npos.
3711         (_Variant_storage<false, _Types...>::__index_type): New.
3712         (_Variant_storage<false, _Types...>::_M_index): Change the
3713         type from size_t to __index_type.
3714         (_Variant_storage<true, _Types...>::__index_type): New.
3715         (_Variant_storage<true, _Types...>::_M_index): Change the
3716         type from size_t to __index_type.
3717         (_Variant_base::_M_valid): Use _Storage::__index_type
3718         for comparison with variant_npos.
3719         (variant::index): Use _Base::_Storage::__index_type
3720         for comparison with variant_npos.
3721         * testsuite/20_util/variant/index_type.cc: New.
3723 2017-01-10  Jonathan Wakely  <jwakely@redhat.com>
3725         * testsuite/18_support/exception_ptr/60612-unexpected.cc: Adjust
3726         effective target selector to prevent running in C++17 mode.
3728         PR libstdc++/77528
3729         * include/bits/stl_queue.h (queue::c): Add default member initializer.
3730         (queue::queue()): Add constructor and define as defaulted.
3731         (queue::queue(_Sequence&&)): Remove default argument.
3732         (priority_queue::c, priority_queue::comp): Add default member
3733         initializers.
3734         (priority_queue::priority_queue()): Add constructor and define as
3735         defaulted.
3736         (priority_queue::priority_queue(const _Compare&, _Sequence&&)):
3737         Remove default argument for first parameter.
3738         * include/bits/stl_stack.h (stack::c): Add default member initializer.
3739         (stack::stack()): Add constructor and define as defaulted.
3740         (stack::stack(const _Sequence&)): Remove default argument.
3741         * testsuite/23_containers/priority_queue/requirements/
3742         explicit_instantiation/1.cc: Test explicit instantiation with
3743         non-DefaultConstructible sequence.
3744         * testsuite/23_containers/priority_queue/77528.cc: New test.
3745         * testsuite/23_containers/priority_queue/requirements/
3746         explicit_instantiation/1_c++0x.cc: Replace with 1_c++98.cc.
3747         * testsuite/23_containers/queue/77528.cc: New test.
3748         * testsuite/23_containers/queue/requirements/explicit_instantiation/
3749         1.cc: Test explicit instantiation with non-DefaultConstructible
3750         sequence.
3751         * testsuite/23_containers/queue/requirements/explicit_instantiation/
3752         1_c++0x.cc: Replace with 1_c++98.cc.
3753         * testsuite/23_containers/stack/77528.cc: New test.
3754         * testsuite/23_containers/stack/requirements/explicit_instantiation/
3755         1.cc: Test explicit instantiation with non-DefaultConstructible
3756         sequence.
3757         * testsuite/23_containers/stack/requirements/explicit_instantiation/
3758         1_c++0x.cc: Replace with 1_c++98.cc.
3760 2017-01-10  Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
3762         * include/bits/locale_facets_nonio.tcc
3763         (time_get::_M_extract_via_format): Avoid compilation errors with
3764         non-standard struct tm.
3766 2017-01-10  François Dumont  <fdumont@gcc.gnu.org>
3767             Jonathan Wakely  <jwakely@redhat.com>
3769         * python/libstdcxx/v6/printers.py (_versioned_namespace): Define.
3770         (is_specialization, strip_versioned_namespace): New helpers functions
3771         to work with symbols in the versioned namespace.
3772         (Printer.add_version): Add second name using versioned namespace.
3773         (add_one_template_type_printer, add_one_type_printer): Add second
3774         type printers using versioned namespace.
3775         (register_type_printers): Add template type printer for basic_string.
3776         (build_libstdcxx_dictionary): Remove dead code.
3777         * python/libstdcxx/v6/xmethods.py: Make all matchers look for
3778         versioned namespace.
3779         * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected
3780         results.
3781         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3783 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
3785         PR libstdc++/79017
3786         * acinclude.m4 (GLIBCXX_CHECK_C99_TR1): Check for llrint and llround
3787         functions separately on darwin and if they're missing define
3788         _GLIBCXX_NO_C99_ROUNDING_FUNCS.
3789         * config.h.in: Regenerate.
3790         * configure: Regenerate.
3791         * include/c_global/cmath [_GLIBCXX_NO_C99_ROUNDING_FUNCS] (llrint)
3792         (llrintf, llrintl, llround, llroundf, llroundl): Do not define.
3794         * testsuite/30_threads/condition_variable/members/3.cc: Use new macro
3795         to detect correct thread_local destructors.
3796         * testsuite/util/testsuite_hooks.h (CORRECT_THREAD_LOCAL_DTORS):
3797         Define.
3799 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
3800             Aditya Kumar  <hiraditya@msn.com>
3802         PR libstdc++/66414
3803         * include/bits/basic_string.tcc
3804         (basic_string::find(const CharT*, size_type, size_type)): Optimize.
3806 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
3808         * testsuite/21_strings/basic_string/operations/find/char/6.cc: New.
3809         * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: New.
3811         * testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp:
3812         Include <cassert> header.
3814         PR libstdc++/78968
3815         * crossconfig.m4: Check for __cxa_thread_atexit on *-*-freebsd*.
3816         * configure: Regenerate.
3818 2017-01-06  Barrett Adair  <barrettellisadair@gmail.com>
3819             Jonathan Wakely  <jwakely@redhat.com>
3821         * include/std/variant (variant, swap): Replace __and_ usage with fold
3822         expressions.
3824 2017-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3826         PR go/78978
3827         * acinclude.m4 (GLIBCXX_CHECK_ASSEMBLER_HWCAP): Remove.
3828         * configure.ac: Call GCC_CHECK_ASSEMBLER_HWCAP instead of
3829         GLIBCXX_CHECK_ASSEMBLER_HWCAP.
3830         * fragment.am (CONFIG_CXXFLAGS): Use HWCAP_CFLAGS instead of
3831         HWCAP_FLAGS.
3832         * aclocal.m4: Regenerate.
3833         * configure: Regenerate.
3834         * Makefile.in, doc/Makefile.in, include/Makefile.in,
3835         libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in,
3836         src/Makefile.in, src/c++11/Makefile.in, src/c++98/Makefile.in,
3837         src/filesystem/Makefile.in, testsuite/Makefile.in: Regenerate.
3839 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
3841         * include/bits/c++config (_GLIBCXX_ASSERTIONS): Avoid redefinition.
3843         PR libstdc++/78991
3844         * include/bits/predefined_ops.h (_Iter_comp_iter, _Iter_comp_val)
3845         (_Val_comp_iter, _Iter_equals_val, _Iter_pred, _Iter_comp_to_val)
3846         (_Iter_comp_to_iter, _Iter_negate): Make constructors explicit and
3847         move function objects.
3848         (__iter_comp_iter, __iter_comp_val, __val_comp_iter, __pred_iter)
3849         (__iter_comp_val, __iter_comp_iter, __negate): Move function objects.
3850         * testsuite/25_algorithms/sort/78991.cc: New test.
3852 2017-01-05  Jonathan Wakely  <jwakely@redhat.com>
3854         * include/bits/std_function.h (function::_Signature_type): Remove.
3855         (function::function(_Functor)): Adjust.
3857 2017-01-05  Tim Shen  <timshen@google.com>
3859         PR libstdc++/78996
3860         * include/std/variant (__gen_vtable_impl): rename __unused to
3861         __dimensions to avoid naming conflict.
3863 2017-01-04  Jonathan Wakely  <jwakely@redhat.com>
3865         PR libstdc++/78968
3866         * config.h.in: Regenerate.
3867         * configure: Likewise.
3868         * configure.ac: Check for __cxa_thread_atexit.
3869         * libsupc++/atexit_thread.cc [_GLIBCXX_HAVE___CXA_THREAD_ATEXIT]:
3870         Don't define __cxa_thread_atexit if libc provides it.
3872 2017-01-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
3874         Implement 2801, Default-constructibility of unique_ptr.
3875         * include/bits/unique_ptr.h (__uniq_ptr_impl::_DeleterConstraint): New.
3876         (unique_ptr::_DeleterConstraint): Likewise.
3877         (unique_ptr()): Constrain.
3878         (unique_ptr(pointer)): Likewise.
3879         (unique_ptr(nullptr_t)): Likewise.
3880         (unique_ptr<_Tp[], _Dp>::_DeleterConstraint): New.
3881         (unique_ptr<_Tp[], _Dp>::unique_ptr()): Constrain.
3882         (unique_ptr<_Tp[], _Dp>::unique_ptr(_Up)): Likewise.
3883         (unique_ptr<_Tp[], _Dp>::unique_ptr(nullptr_t)): Likewise.
3884         * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust.
3885         * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
3886         * testsuite/20_util/unique_ptr/cons/default.cc: New.
3887         * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Adjust.
3889 2017-01-04  Pauli Nieminen  <suokkos@gmail.com>
3890             Jonathan Wakely  <jwakely@redhat.com>
3892         PR libstdc++/64735
3893         * acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define.
3894         * config.h.in: Regenerate.
3895         * config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46]
3896         (GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make
3897         exports for exception_ptr, nested_exception, and future conditional.
3898         [HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add
3899         exports for exception_ptr, nested_exception, and future conditional.
3900         * configure: Regenerate.
3901         * configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER.
3902         * include/std/future: Remove check for ATOMIC_INT_LOCK_FREE
3903         * libsupc++/eh_atomics.h: New file for internal use only.
3904         (__eh_atomic_inc, __eh_atomic_dec): New.
3905         * libsupc++/eh_ptr.cc (exception_ptr::_M_addref)
3906         (exception_ptr::_M_release) (__gxx_dependent_exception_cleanup)
3907         (rethrow_exception): Use eh_atomics.h reference counting helpers.
3908         * libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise.
3909         * libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise.
3910         * libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE.
3911         * libsupc++/exception_ptr.h: Likewise.
3912         * libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro.
3913         * libsupc++/nested_exception.cc: Remove check for
3914         ATOMIC_INT_LOCK_FREE.
3915         * libsupc++/nested_exception.h: Likewise.
3916         * src/c++11/future.cc: Likewise.
3917         * testsuite/18_support/exception_ptr/*: Remove atomic builtins checks.
3918         * testsuite/18_support/nested_exception/*: Likewise.
3919         * testsuite/30_threads/async/*: Likewise.
3920         * testsuite/30_threads/future/*: Likewise.
3921         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
3922         * testsuite/30_threads/packaged_task/*: Likewise.
3923         * testsuite/30_threads/promise/*: Likewise.
3924         * testsuite/30_threads/shared_future/*: Likewise.
3926 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
3928         * doc/xml/manual/documentation_hacking.xml: sourceforge.net now
3929         defaults to https; adjust reference.
3931 2017-01-03  Jonathan Wakely  <jwakely@redhat.com>
3933         PR libstdc++/78956
3934         * include/std/thread (thread(const thread&&)): Add deleted
3935         constructor.
3936         * testsuite/30_threads/thread/cons/lwg2097.cc: New test.
3938         * doc/xml/manual/spine.xml: Update copyright years.
3939         * doc/xml/manual/build_hacking.xml: Fix spelling of libbuilddir.
3940         * doc/xml/manual/test.xml: Likewise.
3941         * doc/html/*: Regenerate.
3943 2017-01-01  Gerald Pfeifer  <gerald@pfeifer.com>
3945         * doc/xml/faq.xml: Update address of C++ ABI link.
3946         * doc/xml/manual/abi.xml: Ditto.
3948 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
3950         Update copyright years.
3952 Copyright (C) 2017 Free Software Foundation, Inc.
3954 Copying and distribution of this file, with or without modification,
3955 are permitted in any medium without royalty provided the copyright
3956 notice and this notice are preserved.