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