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