PR tree-optimization/83170
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob601bc8a065d8f88f1b52c7473fbe424f6f3c415a
1 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
3         * include/experimental/string_view (basic_string_view::_S_compare):
4         Use value-init so narrowing conversions are not ill-formed.
5         * include/std/string_view (basic_string_view::_S_compare): Likewise.
7         * include/bits/basic_string.h (operator""s): Add pragmas to disable
8         -Wliteral-suffix warnings.
9         * include/experimental/string_view (operator""sv): Likewise.
10         * include/std/chrono (operator""h, operator""min, operator""s)
11         (operator""ms, operator""us, operator""ns): Likewise.
12         * include/std/complex (operator""if, operator""i, operator""il):
13         Likewise.
14         * include/std/string_view (operator""sv): Likewise.
15         * testsuite/20_util/duration/literals/range.cc: Adjust dg-error.
17         * include/bits/locale_facets_nonio.tcc (money_get::_M_extract): Add
18         fallthrough comment.
20         * include/bits/node_handle.h (_Node_handle_common::operator=)
21         (_Node_handle_common::_M_swap): Add braces around debug assertions.
23         * include/ext/ropeimpl.h (rope::_S_dump): Use const char*.
25         * libsupc++/nested_exception.h (__throw_with_nested_impl): Add
26         noreturn attribute.
28         * include/bits/regex_executor.tcc (_Executor::_M_rep_once_more):
29         Remove semi-colon after function body.
30         * include/bits/uniform_int_dist.h (_Power_of_2): Likewise.
32         * include/tr1/modified_bessel_func.tcc (__airy): Use value-init not
33         list-init.
35         * include/std/type_traits (integral_constant): Make member functions
36         noexcept (LWG 2346).
37         * include/std/utility (integer_sequence): Likewise.
39 2017-11-30  Jonathan Wakely  <jwakely@redhat.com>
41         PR libstdc++/65927
42         * include/bits/locale_facets_nonio.h (__timepunct::_M_am_pm_format):
43         Remove statement with no effect.
45 2017-11-30  Glen Joseph Fernandes  <glenjofe@gmail.com>
47         * include/bits/ptr_traits.h (__to_address, to_address): Move static
48         assertion.
49         * testsuite/20_util/to_address/1_neg.cc: New test.
51 2017-11-30  Jonathan Wakely  <jwakely@redhat.com>
53         PR libstdc++/83226
54         * include/bits/node_handle.h (_Node_handle::__pointer): Avoid forming
55         pointer-to-reference types.
56         * testsuite/23_containers/map/modifiers/insert/83226.cc: New test.
58 2017-11-29  John David Anglin  <danglin@gcc.gnu.org>
60         * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
62 2017-11-29  David Malcolm  <dmalcolm@redhat.com>
64         * testsuite/20_util/duration/literals/range.cc: Update expected
65         line of a static_assert failure.
67 2017-11-28  Glen Joseph Fernandes  <glenjofe@gmail.com>
69         * include/bits/ptr_traits.h (to_address): Implement to_address.
70         * testsuite/20_util/to_address/1.cc: New test.
72 2017-11-27  Stephan Bergmann  <sbergman@redhat.com>
74         * include/std/string_view (basic_string_view::find_first_of): Add
75         missing noexcept.
77         * include/bits/unordered_map.h (unordered_map): Fix deduction guide.
78         * include/debug/unordered_map (unordered_map): Likewise.
80 2017-11-23  Jonathan Wakely  <jwakely@redhat.com>
82         * libsupc++/new (launder): Add nodiscard attribute.
83         * testsuite/18_support/launder/nodiscard.cc: New test.
85         * include/bits/fs_path.h (path::empty): Add nodiscard attribute.
86         * include/bits/range_access.h (empty): Likewise.
87         * include/std/string_view (basic_string_view::empty): Likewise.
88         * testsuite/21_strings/basic_string_view/capacity/empty_neg.cc: New
89         test.
90         * testsuite/24_iterators/range_access_cpp17_neg.cc: New test.
91         * testsuite/27_io/filesystem/path/query/empty_neg.cc: New test.
93         PR libstdc++/83134
94         * include/std/type_traits (__not_): Explicitly convert to bool.
95         * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error.
96         * testsuite/20_util/logical_traits/83134.cc: New test.
97         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
98         dg-error.
99         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
100         Likewise.
102 2017-11-22  Jonathan Wakely  <jwakely@redhat.com>
104         PR go/83102
105         * include/bits/stl_tree.h (_Rb_tree): Relax invocable checks for
106         comparison object pre-C++17.
108 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
110         PR libstdc++/48101
111         * include/bits/allocator.h (allocator<const _Tp>)
112         (allocator<volatile _Tp>, allocator<const volatile _Tp>): Add partial
113         specializations.
114         * include/bits/forward_list.h (forward_list): Add static assertions.
115         * include/bits/hashtable.h (__cache_default): Use
116         __is_nothrow_invocable instead of __is_noexcept_hash.
117         (_Hashtable): Add static assertions.
118         * include/bits/hashtable_policy.h (__is_noexcept_hash): Remove.
119         * include/bits/stl_deque.h (deque): Add static assertions.
120         * include/bits/stl_function.h (_Identity<const _Tp>): Add partial
121         specialization.
122         * include/bits/stl_list.h (list): Add static assertions.
123         * include/bits/stl_map.h (map): Likewise.
124         * include/bits/stl_multimap.h (multimap): Likewise.
125         * include/bits/stl_multiset.h (multiset): Likewise.
126         * include/bits/stl_set.h (set): Likewise.
127         * include/bits/stl_tree.h (_Rb_tree): Likewise.
128         * include/bits/stl_vector.h (vector): Likewise.
129         * include/bits/unordered_map.h (unordered_map, unordered_multimap):
130         Use typename instead of class in template-parameter-list and remove
131         spaces.
132         * include/bits/unordered_set.h (unordered_set, unordered_multiset):
133         Likewise.
134         * testsuite/23_containers/deque/48101-2_neg.cc: New test.
135         * testsuite/23_containers/deque/48101_neg.cc: New test.
136         * testsuite/23_containers/forward_list/48101-2_neg.cc: New test.
137         * testsuite/23_containers/forward_list/48101_neg.cc: New test.
138         * testsuite/23_containers/list/48101-2_neg.cc: New test.
139         * testsuite/23_containers/list/48101_neg.cc: New test.
140         * testsuite/23_containers/map/48101-2_neg.cc: New test.
141         * testsuite/23_containers/map/48101_neg.cc: New test.
142         * testsuite/23_containers/map/operations/31440.cc: Fix comparison
143         object to have const-qualified call operator.
144         * testsuite/23_containers/multimap/48101-2_neg.cc: New test.
145         * testsuite/23_containers/multimap/48101_neg.cc: New test.
146         * testsuite/23_containers/multiset/48101-2_neg.cc: New test.
147         * testsuite/23_containers/multiset/48101_neg.cc: New test.
148         * testsuite/23_containers/set/48101-2_neg.cc: New test.
149         * testsuite/23_containers/set/48101_neg.cc: New test.
150         * testsuite/23_containers/unordered_map/48101-2_neg.cc: New test.
151         * testsuite/23_containers/unordered_map/48101_neg.cc: New test.
152         * testsuite/23_containers/unordered_multimap/48101-2_neg.cc: New test.
153         * testsuite/23_containers/unordered_multimap/48101_neg.cc: New test.
154         * testsuite/23_containers/unordered_multiset/48101-2_neg.cc: New test.
155         * testsuite/23_containers/unordered_multiset/48101_neg.cc: New test.
156         * testsuite/23_containers/unordered_set/48101-2_neg.cc: New test.
157         * testsuite/23_containers/unordered_set/48101_neg.cc: New test.
158         * testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
159         dg-error line number.
160         * testsuite/23_containers/vector/48101-2_neg.cc: New test.
161         * testsuite/23_containers/vector/48101_neg.cc: New test.
163 2017-11-21  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
165         * doc/xml/manual/using.xml (manual.intro.using.macros): Move
166         variablelist element at the end of its list.
168 2017-11-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
170         * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Add rtems*.
171         (GLIBCXX_ENABLE_FILESYSTEM_TS): Likewise.
172         * configure: Regenerate.
174 2017-11-20  François Dumont  <fdumont@gcc.gnu.org>
176         * include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
177         std::advance for istreambuf_iterator of char types to be friend.
178         (std::advance(istreambuf_iterator&, _Distance)): New overload.
179         * include/std/streambuf (basic_streambuf<>): Declare std::advance for
180         istreambuf_iterator of char types to be friend.
181         * testsuite/22_locale/money_get/get/char/9.cc: Have
182         istreambuf_iterator created on the fly when calling money_get<>::get.
183         * testsuite/22_locale/money_get/get/wchar_t/9.cc: Likewise.
184         * testsuite/24_iterators/istreambuf_iterator/debug/1_neg.cc: New.
185         * testsuite/24_iterators/istreambuf_iterator/debug/2_neg.cc: New.
186         * testsuite/25_algorithms/advance/istreambuf_iterators/char/1.cc: New.
187         * testsuite/25_algorithms/advance/istreambuf_iterators/char/1_neg.cc:
188         New.
189         * testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc: New.
190         * testsuite/25_algorithms/advance/istreambuf_iterators/char/2_neg.cc:
191         New.
192         * testsuite/25_algorithms/advance/istreambuf_iterators/char/3_neg.cc:
193         New.
194         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1.cc:
195         New.
196         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1_neg.cc:
197         New.
198         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc:
199         New.
200         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2_neg.cc:
201         New.
202         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/3_neg.cc:
203         New.
204         * testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc: Leverage
205         on std::advance overload.
206         * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
207         Likewise.
209 2017-11-20  Jonathan Wakely  <jwakely@redhat.com>
211         * testsuite/special_functions/18_riemann_zeta/check_value.cc: Fix
212         duplicate dg-options directive.
213         * testsuite/tr1/5_numerical_facilities/special_functions/
214         20_riemann_zeta/check_value_neg.cc: Likewise.
216 2017-11-20  Ville Voutilainen  <ville.voutilainen@gmail.com>
218         Implement LWG 2353
219         * include/bits/stl_iterator_base_funcs.h (next):
220         Use InputIterator instead of ForwardIterator.
221         * testsuite/24_iterators/operations/lwg2353.cc: New.
222         * testsuite/24_iterators/operations/next_neg.cc: Remove.
224 2017-11-18  Edward Smith-Rowland  <3dw4rd@verizon.net>
226         PR libstdc++/pr66689 - comp_ellint_3 and ellint_3 return garbage values
227         * include/tr1/ell_integral.tcc: Correct the nu sign convention
228         in ellint_3 and comp_ellint_3.
229         * testsuite/tr1/5_numerical_facilities/special_functions/
230         06_comp_ellint_3/check_value.cc: Regen with correct values.
231         * testsuite/tr1/5_numerical_facilities/special_functions/
232         14_ellint_3/check_value.cc: Ditto.
233         * testsuite/special_functions/06_comp_ellint_3/check_value.cc: Ditto.
234         * testsuite/special_functions/13_ellint_3/check_value.cc: Ditto.
235         * testsuite/tr1/5_numerical_facilities/special_functions/
236         01_assoc_laguerre/check_value.cc: Regen.
237         * testsuite/tr1/5_numerical_facilities/special_functions/
238         02_assoc_legendre/check_value.cc: Regen.
239         * testsuite/tr1/5_numerical_facilities/special_functions/
240         03_beta/check_value.cc: Regen.
241         * testsuite/tr1/5_numerical_facilities/special_functions/
242         04_comp_ellint_1/check_value.cc: Regen.
243         * testsuite/tr1/5_numerical_facilities/special_functions/
244         05_comp_ellint_2/check_value.cc: Regen.
245         * testsuite/tr1/5_numerical_facilities/special_functions/
246         07_conf_hyperg/check_value.cc: Regen.
247         * testsuite/tr1/5_numerical_facilities/special_functions/
248         08_cyl_bessel_i/check_value.cc: Regen.
249         * testsuite/tr1/5_numerical_facilities/special_functions/
250         09_cyl_bessel_j/check_value.cc: Regen.
251         * testsuite/tr1/5_numerical_facilities/special_functions/
252         10_cyl_bessel_k/check_value.cc: Regen.
253         * testsuite/tr1/5_numerical_facilities/special_functions/
254         11_cyl_neumann/check_value.cc: Regen.
255         * testsuite/tr1/5_numerical_facilities/special_functions/
256         12_ellint_1/check_value.cc: Regen.
257         * testsuite/tr1/5_numerical_facilities/special_functions/
258         13_ellint_2/check_value.cc: Regen.
259         * testsuite/tr1/5_numerical_facilities/special_functions/
260         15_expint/check_value_neg.cc: Regen.
261         * testsuite/tr1/5_numerical_facilities/special_functions/
262         16_hermite/check_value.cc: Regen.
263         * testsuite/tr1/5_numerical_facilities/special_functions/
264         17_hyperg/check_value.cc: Regen.
265         * testsuite/tr1/5_numerical_facilities/special_functions/
266         18_laguerre/check_value.cc: Regen.
267         * testsuite/tr1/5_numerical_facilities/special_functions/
268         19_legendre/check_value.cc: Regen.
269         * testsuite/tr1/5_numerical_facilities/special_functions/
270         20_riemann_zeta/check_value_neg.cc: Regen.
271         * testsuite/tr1/5_numerical_facilities/special_functions/
272         21_sph_bessel/check_value.cc: Regen.
273         * testsuite/tr1/5_numerical_facilities/special_functions/
274         22_sph_legendre/check_value.cc: Regen.
275         * testsuite/tr1/5_numerical_facilities/special_functions/
276         23_sph_neumann/check_value.cc: Regen.
277         * testsuite/ext/special_functions/conf_hyperg/check_value.cc: Regen.
278         * testsuite/ext/special_functions/hyperg/check_value.cc: Regen.
279         * testsuite/special_functions/01_assoc_laguerre/check_value.cc: Regen.
280         * testsuite/special_functions/02_assoc_legendre/check_value.cc: Regen.
281         * testsuite/special_functions/03_beta/check_value.cc: Regen.
282         * testsuite/special_functions/04_comp_ellint_1/check_value.cc: Regen.
283         * testsuite/special_functions/05_comp_ellint_2/check_value.cc: Regen.
284         * testsuite/special_functions/07_cyl_bessel_i/check_value.cc: Regen.
285         * testsuite/special_functions/08_cyl_bessel_j/check_value.cc: Regen.
286         * testsuite/special_functions/09_cyl_bessel_k/check_value.cc: Regen.
287         * testsuite/special_functions/10_cyl_neumann/check_value.cc: Regen.
288         * testsuite/special_functions/11_ellint_1/check_value.cc: Regen.
289         * testsuite/special_functions/12_ellint_2/check_value.cc: Regen.
290         * testsuite/special_functions/14_expint/check_value.cc: Regen.
291         * testsuite/special_functions/15_hermite/check_value.cc: Regen.
292         * testsuite/special_functions/16_laguerre/check_value.cc: Regen.
293         * testsuite/special_functions/17_legendre/check_value.cc: Regen.
294         * testsuite/special_functions/18_riemann_zeta/check_value.cc: Regen.
295         * testsuite/special_functions/19_sph_bessel/check_value.cc: Regen.
296         * testsuite/special_functions/20_sph_legendre/check_value.cc: Regen.
297         * testsuite/special_functions/21_sph_neumann/check_value.cc: Regen.
298         * testsuite/tr1/5_numerical_facilities/special_functions/
299         06_comp_ellint_3/pr66689.cc: New.
300         * testsuite/tr1/5_numerical_facilities/special_functions/
301         14_ellint_3/pr66689.cc: New.
302         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc: New.
303         * testsuite/special_functions/13_ellint_3/pr66689.cc: New.
305 2017-11-18  Edward Smith-Rowland  <3dw4rd@verizon.net>
306         Expose Airy functions as an extenaion.
307         * include/bits/specfun.h: Expose airy_ai and airy_bi.
308         * include/tr1/modified_bessel_func.tcc: Treat NaN and inf arg, return.
309         * testsuite/ext/special_functions/airy_ai/check_nan.cc: New.
310         * testsuite/ext/special_functions/airy_ai/check_value.cc: New.
311         * testsuite/ext/special_functions/airy_ai/compile.cc: New.
312         * testsuite/ext/special_functions/airy_bi/check_nan.cc: New.
313         * testsuite/ext/special_functions/airy_bi/check_value.cc: New.
314         * testsuite/ext/special_functions/airy_bi/compile.cc: New.
316 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
318         * acinclude.m4: Add cet.m4.
319         * configure.ac: Set CET_FLAGS. Update EXTRA_CFLAGS,
320         EXTRA_CXX_FLAGS.
321         * libsupc++/Makefile.am: Use Add EXTRA_CFLAGS.
322         * Makefile.in: Regenerate.
323         * configure: Likewise.
324         * doc/Makefile.in: Likewise.
325         * include/Makefile.in: Likewise.
326         * libsupc++/Makefile.in: Likewise.
327         * po/Makefile.in: Likewise.
328         * python/Makefile.in: Likewise.
329         * src/Makefile.in: Likewise.
330         * src/c++11/Makefile.in: Likewise.
331         * src/c++98/Makefile.in: Likewise.
332         * src/filesystem/Makefile.in: Likewise.
333         * testsuite/Makefile.in: Likewise.
335 2017-11-17  Jonathan Wakely  <jwakely@redhat.com>
337         PR libstdc++/83025
338         * include/std/fstream (basic_filebuf::_If_path): Move to
339         namespace-scope and rename to _If_fs_path.
340         (basic_filebuf::open): Use new name.
341         (basic_ifstream(_Path, ios::openmode))
342         (basic_ifstream::open(_Path, ios::openmode))
343         (basic_ofstream(_Path, ios::openmode))
344         (basic_ofstream::open(_Path, ios::openmode))
345         (basic_fstream(_Path, ios::openmode))
346         (basic_fstream::open(_Path, ios::openmode)): Use _If_fs_path.
347         * testsuite/27_io/basic_filebuf/open/char/path.cc: Test with filename
348         as non-const char*.
349         * testsuite/27_io/basic_fstream/cons/char/path.cc: Likewise.
350         * testsuite/27_io/basic_fstream/open/char/path.cc: Likewise.
351         * testsuite/27_io/basic_ifstream/cons/char/path.cc: Likewise.
352         * testsuite/27_io/basic_ifstream/open/char/path.cc: Likewise.
353         * testsuite/27_io/basic_ofstream/cons/char/path.cc: Likewise.
354         * testsuite/27_io/basic_ofstream/open/char/path.cc: Likewise.
357 2017-11-17  Marc Glisse  <marc.glisse@inria.fr>
359         * include/bits/vector.tcc (vector::_M_realloc_insert): Cache old
360         values before the allocation.
362 2017-11-16  Jonathan Wakely  <jwakely@redhat.com>
364         * include/std/future (shared_future): Add noexcept to copy constructor
365         and copy-assignment operator (LWG 2799).
367 2017-11-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
369         Fix gcd breakage.
370         * include/std/numeric (gcd): Use remove_cv_t, not remove_cv.
372 2017-11-15  Jonathan Wakely  <jwakely@redhat.com>
374         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Leave
375         error_code unset.
376         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
377         Check for past-the-end before dereferencing.
378         * testsuite/experimental/filesystem/iterators/
379         recursive_directory_iterator.cc: Likewise.
381         * include/bits/range_access.h (size, empty, data): Add conditional
382         noexcept to generic overloads.
384 2017-11-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
386         Implement LWG 2733 and LWG 2759
387         * include/experimental/numeric (gcd): Reject cv-qualified bool.
388         (lcm): Likewise.
389         * include/std/numeric (gcd): Likewise.
390         (lcm): Likewise.
391         * testsuite/26_numerics/gcd/gcd_neg.cc: Add tests and adjust.
392         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
394 2017-11-14  Jonathan Wakely  <jwakely@redhat.com>
396         * include/bits/locale_conv.h (wbuffer_convert::_M_conv_get): Fix typo.
397         * testsuite/22_locale/conversions/buffer/3.cc: New test.
399 2017-11-10  Jonathan Wakely  <jwakely@redhat.com>
401         * testsuite/util/testsuite_tr1.h (ThrowMoveConsClass): Use noexcept.
403         PR libstdc++/82917
404         * include/std/fstream (basic_ifstream::open, basic_ofstream::open)
405         (basic_fstream::open): Fix missing return.
407 2017-11-07  Jonathan Wakely  <jwakely@redhat.com>
409         * src/filesystem/ops-common.h (make_file_type) [S_ISSOCK]: Only use
410         S_ISSOCK when defined.
412 2017-11-06  François Dumont  <fdumont@gcc.gnu.org>
414         * testsuite/libstdc++-prettyprinters/tr1.cc:  Compile with -O0.
416 2017-11-06  Martin Liska  <mliska@suse.cz>
418         * testsuite/27_io/basic_fstream/cons/char/path.cc (main):
419           Return a value for functions with non-void return type,
420           or change type to void, or add -Wno-return-type for test.
421         * testsuite/27_io/basic_ifstream/cons/char/path.cc (main):
422         Likewise.
423         * testsuite/27_io/basic_ofstream/open/char/path.cc (main):
424         Likewise.
426 2017-11-06  Paolo Carlini  <paolo.carlini@oracle.com>
428         * testsuite/20_util/optional/cons/deduction.cc: Avoid -Wreturn-type
429         warnings.
430         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
431         * testsuite/20_util/pair/traits.cc: Likewise.
432         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
433         * testsuite/20_util/variant/compile.cc: Likewise.
434         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
435         * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
436         Likewise.
438 2017-11-05  Gerald Pfeifer  <gerald@pfeifer.com>
440         * doc/xml/manual/abi.xml: Move docs.oracle.com references to https.
442 2017-11-03  Jonathan Wakely  <jwakely@redhat.com>
444         * include/std/type_traits (endian): Define new enumeration type.
445         * testsuite/20_util/endian/1.cc: New test.
447         * include/bits/node_handle.h (_Node_insert_return::get): Remove, as
448         per P0508R0.
450 2017-11-01  François Dumont  <fdumont@gcc.gnu.org>
452         * python/libstdcxx/v6/printers.py (StdExpAnyPrinter.__init__): Strip
453         typename versioned namespace before the substitution.
454         (StdExpOptionalPrinter.__init__): Likewise.
455         (StdVariantPrinter.__init__): Likewise.
456         (Printer.add_version): Inject versioned namespace after std or
457         __gnu_cxx.
458         (build_libstdcxx_dictionary): Adapt add_version usages, always pass
459         namespace first and symbol second.
461 2017-11-01  Jonathan Wakely  <jwakely@redhat.com>
463         PR libstdc++/82777
464         * src/filesystem/std-path.cc (path::lexically_normal): Remove dot-dot
465         elements correctly.
466         * testsuite/27_io/filesystem/path/generation/normal.cc: Add testcase.
467         * testsuite/util/testsuite_fs.h (compare_paths): Improve exception
468         text.
470 2017-10-30  Jonathan Wakely  <jwakely@redhat.com>
472         * include/Makefile.am (stamp-bits-sup): Do not create broken symlink
473         to stamp-bits.
474         * include/Makefile.in: Regenerate.
476         * include/std/fstream (basic_ifstream, basic_ofstream, basic_fstream):
477         Remove outdated comments about calling c_str() to create a file stream
478         from a std::string.
479         (basic_ofstream::basic_ofstream, basic_ofstream::open): Remove
480         redundant ios_mode::trunc bits from default arguments and comments.
482         * doc/xml/faq.xml: Adjust "What is libstdc++?" answer slightly.
484         * include/bits/hashtable_policy.h: Include <tuple>.
485         * include/std/unordered_map: Only include <bits/stl_pair.h> instead
486         of <utility> and <tuple>.
487         * include/std/unordered_set: Likewise.
489 2017-10-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
491         Implement LWG 2485
492         * include/debug/array (get(const array<_Tp, _Nm>&&)): New.
493         * include/std/array (get(const array<_Tp, _Nm>&&)): Likewise.
494         * include/std/tuple (get(const tuple<_Elements...>&&)): Likewise.
495         (get(const tuple<_Types...>&&)): Likewise.
496         * include/std/utility
497         (__pair_get::__const_move_get(const std::pair<_Tp1, _Tp2>&&)):
498         Likewise.
499         (get(const std::pair<_Tp1, _Tp2>&&)): Likewise.
500         (get(const pair<_Tp, _Up>&&)): Likewise.
501         (get(const pair<_Up, _Tp>&&)): Likewise.
502         * testsuite/20_util/pair/astuple/get.cc: Add tests for
503         new overloads.
504         * testsuite/20_util/pair/astuple/get_by_type.cc: Likewise.
505         * testsuite/20_util/tuple/element_access/get2.cc: Likewise.
506         * testsuite/20_util/tuple/element_access/get2_by_type.cc: Likewise.
507         * testsuite/23_containers/array/tuple_interface/get.cc: Likewise.
508         * testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc:
509         Adjust.
510         * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
511         Likewise.
513 2017-10-27  Jonathan Wakely  <jwakely@redhat.com>
515         * include/bits/node_handle.h (_Node_insert_return::get): Avoid
516         use of std::tie and std::get.
518         * include/Makefile.am: Put headers in alphabetical order.
519         * include/Makefile.in: Regenerate.
521         * include/bits/fs_dir.h (directory_iterator): Remove noexcept from
522         constructors and increment member (LWG 3013).
523         (recursive_directory_iterator): Likewise.
524         * include/bits/fs_ops.h (copy, copy_file, create_directories)
525         (is_empty, remove_all): Remove noexcept (LWG 3013 and LWG 3014).
526         * src/filesystem/std-dir.cc (directory_iterator::increment)
527         (recursive_directory_iterator::increment): Remove noexcept.
528         * src/filesystem/std-ops.cc (copy, copy_file, create_directories)
529         (is_empty, remove_all): Remove noexcept
531         * include/bits/fs_dir.h (file_status): Make default constructor
532         non-explicit (LWG 2787).
533         * testsuite/27_io/filesystem/file_status/1.cc: New test.
534         * testsuite/experimental/filesystem/file_status/1.cc: New test.
536         * include/std/fstream (basic_filebuf::_If_path): New SFINAE helper.
537         (basic_filebuf::open<Path>(const Path&, const ios_base::openmode&))
538         (basic_ifstream<Path>(const Path&, const ios_base::openmode&))
539         (basic_ifstream::open<Path>(const Path&, const ios_base::openmode&))
540         (basic_ofstream<Path>(const Path&, const ios_base::openmode&))
541         (basic_ofstream::open<Path>(const Path&, const ios_base::openmode&))
542         (basic_fstream<Path>(const Path&, const ios_base::openmode&))
543         (basic_fstream::open<Path>(const Path&, const ios_base::openmode&)):
544         New constructors and member functions.
545         * testsuite/27_io/basic_filebuf/open/char/path.cc: New test.
546         * testsuite/27_io/basic_fstream/cons/char/path.cc: New test.
547         * testsuite/27_io/basic_fstream/open/char/path.cc: New test.
548         * testsuite/27_io/basic_ifstream/cons/char/path.cc: New test.
549         * testsuite/27_io/basic_ifstream/open/char/path.cc: New test.
550         * testsuite/27_io/basic_ofstream/cons/char/path.cc: New test.
551         * testsuite/27_io/basic_ofstream/open/char/path.cc: New test.
553         * include/bits/fs_path.h (path::format): Define new enumeration type.
554         (path(string_type&&), path<Source>(const Source&))
555         (path<InputIterator>(InputIterator, InputIterator))
556         (path<Source>(const Source&, const locale&))
557         (path<InputIterator>(InputIterator, InputIterator, const locale&)):
558         Add format parameter.
559         * testsuite/27_io/filesystem/path/construct/format.cc: New test.
561         * include/bits/stl_algo.h (__find_if_not_n, generate_n): Cast to void
562         to ensure overloaded comma not used.
563         * include/bits/stl_algobase.h (__fill_n_a, equal): Likewise.
564         * include/bits/stl_uninitialized.h (__uninitialized_fill_n)
565         (__uninitialized_fill_n_a, __uninitialized_default_n_1)
566         (__uninitialized_default_n_a, __uninitialized_copy_n)
567         (__uninitialized_copy_n_pair): Likewise
568         * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
569         Use test iterator wrappers with overloaded comma operator.
570         * testsuite/25_algorithms/fill_n/1.cc: Likewise.
571         * testsuite/25_algorithms/generate_n/1.cc: New test.
572         * testsuite/25_algorithms/stable_partition/1.cc: New test.
573         * testsuite/util/testsuite_iterators.h (operator,): Add deleted
574         non-member comma operator with iterator wrappers as right operand.
576 2017-10-26  Ville Voutilainen  <ville.voutilainen@gmail.com>
578         Deduction guides for associative containers, debug mode deduction
579         guide fixes.
580         * include/bits/stl_iterator.h (__iter_key_t)
581         (__iter_val_t, __iter_to_alloc_t): New.
582         * include/bits/stl_map.h: Add deduction guides.
583         * include/bits/stl_multimap.h: Likewise.
584         * include/bits/stl_multiset.h: Likewise.
585         * include/bits/stl_set.h: Likewise.
586         * include/bits/unordered_map.h: Likewise.
587         * include/bits/unordered_set.h: Likewise.
588         * include/debug/deque: Likewise.
589         * include/debug/forward_list: Likewise.
590         * include/debug/list: Likewise.
591         * include/debug/map.h: Likewise.
592         * include/debug/multimap.h: Likewise.
593         * include/debug/multiset.h: Likewise.
594         * include/debug/set.h: Likewise.
595         * include/debug/unordered_map: Likewise.
596         * include/debug/unordered_set: Likewise.
597         * include/debug/vector: Likewise.
598         * testsuite/23_containers/map/cons/deduction.cc: New.
599         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
600         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
601         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
602         * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
603         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
604         Likewise.
605         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
606         Likewise.
607         * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
609 2017-10-25  Jonathan Wakely  <jwakely@redhat.com>
611         * doc/xml/manual/status_cxx2017.xml: Update C++17 status, and
612         information on feature-test macros.
613         * doc/html/*: Regenerate.
615         PR libstdc++/82716
616         * include/std/array (tuple_size, tuple_element): Change class-key
617         from class to struct, to avoid annoying Clang warnings.
619         PR libstdc++/79283
620         * src/filesystem/ops.cc (read_symlink): Handle st_size being zero.
621         * src/filesystem/std-ops.cc (read_symlink): Likewise.
622         (do_copy_file) [!NEED_DO_COPY_FILE]: Avoid multiple definitions.
624         * src/filesystem/std-path.cc (path::lexically_normal): Add missing
625         step to algorithm, for removing dot-dot elements after root-directory.
626         * testsuite/27_io/filesystem/operations/canonical.cc: Use
627         compare_paths for more exhaustive checks.
628         * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
629         * testsuite/27_io/filesystem/path/append/path.cc: Likewise.
630         * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
631         * testsuite/27_io/filesystem/path/concat/strings.cc: Fix comment.
632         * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
633         * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
634         Likewise.
635         * testsuite/27_io/filesystem/path/generation/normal.cc: Use
636         compare_paths for more exhaustive checks. Add extra testcases.
637         * testsuite/27_io/filesystem/path/generation/proximate.cc: Use
638         compare_paths for more exhaustive checks.
639         * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
640         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Remove
641         unused header.
642         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: Fix
643         comment.
644         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: Use
645         compare_paths for more exhaustive checks.
646         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
647         Likewise.
648         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
649         Likewise.
650         * testsuite/util/testsuite_fs.h (compare_paths): Also compare native
651         strings.
653         PR libstdc++/82706
654         * testsuite/27_io/filesystem/operations/permissions.cc: Fix test.
656 2017-10-24  François Dumont  <fdumont@gcc.gnu.org>
658         * testsuite/lib/libstdc++.exp (check_v3_target_normal_mode): Add
659         c++config.h include.
660         (check_v3_target_normal_namespace): New.
661         * testsuite/lib/dg-options.exp (dg-require-normal-namespace): New.
662         * testsuite/18_support/headers/limits/synopsis.cc: Add latter.
663         * testsuite/20_util/from_chars/requirements.cc: Likewise.
664         * testsuite/20_util/headers/functional/synopsis.cc: Likewise.
665         * testsuite/20_util/headers/memory/synopsis.cc: Likewise.
666         * testsuite/20_util/headers/utility/synopsis.cc: Likewise.
667         * testsuite/20_util/to_chars/requirements.cc: Likewise.
668         * testsuite/21_strings/headers/string/synopsis.cc: Likewise.
669         * testsuite/22_locale/headers/locale/synopsis.cc: Likewise.
670         * testsuite/23_containers/headers/bitset/synopsis.cc: Likewise.
671         * testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
672         * testsuite/23_containers/headers/forward_list/synopsis.cc: Likewise.
673         * testsuite/23_containers/headers/list/synopsis.cc: Likewise.
674         * testsuite/23_containers/headers/map/synopsis.cc: Likewise.
675         * testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
676         * testsuite/23_containers/headers/set/synopsis.cc: Likewise.
677         * testsuite/23_containers/headers/stack/synopsis.cc: Likewise.
678         * testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
679         * testsuite/23_containers/map/modifiers/erase/abi_tag.cc: Likewise.
680         * testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc: Likewise.
681         * testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc: Likewise.
682         * testsuite/23_containers/set/modifiers/erase/abi_tag.cc: Likewise.
683         * testsuite/24_iterators/headers/iterator/synopsis.cc: Likewise.
684         * testsuite/24_iterators/headers/iterator/synopsis_c++11.cc: Likewise.
685         * testsuite/24_iterators/headers/iterator/synopsis_c++14.cc: Likewise.
686         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Likewise.
687         * testsuite/26_numerics/complex/abi_tag.cc: Likewise.
688         * testsuite/26_numerics/headers/complex/synopsis.cc: Likewise.
689         * testsuite/26_numerics/headers/valarray/synopsis.cc: Likewise.
690         * testsuite/27_io/headers/fstream/synopsis.cc: Likewise.
691         * testsuite/27_io/headers/ios/synopsis.cc: Likewise.
692         * testsuite/27_io/headers/istream/synopsis.cc: Likewise.
693         * testsuite/27_io/headers/ostream/synopsis.cc: Likewise.
694         * testsuite/27_io/headers/sstream/synopsis.cc: Likewise.
695         * testsuite/27_io/headers/streambuf/synopsis.cc: Likewise.
697 2017-10-24  Jonathan Wakely  <jwakely@redhat.com>
699         * config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Ignore
700         -Wattribute-alias warnings.
701         * src/c++11/istream-inst.cc: Likewise.
702         * src/c++11/locale-inst.cc: Likewise.
703         * src/c++11/ostream-inst.cc: Likewise.
704         * src/c++11/wlocale-inst.cc: Likewise.
705         * src/c++98/hash-long-double-tr1-aux.cc: Likewise.
707         * include/bits/string_view.tcc (find_first_of, find_last_of)
708         (find_first_not_of, find_last_not_of): Add noexcept.
709         * include/std/string_view (basic_string_view(const _CharT*))
710         (basic_string_view(const _CharT*, size_type))
711         (front, back, remove_prefix, remove_suffix, find, rfind)
712         (find_first_of, find_first_not_of): Add noexcept.
713         (at(size_type), _S_compare(size_type, size_type)): Replace conditional
714         expressions with if statements.
715         (copy(_CharT*, size_type, size_type), substr(size_type, size_type)):
716         Use _M_check for length checks.
717         (compare(basic_string_view)): Reformat.
718         (_M_check(size_type, const char)): Add noexcept(false).
719         (_M_limit(size_type, size_type)): Use noexcept not _GLIBCXX_NOEXCEPT.
721         PR libstdc++/82685
722         * include/experimental/string_view (operator""sv): Add noexcept.
723         * include/std/string_view (operator""sv): Likewise.
725 2017-10-23  Jonathan Wakely  <jwakely@redhat.com>
727         * include/Makefile.am: Add new headers for C++17 filesystem library.
728         * include/Makefile.in: Regenerate.
729         * include/bits/fs_dir.h: New header, based on Filesystem TS code in
730         include/experimental/bits directory.
731         * include/bits/fs_fwd.h: Likewise.
732         * include/bits/fs_ops.h: Likewise.
733         * include/bits/fs_path.h: Likewise.
734         * include/experimental/bits/fs_dir.h: Rename Doxygen group.
735         * include/experimental/bits/fs_fwd.h: Likewise.
736         * include/experimental/bits/fs_ops.h: Likewise.
737         * include/experimental/bits/fs_path.h: Likewise.
738         * include/experimental/filesystem (filesystem_error::_M_gen_what):
739         Remove inline definition.
740         * include/precompiled/stdc++.h: Add <filesystem> to precompiled
741         header.
742         * include/std/filesystem: New header.
743         * python/libstdcxx/v6/printers.py: Enable printer for std::filesystem
744         paths.
745         * src/filesystem/Makefile.am: Add new files. Compile as C++17.
746         * src/filesystem/Makefile.in: Regenerate.
747         * src/filesystem/cow-dir.cc: Update comment.
748         * src/filesystem/cow-ops.cc: Likewise.
749         * src/filesystem/cow-path.cc: Likewise.
750         * src/filesystem/cow-std-dir.cc: New file.
751         * src/filesystem/cow-std-ops.cc: New file.
752         * src/filesystem/cow-std-path.cc: New file.
753         * src/filesystem/dir-common.h (_Dir_base, get_file_type): New header
754         for common code.
755         * src/filesystem/dir.cc (_Dir): Derive from _Dir_base.
756         (open_dir): Move to _Dir_base constructor.
757         (get_file_type): Move to dir-common.h.
758         (recurse): Move to _Dir_base::should_recurse.
759         * src/filesystem/ops-common.h: New header for common code.
760         * src/filesystem/ops.cc (is_set, make_file_type, make_file_status)
761         (is_not_found_errno, file_time, do_copy_file): Move to ops-common.h.
762         * src/filesystem/path.cc (filesystem_error::_M_gen_what): Define.
763         * src/filesystem/std-dir.cc: New file, based on Filesystem TS code.
764         * src/filesystem/std-ops.cc: Likewise.
765         * src/filesystem/std-dir.cc: Likewise.
766         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: New
767         test.
768         * testsuite/27_io/filesystem/iterators/pop.cc: New test.
769         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
770         New test.
771         * testsuite/27_io/filesystem/operations/absolute.cc: New test.
772         * testsuite/27_io/filesystem/operations/canonical.cc: New test.
773         * testsuite/27_io/filesystem/operations/copy.cc: New test.
774         * testsuite/27_io/filesystem/operations/copy_file.cc: New test.
775         * testsuite/27_io/filesystem/operations/create_directories.cc: New
776         test.
777         * testsuite/27_io/filesystem/operations/create_directory.cc: New test.
778         * testsuite/27_io/filesystem/operations/create_symlink.cc: New test.
779         * testsuite/27_io/filesystem/operations/current_path.cc: New test.
780         * testsuite/27_io/filesystem/operations/equivalent.cc: New test.
781         * testsuite/27_io/filesystem/operations/exists.cc: New test.
782         * testsuite/27_io/filesystem/operations/file_size.cc: New test.
783         * testsuite/27_io/filesystem/operations/is_empty.cc: New test.
784         * testsuite/27_io/filesystem/operations/last_write_time.cc: New test.
785         * testsuite/27_io/filesystem/operations/permissions.cc: New test.
786         * testsuite/27_io/filesystem/operations/proximate.cc: New test.
787         * testsuite/27_io/filesystem/operations/read_symlink.cc: New test.
788         * testsuite/27_io/filesystem/operations/relative.cc: New test.
789         * testsuite/27_io/filesystem/operations/remove_all.cc: New test.
790         * testsuite/27_io/filesystem/operations/space.cc: New test.
791         * testsuite/27_io/filesystem/operations/status.cc: New test.
792         * testsuite/27_io/filesystem/operations/symlink_status.cc: New test.
793         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: New
794         test.
795         * testsuite/27_io/filesystem/operations/weakly_canonical.cc: New test.
796         * testsuite/27_io/filesystem/path/append/path.cc: New test.
797         * testsuite/27_io/filesystem/path/assign/assign.cc: New test.
798         * testsuite/27_io/filesystem/path/assign/copy.cc: New test.
799         * testsuite/27_io/filesystem/path/compare/compare.cc: New test.
800         * testsuite/27_io/filesystem/path/compare/path.cc: New test.
801         * testsuite/27_io/filesystem/path/compare/strings.cc: New test.
802         * testsuite/27_io/filesystem/path/concat/path.cc: New test.
803         * testsuite/27_io/filesystem/path/concat/strings.cc: New test.
804         * testsuite/27_io/filesystem/path/construct/copy.cc: New test.
805         * testsuite/27_io/filesystem/path/construct/default.cc: New test.
806         * testsuite/27_io/filesystem/path/construct/locale.cc: New test.
807         * testsuite/27_io/filesystem/path/construct/range.cc: New test.
808         * testsuite/27_io/filesystem/path/construct/string_view.cc: New test.
809         * testsuite/27_io/filesystem/path/decompose/extension.cc: New test.
810         * testsuite/27_io/filesystem/path/decompose/filename.cc: New test.
811         * testsuite/27_io/filesystem/path/decompose/parent_path.cc: New test.
812         * testsuite/27_io/filesystem/path/decompose/relative_path.cc: New
813         test.
814         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: New
815         test.
816         * testsuite/27_io/filesystem/path/decompose/root_name.cc: New test.
817         * testsuite/27_io/filesystem/path/decompose/root_path.cc: New test.
818         * testsuite/27_io/filesystem/path/decompose/stem.cc: New test.
819         * testsuite/27_io/filesystem/path/generation/normal.cc: New test.
820         * testsuite/27_io/filesystem/path/generation/proximate.cc: New test.
821         * testsuite/27_io/filesystem/path/generation/relative.cc: New test.
822         * testsuite/27_io/filesystem/path/generic/generic_string.cc: New test.
823         * testsuite/27_io/filesystem/path/itr/traversal.cc: New test.
824         * testsuite/27_io/filesystem/path/modifiers/clear.cc: New test.
825         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: New
826         test.
827         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: New
828         test.
829         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: New
830         test.
831         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: New
832         test.
833         * testsuite/27_io/filesystem/path/modifiers/swap.cc: New test.
834         * testsuite/27_io/filesystem/path/native/string.cc: New test.
835         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: New test.
836         * testsuite/27_io/filesystem/path/query/empty.cc: New test.
837         * testsuite/27_io/filesystem/path/query/has_extension.cc: New test.
838         * testsuite/27_io/filesystem/path/query/has_filename.cc: New test.
839         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: New test.
840         * testsuite/27_io/filesystem/path/query/has_relative_path.cc: New
841         test.
842         * testsuite/27_io/filesystem/path/query/has_root_directory.cc: New
843         test.
844         * testsuite/27_io/filesystem/path/query/has_root_name.cc: New test.
845         * testsuite/27_io/filesystem/path/query/has_root_path.cc: New test.
846         * testsuite/27_io/filesystem/path/query/has_stem.cc: New test.
847         * testsuite/27_io/filesystem/path/query/is_relative.cc: New test.
848         * testsuite/experimental/filesystem/path/construct/string_view.cc:
849         Define USE_FILESYSTEM_TS.
850         * testsuite/util/testsuite_fs.h: Allow use with C++17 paths as well
851         as Filesystem TS.
853         PR libstdc++/82644
854         * doc/xml/manual/intro.xml: Include new section.
855         * doc/xml/manual/status_cxxis29124.xml: New section on IS 29124
856         status.
857         * include/bits/specfun.h [__STRICT_ANSI__] (hyperg, hypergf, hypergl)
858         (conf_hyperg, conf_hypergf, conf_hypergl): Don't declare.
859         * include/c_compatibility/math.h: Import special functions into
860         global namespace for C++17.
861         * testsuite/26_numerics/headers/cmath/82644.cc: New test.
862         * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc: New
863         test.
865 2017-10-21  Jonathan Wakely  <jwakely@redhat.com>
867         * testsuite/experimental/filesystem/path/itr/traversal.cc: Do not
868         increment past-the-end iterators.
870 2017-10-20  Jonathan Wakely  <jwakely@redhat.com>
872         * include/std/chrono (__cpp_lib_chrono): Update macro value to
873         indicate support for P0505R0.
874         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Check
875         for updated macro.
877         * include/c_global/cstddef: Define __cpp_lib_byte feature-test macro.
878         * testsuite/18_support/byte/requirements.cc: Check macro.
880 2017-10-19  Jonathan Wakely  <jwakely@redhat.com>
882         * testsuite/experimental/filesystem/iterators/
883         recursive_directory_iterator.cc: Ensure that error_code arguments are
884         cleared when required.
885         * testsuite/experimental/filesystem/operations/create_directory.cc:
886         Remove redundant check.
887         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
888         Ensure that error_code argument is cleared when required.
890         * include/experimental/bits/fs_path.h (path::iterator++(int))
891         (path::iterator--(int)): Fix for paths with only one component.
892         * testsuite/experimental/filesystem/path/itr/traversal.cc: Test
893         post-increment and post-decrement.
895         * doc/xml/manual/status_cxx2017.xml: Update references to C++17
896         section numbers.
898         * testsuite/decimal/conversion-to-integral.cc: Use predefined macro
899         instead of non-standard glibc one.
901 2017-10-16  François Dumont  <fdumont@gcc.gnu.org>
903         PR libstdc++/82558
904         * include/bits/stl_bvector.h (fill): Add iterator offset check.
905         * testsuite/23_containers/vector/bool/82558.cc: New.
907 2017-10-13  Jonathan Wakely  <jwakely@redhat.com>
909         PR libstdc++/82522
910         * doc/xml/manual/intro.xml: Document LWG 2354 changes.
911         * include/bits/stl_map.h (map::insert(value_type&&))
912         (map::insert(const_iterator, value_type&&)): Add overload for rvalues.
913         * include/bits/stl_multimap.h (multimap::insert(value_type&&))
914         (multimap::insert(const_iterator, value_type&&)): Likewise.
915         * include/bits/unordered_map.h (unordered_map::insert(value_type&&))
916         (unordered_map::insert(const_iterator, value_type&&))
917         (unordered_multimap::insert(value_type&&))
918         (unordered_multimap::insert(const_iterator, value_type&&)): Likewise.
919         * testsuite/23_containers/map/modifiers/insert/dr2354.cc: New test.
920         * testsuite/23_containers/multimap/modifiers/insert/dr2354.cc: New
921         test.
922         * testsuite/23_containers/unordered_map/insert/dr2354.cc: New test.
923         * testsuite/23_containers/unordered_multimap/insert/dr2354.cc: New
924         test.
926         PR libstdc++/82481
927         * include/std/mutex (call_once): Suppress clang-tidy warnings about
928         dangling references.
930 2017-10-10  Jonathan Wakely  <jwakely@redhat.com>
932         * include/bits/streambuf_iterator.h (istreambuf_iterator::equal):
933         Update comment about NAD issue.
935         PR libstdc++/59087
936         PR libstdc++/82417
937         * include/c_compatibility/complex.h [!C++98 && __STRICT_ANSI__]: Do
938         not include C library's <complex.h>.
939         * testsuite/26_numerics/complex/c99.cc: Depend on __STRICT_ANSI__.
940         * testsuite/26_numerics/headers/complex.h/std_c++11.h: New test.
941         * testsuite/26_numerics/headers/complex.h/std_gnu++11.h: New test.
942         * testsuite/26_numerics/headers/complex.h/std_c++98.h: New test.
944 2017-10-05  Jonathan Wakely  <jwakely@redhat.com>
946         * testsuite/20_util/to_chars/1.cc: Add dg-require-string-conversions.
948 2017-10-04  Petr Ovtchenkov  <ptr@void-ptr.info>
949             François Dumont  <fdumont@gcc.gnu.org>
951         * include/bits/streambuf_iterator.h
952         (istreambuf_iterator<>::operator*()): Do not capture iterator state
953         in Debug assertion.
954         (istreambuf_iterator<>::operator++()): Likewise and remove _M_sbuf check.
955         (istreambuf_iterator<>::operator++(int)): Likewise.
956         (istreambuf_iterator<>::_M_get()): Remove _M_c assignment.
957         (istreambuf_iterator<>::_S_is_eof()): New.
958         (istreambuf_iterator<>::_M_at_eof()): Adapt, use latter.
959         (find(istreambuf_iterator<>, istreambuf_iterator<>, _CharT)):
960         Return an iterator with _M_c set to eof to capture streambuf state
961         on evaluation.
962         (testsuite/24_iterators/istreambuf_iterator/2.cc): Add checks.
964 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
966         * include/std/charconv (__unsigned_least_t): Fix number of closing >s for
967         !_GLIBCXX_USE_INT128.
969 2017-10-02  Jonathan Wakely  <jwakely@redhat.com>
971         * include/Makefile.am: Add new <charconv> header.
972         * include/Makefile.in: Regenerate.
973         * include/precompiled/stdc++.h: Include <charconv>.
974         * include/std/charconv: New file.
975         (to_chars_result, to_chars, from_chars_result, from_chars): Define.
976         * testsuite/20_util/from_chars/1.cc: New test.
977         * testsuite/20_util/from_chars/1_neg.cc: New test.
978         * testsuite/20_util/from_chars/2.cc: New test.
979         * testsuite/20_util/from_chars/requirements.cc: New test.
980         * testsuite/20_util/to_chars/1.cc: New test.
981         * testsuite/20_util/to_chars/1_neg.cc: New test.
982         * testsuite/20_util/to_chars/2.cc: New test.
983         * testsuite/20_util/to_chars/requirements.cc: New test.
985 2017-09-27  François Dumont  <fdumont@gcc.gnu.org>
987         * testsuite/22_locale/money_get/get/char/22131.cc: Make test less
988         istreambuf_iterator implementation dependent.
989         * testsuite/22_locale/money_get/get/wchar_t/22131.cc: Likewise.
991 2017-09-25  Uros Bizjak  <ubizjak@gmail.com>
993         PR c/81854
994         * src/c++98/complex_io.cc (_GLIBCXX_LDBL_COMPAT): Declare alias
995         target as a C++ function with no prototype.
997 2017-09-21  Jonathan Wakely  <jwakely@redhat.com>
999         * testsuite/25_algorithms/clamp/1.cc: Fix order of arguments and
1000         expected results when using predicate defining reverse order.
1001         * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
1003 2017-09-20  Jonathan Wakely  <jwakely@redhat.com>
1005         PR libstdc++/79162
1006         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1007         (basic_string::_If_sv): Remove from the overload set when the
1008         argument is derived from basic_string.
1010         PR libstdc++/79162
1011         * include/bits/basic_string.h (basic_string::_If_sv): Remove from the
1012         overload set when the argument is derived from basic_string.
1013         * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: New
1014         test.
1015         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
1016         New test.
1018         * testsuite/24_iterators/range_access_cpp17.cc: Fix order of dg-do
1019         and dg-options directives. Fix invalid test.
1021         PR libstdc++/81469
1022         * libsupc++/exception (uncaught_exception): Deprecate for C++17.
1023         * testsuite/18_support/exception_ptr/62258.cc: Add -Wno-deprecated.
1024         * testsuite/18_support/uncaught_exception/14026.cc: Likewise.
1026         * include/bits/c++config (_GLIBCXX17_DEPRECATED): Define.
1027         * include/bits/functional_hash.h (__hash_base::result_type)
1028         (__hash_base::argument_type): Add _GLIBCXX17_DEPRECATED.
1029         * include/std/optional (hash<optional<T>>::result_type)
1030         (hash<optional<T>>::argument_type): Add deprecated attribute.
1031         (__is_fast_hash<hash<optional<T>>>): Add partial specialization.
1032         * include/std/variant (hash<variant<Types...>>::result_type)
1033         (hash<variant<Types...>>::argument_type): Add deprecated attribute.
1034         (__is_fast_hash<hash<variant<Types...>>>): Add partial specialization.
1036         * libsupc++/exception_ptr.h (copy_exception): Remove deprecated
1037         non-standard function.
1039         PR libstdc++/82262
1040         * include/std/optional (__optional_hash_call_base): Add template
1041         parameter for remove_const_t<_Tp> and use it consistently.
1042         * testsuite/20_util/optional/hash.cc: Test optional<const T>.
1044 2017-09-19  Jonathan Wakely  <jwakely@redhat.com>
1046         PR libstdc++/71500
1047         * include/bits/regex_executor.tcc
1048         (_Backref_matcher<BidIt, regex_traits<C>>::_M_apply): Use
1049         std::__equal4 instead of C++14 4-iterator overloads of std::equal.
1050         * include/bits/stl_algobase.h (__equal4): New functions implementing
1051         4-iterator overloads of std::equal for use in C++11.
1052         (equal(It1, It1, It2, It2), equal(It1, It1, It2, It2, BinaryPred)):
1053         Move function bodies to new __equal4 functions.
1054         * testsuite/28_regex/simple_c++11.cc: New.
1056         PR libstdc++/82254
1057         * include/std/type_traits (__is_invocable): Add partial specialization
1058         for INVOKE<void> case and remove is_void<R> check from partial
1059         specialization for INVOKE<R> case.
1060         (__is_nt_invocable_impl): New helper for is_nothrow_invocable_r.
1061         (is_nothrow_invocable_r): Use __is_nt_invocable_impl.
1062         * testsuite/20_util/is_nothrow_invocable/value.cc: Add tests for
1063         conversions that can throw or fail to convert. Use static assert
1064         strings to explain negative results.
1065         * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Use
1066         is_nothrow_constructible in is_nt_invocable_conv.
1068 2017-09-18  Jonathan Wakely  <jwakely@redhat.com>
1070         PR libstdc++/81468
1071         * testsuite/20_util/duration/cons/dr1177.cc: Fix incorrect test and
1072         improve static assertion messages.
1074         * include/std/utility (_Itup_cat, _Make_integer_sequence): Remove.
1075         (_Build_index_tuple, make_integer_sequence): Use built-in to generate
1076         pack expansion.
1078         PR libstdc++/71187
1079         * include/std/type_traits (__declval): New function to deduce return
1080         type of declval.
1081         (__declval_protector::_delegate): Remove.
1082         (declval): Use __declval instead of add_rvalue_reference and
1083         __declval_protector::__delegate.
1084         * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
1085         lineno.
1086         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
1087         Likewise.
1088         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
1089         Likewise.
1091 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
1093         * testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
1094         -std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
1095         of c++1z and c++17_only instead of c++1z_only.  Adjust expected
1096         diagnostics and comments refering to 1z to 17.
1097         * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
1098         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
1099         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
1100         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
1101         * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
1102         Likewise.
1103         * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
1104         * testsuite/18_support/launder/1.cc (test02): Likewise.
1105         * testsuite/18_support/launder/requirements_neg.cc: Likewise.
1106         * testsuite/18_support/launder/requirements.cc: Likewise.
1107         * testsuite/18_support/byte/requirements.cc: Likewise.
1108         * testsuite/18_support/byte/ops.cc: Likewise.
1109         * testsuite/18_support/byte/global_neg.cc: Likewise.
1110         * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
1111         Likewise.
1112         * testsuite/27_io/types/4.cc: Likewise.
1113         * testsuite/25_algorithms/sample/81221.cc: Likewise.
1114         * testsuite/25_algorithms/sample/1.cc: Likewise.
1115         * testsuite/25_algorithms/sample/2.cc: Likewise.
1116         * testsuite/25_algorithms/search/searcher.cc: Likewise.
1117         * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
1118         * testsuite/experimental/filesystem/path/construct/string_view.cc:
1119         Likewise.
1120         * testsuite/24_iterators/range_access_cpp17.cc: Likewise.
1121         * testsuite/24_iterators/container_access.cc: Likewise.
1122         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
1123         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
1124         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
1125         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
1126         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
1127         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
1128         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
1129         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
1130         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
1131         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
1132         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
1133         * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
1134         * testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
1135         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
1136         * testsuite/20_util/variant/deduction.cc: Likewise.
1137         * testsuite/20_util/tuple/78939.cc: Likewise.
1138         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
1139         * testsuite/20_util/void_t/1.cc: Likewise.
1140         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
1141         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
1142         * testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
1143         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
1144         * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
1145         Likewise.
1146         * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
1147         Likewise.
1148         * testsuite/20_util/has_unique_object_representations/value.cc:
1149         Likewise.
1150         * testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
1151         * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
1152         * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
1153         * testsuite/20_util/function/cons/deduction.cc: Likewise.
1154         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
1155         Likewise.
1156         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
1157         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
1158         Likewise.
1159         * testsuite/20_util/is_aggregate/value.cc: Likewise.
1160         * testsuite/26_numerics/lcm/1.cc: Likewise.
1161         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1162         * testsuite/26_numerics/gcd/1.cc: Likewise.
1163         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
1164         * testsuite/26_numerics/valarray/deduction.cc: Likewise.
1165         * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
1166         * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
1167         * testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
1168         Likewise.
1169         * testsuite/23_containers/array/cons/deduction.cc: Likewise.
1170         * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
1171         * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
1172         Likewise.
1173         * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
1174         * testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
1175         Likewise.
1176         * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
1177         Likewise.
1178         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
1179         * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
1180         Likewise.
1181         * testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
1182         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
1183         * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
1184         Likewise.
1185         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
1186         * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
1187         Likewise.
1188         * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
1189         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
1190         * testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
1191         * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
1192         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1193         Likewise.
1194         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
1195         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
1196         Likewise.
1197         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
1198         Likewise.
1199         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
1200         Likewise.
1201         * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
1202         Likewise.
1203         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
1204         Likewise.
1205         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
1206         Likewise.
1208 2017-09-13  Jonathan Wakely  <jwakely@redhat.com>
1210         PR libstdc++/81468
1211         * include/std/chrono (__enable_if_is_duration)
1212         (__disable_if_is_duration): New alias templates to simplify SFINAE.
1213         (duration_cast, floor, ceil): Use __enable_if_is_duration.
1214         (duration::__is_float, duration::__is_harmonic): New alias templates
1215         to simplify SFINAE.
1216         (duration::duration(const _Rep2&)): Use _Require, __is_float and
1217         __is_harmonic.
1218         (duration::duration(const duration<_Rep2, _Period2>&)): Likewise.
1219         (__common_rep_type): Remove, replace with ...
1220         (__common_rep_t): New alias template.
1221         (operator*, operator/, operator%): Use __common_rep_t and
1222         __disable_if_is_duration.
1223         (time_point::time_point(const time_point<clock, _Dur2>&)): Add missing
1224         constraint from LWG DR 1177.
1225         * testsuite/20_util/duration/cons/dr1177.cc: New.
1226         * testsuite/20_util/duration/literals/range.cc: Update dg-error line.
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/time_point/cons/81468.cc: New.
1232         * doc/doxygen/mainpage.html: Fix broken URLs.
1234         PR libstdc++/81835
1235         * doc/xml/manual/extensions.xml: Replace unstable URL.
1236         * doc/html/manual/ext_demangling.html: Regenerate.
1237         * libsupc++/cxxabi.h (__cxa_demangle): Fix broken URL.
1239         * include/bits/allocated_ptr.h (__allocated_ptr::get): Use
1240         __to_address.
1241         (__allocated_ptr::_S_raw_ptr): Remove.
1242         * include/bits/forward_list.h (_Fwd_list_base::_M_get_node): Use
1243         __to_address.
1244         * include/bits/hashtable_policy.h (_Hashtable_alloc): Likewise.
1245         * include/bits/ptr_traits.h (__to_address): Define new function
1246         template.
1247         * include/bits/shared_ptr_base.h (__shared_ptr): Use __to_address.
1248         (__shared_ptr::_S_raw_ptr): Remove.
1249         * include/bits/stl_vector.h [__cplusplus >= 201103L]
1250         (vector::_M_data_ptr): Use __to_address.
1251         [__cplusplus < 201103L] (vector::_M_data_ptr): Don't dereference
1252         possibly invalid pointers.
1253         * include/ext/alloc_traits.h (__alloc_traits::construct)
1254         (__alloc_traits::destroy): Use __to_address.
1256 2017-09-12  Jonathan Wakely  <jwakely@redhat.com>
1258         PR libstdc++/79433
1259         * include/Makefile.am: Remove <bits/c++14_warning.h>.
1260         * include/Makefile.in: Regenerate.
1261         * include/bits/c++14_warning.h: Remove.
1262         * include/experimental/algorithm: Do not include <c++14_warning.h>.
1263         * include/experimental/any: Likewise.
1264         * include/experimental/array: Likewise.
1265         * include/experimental/bits/erase_if.h: Likewise.
1266         * include/experimental/bits/lfts_config.h: Likewise.
1267         * include/experimental/bits/shared_ptr.h: Likewise.
1268         * include/experimental/bits/string_view.tcc: Likewise.
1269         * include/experimental/chrono: Likewise.
1270         * include/experimental/deque: Likewise.
1271         * include/experimental/filesystem: Do not include <c++0x_warning.h>.
1272         * include/experimental/forward_list: Do not include <c++14_warning.h>.
1273         * include/experimental/functional: Likewise.
1274         * include/experimental/iterator: Likewise.
1275         * include/experimental/list: Likewise.
1276         * include/experimental/map: Likewise.
1277         * include/experimental/memory: Likewise.
1278         * include/experimental/numeric: Likewise.
1279         * include/experimental/optional: Likewise.
1280         * include/experimental/propagate_const: Likewise.
1281         * include/experimental/ratio: Likewise.
1282         * include/experimental/regex: Likewise.
1283         * include/experimental/set: Likewise.
1284         * include/experimental/string: Likewise.
1285         * include/experimental/string_view: Likewise.
1286         * include/experimental/system_error: Likewise.
1287         * include/experimental/tuple: Likewise.
1288         * include/experimental/type_traits: Likewise.
1289         * include/experimental/unordered_map: Likewise.
1290         * include/experimental/unordered_set: Likewise.
1291         * include/experimental/vector: Likewise.
1292         * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error
1293         line number.
1294         * testsuite/experimental/array/neg.cc: Likewise.
1295         * testsuite/experimental/propagate_const/assignment/move_neg.cc:
1296         Likewise.
1297         * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
1298         * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
1299         * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
1300         * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
1301         * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
1303         PR libstdc++/79433
1304         * doc/xml/manual/status_cxx2017.xml: Update feature-test macros.
1305         * doc/html/*: Regenerate.
1306         * include/Makefile.am: Remove <bits/c++17_warning.h>.
1307         * include/Makefile.in: Regenerate.
1308         * include/bits/c++17_warning.h: Remove.
1309         * include/bits/string_view.tcc: Do not include <bits/c++17_warning.h>
1310         for pre-C++17 modes.
1311         * include/std/any: Likewise.
1312         (__cpp_lib_any): Define.
1313         * include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new
1314         SD-6 draft.
1315         * include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6
1316         draft.
1317         * include/std/optional: Do not include <bits/c++17_warning.h>.
1318         (__cpp_lib_optional): Define.
1319         * include/std/shared_mutex: Do not include <bits/c++14_warning.h>.
1320         * include/std/string_view: Do not include <bits/c++17_warning.h>.
1321         (__cpp_lib_string_view): Define.
1322         * include/std/variant: Do not include <bits/c++17_warning.h>.
1323         (__cpp_lib_variant): Define.
1324         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line
1325         numbers.
1326         * testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm.
1327         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
1328         numbers.
1329         * testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm.
1330         * testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line
1331         numbers.
1332         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust
1333         expected value of __cpp_lib_scoped_lock.
1335         PR libstdc++/70483
1336         * include/experimental/bits/string_view.tcc (basic_string_view::find)
1337         (basic_string_view::rfind, basic_string_view::find_first_of)
1338         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
1339         (basic_string_view::find_last_not_of): Add constexpr specifier.
1340         * include/experimental/string_view (basic_string_view::remove_prefix)
1341         (basic_string_view::remove_suffix, basic_string_view::swap)
1342         (basic_string_view::compare, basic_string_view::find)
1343         (basic_string_view::rfind, basic_string_view::find_first_of)
1344         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
1345         (basic_string_view::find_last_not_of, operator==, operator!=)
1346         (operator<, operator>, operator<=, operator>=): Likewise.
1347         * testsuite/experimental/string_view/operations/compare/char/70483.cc:
1348         New.
1350 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
1352         PR libstdc++/70483
1353         * include/bits/string_view.tcc (basic_string_view::find)
1354         (basic_string_view::rfind, basic_string_view::find_first_of)
1355         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
1356         (basic_string_view::find_last_not_of): Add constexpr specifier.
1357         * include/std/string_view (basic_string_view::operator=)
1358         (basic_string_view::rbegin, basic_string_view::rend)
1359         (basic_string_view::crbegin, basic_string_view::crend)
1360         (basic_string_view::remove_prefix, basic_string_view::remove_suffix)
1361         (basic_string_view::swap, basic_string_view::compare)
1362         (basic_string_view::find, basic_string_view::rfind)
1363         (basic_string_view::find_first_of, basic_string_view::find_last_of)
1364         (basic_string_view::find_first_not_of)
1365         (basic_string_view::find_last_not_of, basic_string_view::_M_check)
1366         (basic_string_view::_M_limit, operator==, operator!=, operator<)
1367         (operator>, operator<=, operator>=): Likewise.
1368         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1369         char/1.cc: Repeat tests in constexpr context.
1370         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1371         wchar_t/1.cc: Likewise.
1372         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1373         char/1.cc: Likewise.
1374         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1375         wchar_t/1.cc: Likewise.
1376         * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
1377         Likewise.
1378         * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
1379         Likewise.
1380         * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
1381         Likewise.
1382         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
1383         Likewise.
1384         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
1385         Likewise.
1386         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
1387         Likewise.
1388         * testsuite/21_strings/basic_string_view/operators/char/2.cc:
1389         Likewise.
1390         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
1391         Likewise.
1392         * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test
1393         cbegin, cend, rbegin, rend, crbegin and crend.
1394         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
1395         Likewise.
1396         * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
1397         Remove trailing whitespace.
1398         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
1399         1.cc: Likewise.
1400         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
1401         New.
1402         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
1403         New.
1404         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
1405         New.
1406         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
1407         2.cc: New.
1409 2017-09-11  Tim Shen  <timshen@google.com>
1411         PR libstdc++/71500
1412         * include/bits/regex_executor.tcc: Support icase in regex_traits<...>
1413         for back reference matches.
1414         * testsuite/28_regex/regression.cc: Test case.
1416 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
1418         * testsuite/21_strings/basic_string/lwg2946.cc: Adjust for
1419         compatibility with old COW std::string.
1421 2017-09-09  Gerald Pfeifer  <gerald@pfeifer.com>
1423         * doc/xml/manual/allocator.xml: Adjust link for Hoard.
1424         * doc/html/manual/memory.html: Regenerate.
1426 2017-09-04  Daniel Kruegler  <daniel.kruegler@gmail.com>
1428         PR libstdc++/79162
1429         Implement LWG 2946, LWG 2758's resolution missed further corrections
1430         * include/bits/basic_string.h (basic_string::compare): Add missing
1431         required noexcept specifications.
1432         (basic_string): Introduce internal _S_to_string_view and __sv_wrapper
1433         for implicit string_view conversion.
1434         (basic_string::basic_string): Fix explicit string_view conversion by
1435         implicit conversion using _S_to_string_view and __sv_wrapper.
1436         (basic_string): Introduce internal basic_string(__sv_wrapper, Alloc)
1437         constructor.
1438         (basic_string): Fix operator=(T) template by operator=(const T&)
1439         template for uncopyable types (PR 79162).
1440         (basic_string::operator+=, basic_string::append, basic_string::assign)
1441         (basic_string::insert, basic_string::replace, basic_string::find)
1442         (basic_string::rfind, basic_string::find_first_of)
1443         (basic_string::find_last_of, basic_string::find_first_not_of)
1444         (basic_string::find_last_not_of, basic_string::compare): Replace
1445         __sv_type argument by template const T& (LWG 2946) and correct
1446         documentation describing __sv_type argument.
1447         (basic_string::find, basic_string::rfind, basic_string::find_first_of)
1448         (basic_string::find_last_of, basic_string::find_first_not_of)
1449         (basic_string::find_last_not_of, basic_string::compare): Replace
1450         unconditional noexcept specification by conditional noexcept
1451         specification to partially balance the removal of noexcept by LWG 2946.
1452         * testsuite/21_strings/basic_string/79162.cc: New.
1453         * testsuite/21_strings/basic_string/lwg2946.cc: New.
1455 2017-08-31  Jonathan Wakely  <jwakely@redhat.com>
1457         PR c++/82039
1458         * include/ext/new_allocator.h (__gnu_cxx::new_allocator::allocate):
1459         Adjust null pointer constant to avoid warning.
1461 2017-08-24  François Dumont  <fdumont@gcc.gnu.org>
1463         * include/bits/stl_list.h
1464         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
1465         (_List_impl(_Node_alloc_type&&, _List_impl&&)): New.
1466         (_List_base(_Node_alloc_type&&, _List_base&&)): New, use latter.
1467         [!_GLIBCXX_INLINE_VERSION](_List_base(_Node_alloc_type&&,_List_base&&)):
1468         Remove.
1469         (_List_base(_Node_alloc_type&&)): New.
1470         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_distance): Remove.
1471         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_node_count): Remove.
1472         (list<>::_M_node_count): New.
1473         (list<>::size()): Adapt to call latter.
1474         (list<>::_S_distance(const_iterator, const_iterator)): New.
1475         (list<>::splice(iterator, list&, const_iterator, const_iterator)):
1476         Adapt to call latter.
1477         (list(list&&, const allocator_type&, true_type)): New.
1478         (list(list&&, const allocator_type&, false_type)): New.
1479         (list(list&&, const allocator_type&)): Adapt to call latters.
1481 2017-08-21  Jonathan Wakely  <jwakely@redhat.com>
1483         PR libstdc++/81912
1484         * include/bits/stl_iterator_base_types.h (__iterator_category): Add
1485         constexpr for C++11 and later.
1486         * testsuite/24_iterators/container_access.cc: Add target selector.
1487         * testsuite/24_iterators/range_access.cc: Fix clause number in
1488         comment.
1489         * testsuite/24_iterators/range_access_cpp14.cc: Likewise.
1490         * testsuite/24_iterators/range_access_cpp17.cc: New.
1492 2017-08-21  Richard Biener  <rguenther@suse.de>
1494         * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Run all
1495         tests with -flto as well if supported.
1497 2017-08-20  Martin Sebor  <msebor@redhat.com>
1499         PR c/81854
1500         * src/c++98/compatibility.cc (_GLIBCXX_3_4_SYMVER): Declare alias
1501         target as a C++ function with no prototype.
1502         (_GLIBCXX_3_4_5_SYMVER): Ditto.
1504 2017-08-20  John David Anglin  <danglin@gcc.gnu.org>
1506         PR testsuite/81056
1507         * testsuite/17_intro/names.cc: Undef 'd' and 'r' on __hpux__.
1509 2017-08-18  Jonathan Wakely  <jwakely@redhat.com>
1511         * include/bits/hashtable_policy.h (_ReuseOrAllocNode): Remove
1512         __value_alloc_type and __value_alloc_traits typedefs.
1513         (_ReuseOrAllocNode::operator()): Call construct and destroy on the
1514         node allocator.
1515         (_Hashtable_alloc): Simplify __value_alloc_traits typedef.
1516         (_Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&...)): Call
1517         construct on the node allocator.
1518         (_Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type*)): Call
1519         destroy on the node allocator.
1521         PR libstdc++/81891
1522         * include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator,
1523         size_type, const _H1&, const _H2&, const _Hash&, const _Equal&,
1524         const _ExtractKey&, const allocator_type&)): Let destructor do clean
1525         up if an exception is thrown.
1526         * testsuite/23_containers/unordered_map/cons/81891.cc: New.
1528 2017-08-11  Jonathan Wakely  <jwakely@redhat.com>
1530         PR libstdc++/81808
1531         * testsuite/27_io/basic_fstream/53984.cc: Adjust test for targets
1532         that allow opening a directory as a FILE and reading from it.
1534 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
1536         * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
1537         Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use
1538         __is_identifier to set it.
1540 2017-08-09  Katsuhiko Nishimra  <ktns.87@gmail.com>
1542         * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use
1543         __is_identifier instead of __has_builtin.
1545 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
1547         PR libstdc++/79820
1548         PR libstdc++/81751
1549         * config/io/basic_file_stdio.cc (sys_open(FILE*, ios_base::openmode)):
1550         Call fflush on the stream instead of calling sync() while _M_cfile is
1551         null. Restore original value of errno.
1552         * testsuite/ext/stdio_filebuf/char/79820.cc: New.
1553         * testsuite/ext/stdio_filebuf/char/81751.cc: New.
1555 2017-07-31  Marek Polacek  <polacek@redhat.com>
1557         PR libstdc++/81599
1558         * include/bits/stl_stack.h: Fix typo.
1560 2017-07-26  Jonathan Wakely  <jwakely@redhat.com>
1562         * testsuite/27_io/basic_fstream/53984.cc: Fix test.
1564 2017-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
1566         * testsuite/27_io/basic_fstream/53984.cc: Fix typo in dg-require
1567         directive.
1569 2017-07-25  Jonathan Wakely  <jwakely@redhat.com>
1571         PR libstdc++/53984
1572         * include/bits/basic_ios.h (basic_ios::_M_setstate): Adjust comment.
1573         * include/bits/istream.tcc (basic_istream::sentry): Handle exceptions
1574         during construction.
1575         * include/std/istream: Adjust comments for formatted input functions
1576         and unformatted input functions.
1577         * testsuite/27_io/basic_fstream/53984.cc: New.
1578         * testsuite/27_io/basic_istream/sentry/char/53984.cc: New.
1580         * include/bits/ios_base.h (ios_base::io_state, ios_base::open_mode)
1581         (ios_base::seek_dir): Remove for C++17.
1582         * include/std/streambuf (basic_streambuf::stossc): Remove for C++17.
1583         Add deprecated attribute for C++11 and C++14.
1584         * testsuite/27_io/types/1.cc: Don't run for C++17 and later.
1585         * testsuite/27_io/types/4.cc: New.
1587 2017-07-23  Michael Collison  <michael.collison@arm.com>
1589         Add optimized implementation of mersenne twister for aarch64
1590         * config/cpu/aarch64/opt/ext/opt_random.h: New file.
1591         (__arch64_recursion): New function.
1592         (__aarch64_lsr_128): New function.
1593         (__aarch64_lsl_128): New function.
1594         (operator==): New function.
1595         (simd_fast_mersenne_twister_engine): Implement
1596         method _M_gen_rand.
1597         * config/cpu/aarch64/opt/bits/opt_random.h: New file.
1598         * include/ext/random: (simd_fast_mersenne_twister_engine):
1599         add _M_state private array.
1601 2017-07-23  François Dumont  <fdumont@gcc.gnu.org>
1603         PR libstdc++/81064
1604         * include/bits/algorithmfwd.h: Reorganize versioned namespace.
1605         * include/bits/basic_string.h: Likewise.
1606         * include/bits/c++config: Likewise.
1607         * include/bits/deque.tcc: Likewise.
1608         * include/bits/forward_list.h: Likewise.
1609         * include/bits/forward_list.tcc: Likewise.
1610         * include/bits/hashtable_policy.h: Likewise.
1611         * include/bits/list.tcc: Likewise.
1612         * include/bits/move.h: Likewise.
1613         * include/bits/quoted_string.h: Likewise.
1614         * include/bits/random.h: Likewise.
1615         * include/bits/random.tcc: Likewise.
1616         * include/bits/regex.h: Likewise.
1617         * include/bits/regex.tcc: Likewise.
1618         * include/bits/regex_automaton.h: Likewise.
1619         * include/bits/regex_automaton.tcc: Likewise.
1620         * include/bits/regex_compiler.h: Likewise.
1621         * include/bits/regex_compiler.tcc: Likewise.
1622         * include/bits/regex_constants.h: Likewise.
1623         * include/bits/regex_error.h: Likewise.
1624         * include/bits/regex_executor.h: Likewise.
1625         * include/bits/regex_executor.tcc: Likewise.
1626         * include/bits/regex_scanner.h: Likewise.
1627         * include/bits/regex_scanner.tcc: Likewise.
1628         * include/bits/specfun.h: Likewise.
1629         * include/bits/stl_algo.h: Likewise.
1630         * include/bits/stl_algobase.h: Likewise.
1631         * include/bits/stl_bvector.h: Likewise.
1632         * include/bits/stl_deque.h: Likewise.
1633         * include/bits/stl_iterator.h: Likewise.
1634         * include/bits/stl_iterator_base_funcs.h: Likewise.
1635         * include/bits/stl_list.h: Likewise.
1636         * include/bits/stl_map.h: Likewise.
1637         * include/bits/stl_multimap.h: Likewise.
1638         * include/bits/stl_multiset.h: Likewise.
1639         * include/bits/stl_relops.h: Likewise.
1640         * include/bits/stl_set.h: Likewise.
1641         * include/bits/stl_vector.h: Likewise.
1642         * include/bits/uniform_int_dist.h: Likewise.
1643         * include/bits/unordered_map.h: Likewise.
1644         * include/bits/unordered_set.h: Likewise.
1645         * include/bits/vector.tcc: Likewise.
1646         * include/c_global/cmath: Likewise.
1647         * include/c_std/cmath: Likewise.
1648         * include/decimal/decimal: Likewise.
1649         * include/decimal/decimal.h: Likewise.
1650         * include/experimental/algorithm: Likewise.
1651         * include/experimental/any: Likewise.
1652         * include/experimental/array: Likewise.
1653         * include/experimental/bits/erase_if.h: Likewise.
1654         * include/experimental/bits/fs_dir.h: Likewise.
1655         * include/experimental/bits/fs_fwd.h: Likewise.
1656         * include/experimental/bits/fs_ops.h: Likewise.
1657         * include/experimental/bits/fs_path.h: Likewise.
1658         * include/experimental/bits/lfts_config.h: Likewise.
1659         * include/experimental/bits/shared_ptr.h: Likewise.
1660         * include/experimental/bits/string_view.tcc: Likewise.
1661         * include/experimental/chrono: Likewise.
1662         * include/experimental/deque: Likewise.
1663         * include/experimental/filesystem: Likewise.
1664         * include/experimental/forward_list: Likewise.
1665         * include/experimental/functional: Likewise.
1666         * include/experimental/iterator: Likewise.
1667         * include/experimental/list: Likewise.
1668         * include/experimental/map: Likewise.
1669         * include/experimental/memory: Likewise.
1670         * include/experimental/memory_resource: Likewise.
1671         * include/experimental/numeric: Likewise.
1672         * include/experimental/optional: Likewise.
1673         * include/experimental/propagate_const: Likewise.
1674         * include/experimental/random: Likewise.
1675         * include/experimental/ratio: Likewise.
1676         * include/experimental/regex: Likewise.
1677         * include/experimental/set: Likewise.
1678         * include/experimental/source_location: Likewise.
1679         * include/experimental/string: Likewise.
1680         * include/experimental/string_view: Likewise.
1681         * include/experimental/system_error: Likewise.
1682         * include/experimental/tuple: Likewise.
1683         * include/experimental/type_traits: Likewise.
1684         * include/experimental/unordered_map: Likewise.
1685         * include/experimental/unordered_set: Likewise.
1686         * include/experimental/utility: Likewise.
1687         * include/experimental/vector: Likewise.
1688         * include/ext/bitmap_allocator.h: Likewise.
1689         * include/ext/codecvt_specializations.h: Likewise.
1690         * include/ext/rope: Likewise.
1691         * include/ext/typelist.h: Likewise.
1692         * include/std/chrono: Likewise.
1693         * include/std/complex: Likewise.
1694         * include/std/functional: Likewise.
1695         * include/std/numeric: Likewise.
1696         * include/std/string_view: Likewise.
1697         * include/std/thread: Likewise.
1698         * include/std/variant: Likewise.
1699         * include/tr1/array: Likewise.
1700         * include/tr1/bessel_function.tcc: Likewise.
1701         * include/tr1/beta_function.tcc: Likewise.
1702         * include/tr1/cmath: Likewise.
1703         * include/tr1/complex: Likewise.
1704         * include/tr1/ell_integral.tcc: Likewise.
1705         * include/tr1/exp_integral.tcc: Likewise.
1706         * include/tr1/functional: Likewise.
1707         * include/tr1/functional_hash.h: Likewise.
1708         * include/tr1/gamma.tcc: Likewise.
1709         * include/tr1/hashtable.h: Likewise.
1710         * include/tr1/hashtable_policy.h: Likewise.
1711         * include/tr1/hypergeometric.tcc: Likewise.
1712         * include/tr1/legendre_function.tcc: Likewise.
1713         * include/tr1/modified_bessel_func.tcc: Likewise.
1714         * include/tr1/poly_hermite.tcc: Likewise.
1715         * include/tr1/poly_laguerre.tcc: Likewise.
1716         * include/tr1/random.h: Likewise.
1717         * include/tr1/random.tcc: Likewise.
1718         * include/tr1/regex: Likewise.
1719         * include/tr1/riemann_zeta.tcc: Likewise.
1720         * include/tr1/shared_ptr.h: Likewise.
1721         * include/tr1/special_function_util.h: Likewise.
1722         * include/tr1/tuple: Likewise.
1723         * include/tr1/type_traits: Likewise.
1724         * include/tr1/unordered_map.h: Likewise.
1725         * include/tr1/unordered_set.h: Likewise.
1726         * include/tr1/utility: Likewise.
1727         * include/tr2/bool_set: Likewise.
1728         * include/tr2/bool_set.tcc: Likewise.
1729         * include/tr2/dynamic_bitset: Likewise.
1730         * include/tr2/dynamic_bitset.tcc: Likewise.
1731         * include/tr2/ratio: Likewise.
1732         * include/tr2/type_traits: Likewise.
1733         * src/c++11/chrono.cc: Likewise.
1734         * src/c++11/compatibility-c++0x.cc: Likewise.
1735         * src/c++11/compatibility-chrono.cc: Likewise.
1736         * src/c++11/cxx11-shim_facets.cc: Likewise.
1737         * src/c++11/hashtable_c++0x.cc: Likewise.
1738         * src/c++11/placeholders.cc: Likewise.
1739         * src/c++11/thread.cc: Likewise.
1740         * src/c++98/bitmap_allocator.cc: Likewise.
1741         * src/c++98/hashtable_tr1.cc: Likewise.
1742         * src/c++98/list.cc: Likewise.
1743         * src/shared/hashtable-aux.cc: Likewise.
1744         * testsuite/20_util/duration/literals/range.cc: Adapt line number.
1745         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1746         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1747         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1748         * testsuite/20_util/forward/c_neg.cc: Likewise.
1749         * testsuite/20_util/forward/f_neg.cc: Likewise.
1750         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
1751         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1752         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
1753         * python/libstdcxx/v6/printers.py: Adapt.
1755 2017-07-20  Jonathan Wakely  <jwakely@redhat.com>
1757         * config/allocator/malloc_allocator_base.h [__SANITIZE_ADDRESS__]
1758         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
1759         * config/allocator/new_allocator_base.h [__SANITIZE_ADDRESS__]
1760         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
1761         * doc/xml/manual/using.xml (_GLIBCXX_SANITIZE_VECTOR): Document macro.
1762         * include/bits/stl_vector.h [_GLIBCXX_SANITIZE_VECTOR]
1763         (_Vector_impl::_Asan, _Vector_impl::_Asan::_Reinit)
1764         (_Vector_impl::_Asan::_Grow, _GLIBCXX_ASAN_ANNOTATE_REINIT)
1765         (_GLIBCXX_ASAN_ANNOTATE_GROW, _GLIBCXX_ASAN_ANNOTATE_GREW)
1766         (_GLIBCXX_ASAN_ANNOTATE_SHRINK, _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC):
1767         Define annotation helper types and macros.
1768         (vector::~vector, vector::push_back, vector::pop_back)
1769         (vector::_M_erase_at_end): Add annotations.
1770         * include/bits/vector.tcc (vector::reserve, vector::emplace_back)
1771         (vector::insert, vector::_M_erase, vector::operator=)
1772         (vector::_M_fill_assign, vector::_M_assign_aux)
1773         (vector::_M_insert_rval, vector::_M_emplace_aux)
1774         (vector::_M_insert_aux, vector::_M_realloc_insert)
1775         (vector::_M_fill_insert, vector::_M_default_append)
1776         (vector::_M_shrink_to_fit, vector::_M_range_insert): Annotate.
1778 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
1780         PR libstdc++/81476
1781         * include/bits/vector.tcc (vector::_M_range_insert<_InputIterator>):
1782         Only insert elements one-by-one when inserting at the end.
1783         * testsuite/performance/23_containers/insert/81476.cc: New.
1785 2017-07-19  Volker Reichelt  <v.reichelt@netcologne.de>
1787         * libsupc++/new (bad_array_new_length): Remove redundant
1788         semicolon after in-class member function definition.
1789         * include/bits/locale_facets.h (ctype_byname, num_put): Likewise.
1790         * include/bits/locale_facets_nonio.h (time_put_byname): Likewise.
1791         * include/bits/random.h (mersenne_twister_engine): Likewise.
1792         * include/tr1/random.h (mersenne_twister): Likewise
1793         * include/ext/random (simd_fast_mersenne_twister_engine): Likewise.
1794         * include/ext/rope (char_producer, _Rope_char_consumer,
1795         _Rope_self_destruct_ptr, _Rope_const_iterator, _Rope_iterator):
1796         Likewise.
1797         * include/ext/ropeimpl.h (_Rope_flatten_char_consumer,
1798         _Rope_insert_char_consumer): Likewise.
1800 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
1802         * include/bits/fstream.tcc (basic_filebuf::xsgetn)
1803         (basic_filebuf::xsputn, basic_filebuf::seekoff): Fix indentation.
1805         * testsuite/util/testsuite_iterators.h: Fix indentation.
1807         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: Add dg-require.
1809 2017-07-18  Jonathan Wakely  <jwakely@redhat.com>
1811         PR libstdc++/81395
1812         * include/bits/fstream.tcc (basic_filebuf::xsgetn): Don't set buffer
1813         pointers for write mode after reading.
1814         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: New.
1816 2017-07-18  François Dumont  <fdumont@gcc.gnu.org>
1818         * include/bits/stl_list.h
1819         (struct _List_node_header): New.
1820         (_List_impl()): Fix noexcept qualification.
1821         (_List_impl(_List_impl&&)): New, default.
1822         (_List_base()): Default.
1823         (_List_base(_List_base&&)): Default.
1824         (_List_base::_M_move_nodes): Adapt to use
1825         _List_node_header._M_move_nodes.
1826         (_List_base::_M_init): Likewise.
1827         (list<>()): Default.
1828         (list<>(list&&)): Default.
1829         (list<>::_M_move_assign(list&&, true_type)): Use _M_move_nodes.
1830         (__distance(_List_const_iterator<>, _List_const_iterator<>,
1831         input_iterator_tag)): Adapt.
1832         * testsuite/23_containers/list/allocator/default_init.cc: New.
1834 2017-07-15  Jonathan Wakely  <jwakely@redhat.com>
1836         * include/std/mutex (scoped_lock): Reorder std::adopt_lock_t parameter
1837         as per P0739R0.
1838         * testsuite/30_threads/scoped_lock/cons/1.cc: Reorder arguments.
1839         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Test deduction
1840         with std::adopt_lock_t.
1841         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Check
1842         feature-test macro.
1844 2017-07-14  Jason Merrill  <jason@redhat.com>
1845             Jonathan Wakely  <jwakely@redhat.com>
1847         * include/std/variant (variant::variant(_Tp&&)): Constrain to remove
1848         the constructor for empty variants from the candidate functions
1849         during class template argument deduction.
1850         * testsuite/20_util/variant/deduction.cc: New.
1852 2017-07-11  Jonathan Wakely  <jwakely@redhat.com>
1854         * doc/xml/faq.xml: Update several old entries. Improve
1855         cross-references.
1856         * doc/xml/manual/intro.xml: Add anchors to each DR.
1857         * doc/html/*: Regenerate.
1859 2017-07-10  Jonathan Wakely  <jwakely@redhat.com>
1861         * testsuite/abi/pr42230.cc: Add header for std::free.
1863         PR libstdc++/81381
1864         * include/bits/sstream.tcc (basic_stringbuf::overflow)
1865         (basic_stringbuf::basic_stringbuf(const __string_type&, ios::mode))
1866         (basic_stringbuf::str()): Construct new strings with an allocator.
1867         * testsuite/27_io/basic_stringbuf/cons/81381.cc: New.
1869         PR libstdc++/81338
1870         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
1871         Declare basic_stringbuf to be a friend.
1872         * include/bits/sstream.tcc (basic_stringbuf::overflow)
1873         [_GLIBCXX_USE_CXX11_ABI]: Use unused capacity before reallocating.
1874         * include/std/sstream (basic_stringbuf::__xfer_bufptrs): Update string
1875         length to buffer length.
1876         * testsuite/27_io/basic_stringstream/assign/81338.cc: New.
1878 2017-07-06  Jonathan Wakely  <jwakely@redhat.com>
1880         * testsuite/20_util/specialized_algorithms/memory_management_tools/
1881         1.cc: Free memory.
1882         * testsuite/22_locale/locale/cons/5.cc: Remove redundant restoration
1883         of original environment and free memory.
1885         * testsuite/abi/pr42230.cc: Free memory.
1886         * testsuite/util/testsuite_abi.cc (demangle): Return std::string
1887         instead of pointer that might need freeing.
1888         * testsuite/util/testsuite_abi.h (demangle): Likewise.
1889         * testsuite/util/testsuite_hooks.cc (verify_demangle): Free memory.
1891         * include/bits/uses_allocator.h (__use_alloc(const _Alloc&&)): Add
1892         deleted overload to prevent dangling references to rvalues.
1893         * include/experimental/memory_resource
1894         (polymorphic_allocator::construct): Do not call __use_alloc with
1895         rvalue arguments.
1897 2017-06-27  Tim Shen  <timshen@google.com>
1899         PR libstdc++/80187
1900         * include/std/variant (variant::variant, variant::~variant,
1901         variant::operator=): Implement triviality forwarding for four
1902         special member functions.
1903         * testsuite/20_util/variant/compile.cc: Tests.
1905 2017-06-27  Jonathan Wakely  <jwakely@redhat.com>
1907         PR libstdc++/81221
1908         * testsuite/25_algorithms/sample/81221.cc: Disable except for
1909         check-parallel.
1911         PR libstdc++/81221
1912         * include/bits/stl_algo.h (sample): Qualify with _GLIBCXX_STD_A not
1913         std.
1914         * testsuite/25_algorithms/sample/81221.cc: New.
1916 2017-06-22  Jonathan Wakely  <jwakely@redhat.com>
1918         PR libstdc++/81173
1919         * include/bits/stl_bvector.h (vector<bool>::_M_initialize_value):
1920         Do not pass null pointer to memset.
1922 2017-06-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
1924         PR libstdc++/80675
1925         PR libstdc++/80940
1926         * include/std/istream:
1927         (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
1928         (__do_is_convertible_to_basic_istream_impl): Likewise.
1929         (__is_convertible_to_basic_istream_impl): Likewise.
1930         (__is_convertible_to_basic_istream): Use the new base.
1931         (__rvalue_istream_type): New.
1932         (operator>>(_Istream&&, _Tp&&)): Use the new helper alias
1933         for the SFINAE check, convert to the helper alias type before
1934         doing the actual extraction.
1935         * include/std/ostream:
1936         (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
1937         (__do_is_convertible_to_basic_ostream_impl): Likewise.
1938         (__is_convertible_to_basic_ostream_impl): Likewise.
1939         (__is_convertible_to_basic_ostream): Use the new base.
1940         (__rvalue_ostream_type): New.
1941         (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
1942         for the SFINAE check, convert to the helper alias type before
1943         doing the actual insertion.
1944         * testsuite/27_io/rvalue_streams-2.cc: Add new tests.
1946 2017-06-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1948         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
1950 2017-06-21  Jonathan Wakely  <jwakely@redhat.com>
1952         PR libstdc++/81092
1953         * configure: Regenerate.
1955 2017-06-20  Uros Bizjak  <ubizjak@gmail.com>
1957         * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1959 2017-06-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1961         * testsuite/20_util/variant/index_type.cc: Allow for all ilp32 and
1962         lp64 targets.
1964 2017-06-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1966         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
1967         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
1968         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
1969         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
1970         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
1971         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
1972         Likewise.
1973         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
1974         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
1975         Likewise.
1977 2017-06-18  H.J. Lu  <hongjiu.lu@intel.com>
1979         PR libstdc++/81092
1980         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1982 2017-06-18  Andreas Schwab  <schwab@linux-m68k.org>
1984         PR libstdc++/81092
1985         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
1987 2017-06-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1989         * testsuite: Remove dg-skip-if, dg-xfail-if, dg-xfail-run-if
1990         default args.
1992 2017-06-17  Jonathan Wakely  <jwakely@redhat.com>
1994         PR libstdc++/80893
1995         * testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }.
1997 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
1999         * include/bits/shared_ptr.h (get_deleter): Add overload matching
2000         standard signature.
2001         * include/bits/shared_ptr_base.h (__shared_ptr): Declare new
2002         get_deleter overload as a friend.
2003         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: New.
2005 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
2007         PR libstdc++/81092
2008         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
2009         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
2010         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
2012 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
2014         * include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
2015         * testsuite/22_locale/conversions/buffer/2.cc: New.
2017         PR libstdc++/81092
2018         * acinclude.m4: Bump libtool_VERSION.
2019         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
2020         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
2021         * config/abi/pre/gnu.ver: Add wstring constructor symbols to
2022         GLIBCXX_3.4.24 version and move random_device::_M_get_entropy() symbol
2023         to new GLIBCXX_3.4.25 version.
2024         * doc/xml/manual/abi.xml: Document new versions.
2025         * doc/html/*: Regenerate.
2026         * testsuite/21_strings/basic_string/cons/char/8.cc: Use base object
2027         constructors to ensure required symbols are exported.
2028         * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
2029         * testsuite/util/testsuite_abi.cc: Add new version.
2031         * include/bits/locale_conv.h (wbuffer_convert::_M_put): Add missing
2032         return statement.
2033         * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
2034         Return void.
2035         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
2036         Likewise.
2037         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: Add
2038         missing return statements.
2039         * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
2040         Likewise.
2041         * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
2042         Return void.
2043         * testsuite/special_functions/14_expint/pr68397.cc: Likewise.
2045 2017-06-16  François Dumont  <fdumont@gcc.gnu.org>
2047         * include/bits/stl_bvector.h
2048         (__fill_bvector(_Bit_type*, unsigned int, unsigned int, bool)):
2049         Change signature.
2050         (std::fill(_Bit_iterator, _Bit_iterator, bool)): Adapt.
2051         (_Bvector_impl_data): New.
2052         (_Bvector_impl): Inherits from latter.
2053         (_Bvector_impl(_Bit_alloc_type&&)): Delete.
2054         (_Bvector_impl(_Bvector_impl&&)): New, default.
2055         (_Bvector_base()): Default.
2056         (_Bvector_base(_Bvector_base&&)): Default.
2057         (_Bvector_base::_M_move_data(_Bvector_base&&)): New.
2058         (vector(vector&&, const allocator_type&)): Use latter.
2059         (vector<bool>::operator=(vector&&)): Likewise.
2060         (vector<bool>::vector()): Default.
2061         (vector<bool>::vector(vector&&)): Default.
2062         (vector<bool>::assign(_InputIterator, _InputIterator)): Use
2063         _M_assign_aux.
2064         (vector<bool>::assign(initializer_list<bool>)): Likewise.
2065         (vector<bool>::_M_initialize_value(bool)): New.
2066         (vector<bool>(size_type, const bool&, const allocator_type&)): Use
2067         latter.
2068         (vector<bool>::_M_initialize_dispatch(_Integer, _Integer, __true_type)):
2069         Likewise.
2070         (vector<bool>::_M_fill_assign(size_t, bool)): Likewise.
2072 2017-06-15  François Dumont  <fdumont@gcc.gnu.org>
2074         * src/c++98/tree.cc  [!_GLIBCXX_INLINE_VERSION]
2075         (_Rb_tree_rotate_left, _Rb_tree_rotate_right): Delete.
2077 2017-06-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2079         * testsuite: Add dg-require-effective-target pthread to -pthread
2080         tests.
2081         Remove explicit target lists from dg-do and dg-options.
2083         * testsuite/30_threads/async/forced_unwind.cc: Remove explit
2084         target list from dg-options.
2085         * testsuite/30_threads/packaged_task/forced_unwind.cc: Likewise.
2087         * 30_threads/shared_mutex/cons/1.cc: Likewise.
2088         Pass -pthread for all targets.
2089         * 30_threads/shared_mutex/try_lock/1.cc: Likewise.
2090         * 30_threads/shared_mutex/try_lock/2.cc: Likewise.
2091         * 30_threads/shared_mutex/unlock/1.cc: Likewise.
2093         * testsuite/30_threads/this_thread/57060.cc: Require c++11 via
2094         dg-require-effective-target.
2096 2017-06-14  Jonathan Wakely  <jwakely@redhat.com>
2098         * doc/xml/manual/test.xml: Correct instructions on running tests.
2099         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
2100         pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
2101         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2102         Likewise.
2103         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
2104         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
2105         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
2106         exceptions_failbit.cc: Likewise.
2107         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
2108         exceptions_failbit.cc: Likewise.
2109         * testsuite/27_io/basic_istream/extractors_other/char/
2110         exceptions_null.cc: Likewise.
2111         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
2112         exceptions_null.cc: Likewise.
2113         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
2114         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
2115         * testsuite/27_io/basic_ostream/inserters_other/char/
2116         exceptions_null.cc: Likewise.
2117         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
2118         exceptions_null.cc: Likewise.
2119         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
2121 2017-06-12  Pedro Alves  <palves@redhat.com>
2123         * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
2124         char_traits status.
2125         * doc/html/*: Regenerate.
2127         * include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if
2128         not already defined.
2129         (__cpp_lib_constexpr_char_traits): Uncomment.
2130         (__constant_string_p, __constant_char_array_p): New.
2131         (std::char_traits<char>, std::char_traits<wchar_t>): Add
2132         _GLIBCXX17_CONSTEXPR on compare, length and find and use
2133         __constant_string_p, __constant_char_array_p and
2134         __builtin_constant_p to defer to __gnu_cxx::char_traits at compile
2135         time.
2137         * testsuite/21_strings/char_traits/requirements/
2138         constexpr_functions_c++17.cc: Uncomment
2139         __cpp_lib_constexpr_char_traits tests.  Uncomment
2140         test_compare<char>, test_length<char>, test_find<char>,
2141         test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t>
2142         static_assert tests.
2144 2017-06-12  François Dumont  <fdumont@gcc.gnu.org>
2146         * include/bits/stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator
2147         default init.
2148         * testsuite/util/testsuite_allocator.h
2149         (__gnu_test::default_init_allocator<>) New.
2150         * testsuite/23_containers/set/allocator/default_init.cc: New.
2151         * testsuite/23_containers/map/allocator/default_init.cc: New.
2153 2017-06-12  Jonathan Wakely  <jwakely@redhat.com>
2155         PR libstdc++/55917
2156         * src/c++11/thread.cc (execute_native_thread_routine): Remove
2157         try-block so that exceptions propagate out of the thread and terminate
2158         is called by the exception-handling runtime.
2159         (execute_native_thread_routine_compat): Likewise.
2160         * testsuite/30_threads/thread/cons/terminate.cc: New.
2162 2017-06-09  Jonathan Wakely  <jwakely@redhat.com>
2164         * doc/xml/manual/intro.xml: Document LWG 2802, 2873 and 2942 changes.
2165         * include/bits/shared_ptr.h (shared_ptr): Use rvalues for deleters
2166         (LWG 2802).
2167         * include/bits/shared_ptr_base.h (_Sp_ebo_helper, _Sp_counted_deleter
2168         (_Sp_counted_deleter::_Impl, __shared_count, __shared_ptr): Likewise.
2169         * testsuite/20_util/shared_ptr/cons/lwg2802.cc: New.
2171         * include/bits/forward_list.h (forward_list): Add deduction guide.
2172         * include/bits/stl_deque.h (deque): Likewise.
2173         * include/bits/stl_list.h (list): Likewise.
2174         * include/bits/stl_vector.h (vector): Likewise.
2175         * testsuite/23_containers/deque/cons/deduction.cc: New.
2176         * testsuite/23_containers/forward_list/cons/deduction.cc: New.
2177         * testsuite/23_containers/list/cons/deduction.cc: New.
2178         * testsuite/23_containers/vector/cons/deduction.cc: New.
2180 2017-06-08  Jonathan Wakely  <jwakely@redhat.com>
2182         PR libstdc++/81017
2183         * include/bits/std_function.h (function::function(function&&))
2184         (function::operator=(funtion&&)): Add noexcept.
2185         * testsuite/20_util/function/assign/move.cc: Check for noexcept.
2186         * testsuite/20_util/function/cons/move.cc: Likewise.
2188 2017-06-07  Jonathan Wakely  <jwakely@redhat.com>
2190         * include/bits/regex.h (basic_regex): Add deduction guide from P0433.
2191         * testsuite/28_regex/basic_regex/ctors/deduction.cc: New.
2193         PR libstdc++/81002
2194         * include/bits/regex.h (basic_regex): Adjust call to __compile_nfa
2195         so iterator type is deduced.
2196         * include/bits/regex_compiler.h (__compile_nfa): Reorder template
2197         parameters to allow iterator type to be deduced.
2198         * testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New.
2200         * include/bits/alloc_traits.h (__is_allocator, _RequireAllocator):
2201         New trait and alias for detecting Allocator-like types.
2202         * include/bits/basic_string.h (basic_string): Add deduction guide
2203         from P0433.
2204         * include/ext/alloc_traits.h (__gnu_cxx::__alloc_traits): Add template
2205         parameter with default template argument that causes substitution
2206         failures for types that cannot be allocators.
2207         * testsuite/21_strings/basic_string/cons/char/deduction.cc: New.
2208         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: New.
2210 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
2212         PR libstdc++/80939
2213         * include/std/variant (__erased_ctor, __erased_assign, __erased_swap)
2214         (__erased_hash): Remove constexpr specifier and qualify calls to
2215         __ref_cast.
2216         (__erased_dtor): Remove constexpr specifier and use _Destroy.
2218 2017-06-05  Jonathan Wakely  <jwakely@redhat.com>
2220         * include/bits/stl_iterator_base_funcs.h
2221         (__advance<_RandomAccessIterator, _Distance>): Optimize for next/prev
2222         cases where incrementing or decrementing a single step.
2224         * include/bits/shared_ptr_base.h (__shared_ptr::owner_before)
2225         (__weak_ptr::owner_before, _Sp_owner_less::operator()): Add noexcept
2226         specifiers as per LWG 2873 and LWG 2942.
2227         * testsuite/20_util/owner_less/noexcept.cc: New.
2228         * testsuite/20_util/shared_ptr/observers/owner_before.cc: Test
2229         noexcept guarantees.
2230         * testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
2232 2017-06-03  Andreas Schwab  <schwab@linux-m68k.org>
2234         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
2236 2017-06-03  Eric Botcazou  <ebotcazou@adacore.com>
2238         * src/filesystem/dir.cc (fs::_Dir::advance): Use std::exchange.
2240 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
2242         PR libstdc++/80624
2243         * doc/xml/manual/status_cxx2011.xml: Document to_int_type behaviour.
2244         * include/bits/char_traits.h (char_traits<char16_t>::to_int_type):
2245         Transform eof value to U+FFFD.
2246         * testsuite/21_strings/char_traits/requirements/char16_t/eof.cc: New.
2247         * testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc: New.
2248         * testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc: New.
2250         * libsupc++/Makefile.am: Remove custom targets for files that need to
2251         be compiled as C++11 or C++14.
2252         * libsupc++/Makefile.in: Regenerate.
2253         * libsupc++/del_ops.cc: Use pragma to disable -Wsized-deallocation
2254         warnings.
2255         * libsupc++/del_opvs.cc: Likewise.
2257 2017-06-02  Richard Biener  <rguenther@suse.de>
2258         Markus Eisenmann  <meisenmann.lba@fh-salzburg.ac.at>
2260         PR libstdc++/80721
2261         * libsupc++/eh_alloc.cc (pool::free): Keep list properly
2262         sorted and add missing freelist item merging cases.
2264 2017-06-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2266         (GLIBCXX_CROSSCONFIG): Handle *-solaris* like *-linux* etc.
2267         Remove *-solaris* section.
2268         * configure: Regenerate.
2270 2017-05-31  Jonathan Wakely  <jwakely@redhat.com>
2272         PR libstdc++/80893
2273         * include/bits/stl_bvector.h (vector<bool>::_M_initialize): Avoid
2274         null pointer dereference when size is zero.
2275         * testsuite/23_containers/vector/bool/80893.cc: New.
2276         * testsuite/util/testsuite_allocator.h (PointerBase::PointerBase):
2277         Add non-explicit constructor from nullptr.
2278         (PointerBase::derived() const): Add const-qualified overload.
2280 2017-05-20  Tim Shen  <timshen@google.com>
2282         PR libstdc++/80737
2283         * include/std/variant(variant::variant): SFINAE on is_same first.
2284         * testsuite/20_util/variant/any.cc: test case.
2286 2017-05-24  Jonathan Wakely  <jwakely@redhat.com>
2288         * src/c++11/random.cc (random_device::_M_getentropy): Use __CHAR_BIT__
2289         instead of fixed number of bits.
2291 2017-05-24  Andreas Schwab  <schwab@suse.de>
2293         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
2294         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise.
2296 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
2297             Jonathan Wakely  <jwakely@redhat.com>
2299         PR libstdc++/67578
2300         * acinclude.m4: Bump libtool_VERSION.
2301         * config/abi/pre/gnu.ver: Create GLIBCXX_3.4.24 with new symbol.
2302         * config.h.in: Regenerate.
2303         * configure: Regenerate.
2304         * configure.ac: Add test for <linux/random.h>.
2305         * doc/xml/manual/abi.xml: Document new library version.
2306         * include/bits/random.h (random_device::entropy)
2307         [_GLIBCXX_USE_RANDOM_TR1]: Add call to new _M_getentropy member.
2308         (random_device::_M_getentropy): Declare.
2309         * src/c++11/random.cc (random_device::_M_getentropy): Define.
2310         * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.24 to known
2311         versions, and make it the latest version.
2313 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
2315         PR libstdc++/67214
2316         * include/bits/locale_facets.tcc (num_get::_M_extract_int): Add
2317         explicit conversion to avoid signed overflow.
2319 2017-05-19  Jonathan Wakely  <jwakely@redhat.com>
2321         PR libstdc++/80796
2322         * include/bits/stl_algo.h (search): Add new overload for C++17.
2323         * testsuite/25_algorithms/search/searcher.cc: New.
2325 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
2327         PR libstdc++/80478
2328         * include/std/functional (_Mem_fn_traits_base): Add specializations
2329         for noexcept member function types.
2330         * testsuite/20_util/function_objects/mem_fn/80478.cc: New test.
2332 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
2334         * doc/xml/manual/policy_data_structures.xml: Fix typo.
2335         * doc/xml/manual/test_policy_data_structures.xml: Likewise.
2336         * doc/html/*: Regenerate.
2338         * doc/xml/manual/abi.xml: Document latest library versions.
2339         * doc/xml/manual/build_hacking.xml: Document requirement to update
2340         abi.xml when bumping library versions.
2341         * doc/html/*: Regenerate.
2343 2017-05-17  Jonathan Wakely  <jwakely@redhat.com>
2345         * include/bits/refwrap.h: Fix Doxygen warning.
2346         * include/bits/specfun.h: Likewise.
2347         * include/bits/std_function.h: Likewise.
2348         * include/bits/stl_algo.h (set_union, set_intersection)
2349         (set_difference, set_symmetric_difference): Add Doxygen @param tags
2350         for output iterator parameters.
2351         * include/bits/stl_iterator.h (inserter): Add Doxygen @param tag for
2352         iterator parameter.
2353         * include/std/mutex (try_lock, lock): Change Mutex to Lockable in
2354         Doxygen comments.
2356 2017-05-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
2358         Implement new C++ intrinsics __is_assignable and __is_constructible.
2359         * include/std/type_traits (__do_is_static_castable_impl): Remove.
2360         (__is_static_castable_impl, __is_static_castable_safe): Likewise.
2361         (__is_static_castable, __do_is_direct_constructible_impl): Likewise.
2362         (__is_direct_constructible_impl): Likewise.
2363         (__is_direct_constructible_new_safe): Likewise.
2364         (__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise.
2365         (__is_direct_constructible_ref_cast): Likewise.
2366         (__is_direct_constructible_new, __is_direct_constructible): Likewise.
2367         (__do_is_nary_constructible_impl): Likewise.
2368         (__is_nary_constructible_impl, __is_nary_constructible): Likewise.
2369         (__is_constructible_impl): Likewise.
2370         (is_constructible): Call the intrinsic.
2371         (__is_assignable_helper): Remove.
2372         (is_assignable): Call the intrinsic.
2373         (is_trivially_constructible): Likewise.
2374         (__is_trivially_copy_constructible_impl): New.
2375         (is_trivially_copy_constructible): Use it.
2376         (__is_trivially_move_constructible_impl): New.
2377         (is_trivially_move_constructible): Use it.
2378         (is_trivially_assignable): Call the intrinsic.
2379         (__is_trivially_copy_assignable_impl): New.
2380         (is_trivially_copy_assignable): Use it.
2381         (__is_trivially_move_assignable_impl): New.
2382         (is_trivially_move_assignable): Use it.
2383         (testsuite/20_util/declval/requirements/1_neg.cc): Adjust.
2384         (testsuite/20_util/is_trivially_copy_assignable/value.cc):
2385         Add test for void.
2386         (testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise.
2387         (testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise.
2388         (testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise.
2389         (testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust.
2390         (testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc):
2391         Likewise.
2393 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
2395         * testsuite/experimental/source_location/1.cc: Change expected result
2396         for source_location::current() used in default member initializer.
2398         * doc/xml/manual/status_cxx2017.xml: Update status table.
2399         * doc/html/*: Regenerate.
2400         * include/Makefile.am: Add new header.
2401         * include/Makefile.in: Regenerate.
2402         * include/experimental/source_location: New header implementing N4519.
2403         * testsuite/experimental/source_location/1.cc: New test.
2405         PR libstdc++/80285
2406         * include/bits/shared_ptr_base.h [!__cpp_rtti] (type_info): Declare
2407         outside versioned namespace.
2409         * configure: Regenerate.
2411 2017-05-16  Marc Glisse  <marc.glisse@inria.fr>
2413         * include/std/optional (_Optional_base::_M_get): Check precondition.
2414         * testsuite/20_util/optional/cons/value_neg.cc: Update line numbers.
2416 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
2418         * doc/xml/manual/appendix_contributing.xml: Link to test docs and
2419         note higher DejaGnu version requirement.
2420         * doc/html/*: Regenerate.
2422         * doc/xml/manual/appendix_contributing.xml: Link to the list of bad
2423         identifiers.
2424         * doc/html/*: Regenerate.
2426 2017-05-15  Jonathan Wakely  <jwakely@redhat.com>
2428         PR libstdc++/80761
2429         * include/bits/node_handle.h (_Node_insert_return): Reorder members.
2430         (tuple_size, tuple_element): Remove partial specializations.
2431         * include/bits/stl_tree.h (_Rb_tree::insert_return_type): Use
2432         const_iterator for std::set.
2433         * testsuite/23_containers/map/modifiers/extract.cc: New.
2434         * testsuite/23_containers/set/modifiers/extract.cc: New.
2435         * testsuite/23_containers/unordered_map/modifiers/extract.cc: New.
2436         * testsuite/23_containers/unordered_set/modifiers/extract.cc: New.
2438 2017-05-12  Jonathan Wakely  <jwakely@redhat.com>
2440         PR libstdc++/78939
2441         * include/std/utility (tuple_size<cv T>): Only define partial
2442         specializations when tuple_size<T>::value is valid.
2443         * testsuite/20_util/tuple/78939.cc: New.
2444         * testsuite/20_util/tuple/cv_tuple_size_neg.cc: New.
2446 2017-05-11  François Dumont  <fdumont@gcc.gnu.org>
2448         * include/bits/stl_tree.h [_GLIBCXX_INLINE_VERSION]
2449         (_Rb_tree_impl<>): Remove _Is_pod_comparator
2450         template parameter.
2452         * include/debug/formatter.h [_GLIBCXX_INLINE_VERSION]
2453         (__gnu_debug::_Error_formatter::_Parameter::_M_print_field): Remove.
2454         (__gnu_debug::_Error_formatter::_Parameter::_M_print_description):
2455         Remove.
2456         (__gnu_debug::_Error_formatter::_M_format_word): Remove.
2457         (__gnu_debug::_Error_formatter::_M_print_word): Remove.
2458         (__gnu_debug::_Error_formatter::_M_print_string): Remove.
2459         (__gnu_debug::_Error_formatter::_M_get_max_length): Remove.
2460         * src/c++11/debug.cc: Adapt.
2461         * config/abi/pre/gnu-versioned-namespace.ver: Adapt.
2463 2017-05-11  Jonathan Wakely  <jwakely@redhat.com>
2465         * doc/xml/manual/allocator.xml: Fix ViewCVS URLs.
2466         * doc/xml/manual/mt_allocator.xml: Likewise.
2467         * doc/html/*: Regenerate.
2469         PR libstdc++/80285
2470         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Define
2471         function to get unique fake std::type_info reference.
2472         (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Compare to
2473         _S_ti() fake reference.
2474         (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Share
2475         single implementation with or without RTTI enable.
2476         [!__cpp_rtti]: Pass fake reference to _M_get_deleter.
2477         * testsuite/20_util/shared_ptr/creation/alloc.cc: Change expected
2478         allocation and deallocation counts.
2479         * testsuite/20_util/shared_ptr/creation/single_allocation.cc: New.
2480         * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
2481         New.
2483 2017-05-10  François Dumont  <fdumont@gcc.gnu.org>
2485         Bump version namespace.
2486         * config/abi/pre/gnu-versioned-namespace.ver: Bump version namespace
2487         from __7 to __8. Bump GLIBCXX_7.0 to GLIBCXX_8.0.
2488         * acinclude.m4 (libtool_VERSION): Bump to 8:0:0.
2489         * include/bits/c++config: Adapt.
2490         * include/bits/regex.h: Adapt.
2491         * include/experimental/bits/fs_fwd.h: Adapt.
2492         * include/experimental/bits/lfts_config.h: Adapt.
2493         * include/std/variant: Adapt.
2494         * python/libstdcxx/v6/printers.py: Adapt.
2495         * testsuite/libstdc++-prettyprinters/48362.cc: Adapt.
2497         * include/bits/stl_algobase.h (std::__iter_swap<false>): Remove
2498         _GLIBCXX_MOVE usage.
2500 2017-05-09  Jason Merrill  <jason@redhat.com>
2502         * testsuite/24_iterators/container_access.cc (test03): Make il3 static.
2504 2017-05-08  Jonathan Wakely  <jwakely@redhat.com>
2506         * include/std/optional: Use a separate static_assert per condition.
2507         * testsuite/20_util/optional/cons/value_neg.cc: Update dg-error line
2508         numbers.
2510         * doc/xml/manual/mt_allocator.xml: Clarify deallocation behaviour.
2511         * doc/html/*: Regenerate.
2513 2017-05-02  Hugo Beauzée-Luyssen <hugo@beauzee.fr>
2515         PR libstdc++/69506
2516         * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_WEAK_REF): Define.
2518 2017-04-29  François Dumont  <fdumont@gcc.gnu.org>
2520         * testsuite/libstdc++-prettyprinters/48362.cc: Replace a regexp-test
2521         by a note-test.
2523 2017-04-28  Jonathan Wakely  <jwakely@redhat.com>
2525         PR libstdc++/80553
2526         * include/bits/stl_construct.h (_Destroy, _Destroy_n): Add static
2527         assertions to ensure type is destructible.
2528         (destroy_at, destroy, destroy_n): Move from stl_uninitialized.h.
2529         * include/bits/stl_uninitialized.h (destroy_at, destroy, destroy_n):
2530         Move to stl_construct.h.
2531         * testsuite/20_util/specialized_algorithms/memory_management_tools/
2532         destroy_neg.cc: New test.
2533         * testsuite/23_containers/vector/cons/destructible_neg.cc: New test.
2535         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
2536         superfluous "" in dg-error.
2538 2017-04-28  Tom de Vries  <tom@codesourcery.com>
2540         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
2541         superfluous '{ target *-*-* }' in dg-(error|warning|message|bogus).
2543 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
2545         * include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
2546         (PB_DS_CLASS_C_DEC::end()): Remove redundant const in cast type.
2547         * testsuite/util/testsuite_rng.h (twister_rand_gen::get_prob()):
2548         Likewise.
2550 2017-04-26  Jonathan Wakely  <jwakely@redhat.com>
2552         * testsuite/23_containers/deque/allocator/move_assign-2.cc: Improve
2553         comment. Ensure first test works because allocator type propagates and
2554         not because is_always_equal is true.
2555         * testsuite/23_containers/vector/52591.cc: Likewise. Restore original
2556         testcase that instantiates the move-assignment operator.
2558 2017-04-24  Jonathan Wakely  <jwakely@redhat.com>
2560         PR libstdc++/80506
2561         * include/bits/random.tcc (gamma_distribution::operator()): Fix magic
2562         number used in loop condition.
2564         PR libstdc++/80504
2565         * include/bits/refwrap.h (ref, cref): Qualify calls.
2566         * testsuite/20_util/reference_wrapper/80504.cc: New test.
2568         PR libstdc++/80493
2569         * include/experimental/optional (optional::swap): Fix exception
2570         specification.
2572 2017-04-21  Jonathan Wakely  <jwakely@redhat.com>
2574         PR libstdc++/80316
2575         * include/std/future (_State_baseV2::_Setter::operator()): Remove
2576         _S_check calls that are done after the pointer to the shared state is
2577         already dereferenced.
2578         (_State_baseV2::_Setter<_Res, void>): Define specialization for void
2579         as partial specialization so it can be defined within the definition
2580         of _State_baseV2.
2581         (_State_baseV2::__setter): Call _S_check.
2582         (_State_baseV2::__setter(promise<void>*)): Add overload for use by
2583         promise<void>::set_value and promise<void>::set_value_at_thread_exit.
2584         (promise<T>, promise<T&>, promise<void>): Make _State a friend.
2585         (_State_baseV2::_Setter<void, void>): Remove explicit specialization.
2586         (promise<void>::set_value, promise<void>::set_value_at_thread_exit):
2587         Use new __setter overload.
2588         * testsuite/30_threads/promise/members/at_thread_exit2.cc: New test.
2589         * testsuite/30_threads/promise/members/set_exception.cc: Test
2590         promise<T&> and promise<void> specializations.
2591         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
2592         Test for no_state error condition.
2593         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
2595         * include/backward/auto_ptr.h: Ignore deprecated warnings from use
2596         of auto_ptr.
2597         * include/bits/shared_ptr.h: Likewise.
2598         * include/bits/shared_ptr_base.h: Likewise.
2599         * include/bits/unique_ptr.h: Likewise.
2600         * libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc: Adjust
2601         dg-error lineno.
2602         * libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc: Likewise.
2603         * libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc:
2604         Likewise.
2605         * libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc:
2606         Likewise.
2608 2017-04-20  Edward Smith-Rowland  <3dw4rd@verizon.net>
2610         PR libstdc++/68397 std::tr1::expint fails ... long double arguments.
2611         * include/tr1/exp_integral.tcc: Increase iteration limits.
2612         * testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
2613         pr68397.cc: New test.
2614         * testsuite/special_functions/14_expint/pr68397.cc: New test.
2616 2017-04-20  Jonathan Wakely  <jwakely@redhat.com>
2618         PR libstdc++/79862
2619         * include/std/atomic [!_GLIBCXX_USE_C99_STDINT_TR1] (atomic_int8_t)
2620         (atomic_uint8_t, atomic_int16_t, atomic_uint16_t, atomic_int32_t,
2621         (atomic_uint32_t, atomic_int64_t, atomic_uint64_t)
2622         (atomic_int_least8_t, atomic_uint_least8_t, atomic_int_least16_t)
2623         (atomic_uint_least16_t, atomic_int_least32_t, atomic_uint_least32_t)
2624         (atomic_int_least64_t, atomic_uint_least64_t, atomic_int_fast8_t)
2625         (atomic_uint_fast8_t, atomic_int_fast16_t, atomic_uint_fast16_t)
2626         (atomic_int_fast32_t, atomic_uint_fast32_t, atomic_int_fast64_t)
2627         (atomic_uint_fast64_t, atomic_intmax_t, atomic_uintmax_t): Don't
2628         define.
2630 2017-04-19  Jonathan Wakely  <jwakely@redhat.com>
2632         * doc/xml/manual/abi.xml: Rephrase one of the references to the
2633         Itanium C++ ABI.
2634         * doc/xml/manual/test.xml: Document DejaGnu 1.5.3 requirement.
2635         * doc/html/*: Regenerate.
2637         * libsupc++/new: Update comment on #endif directive.
2639         PR libstdc++/80448
2640         * include/experimental/bits/fs_dir.h (directory_iterator)
2641         (recursive_directory_iterator): Remove noexcept from defaulted
2642         constructors.
2644         PR libstdc++/80446
2645         * include/std/type_traits (is_aggregate): Change __has_builtin checks.
2646         * libsupc++/new (launder): Likewise.
2648 2017-04-18  Jonathan Wakely  <jwakely@redhat.com>
2650         * include/std/functional (default_searcher, __boyer_moore_array_base)
2651         (__is_std_equal_to, __boyer_moore_base_t, boyer_moore_searcher)
2652         (boyer_moore_horspool_searcher): Remove redundant namespace
2653         qualification.
2654         (default_searcher::operator()): Construct return value early and
2655         advance second member in-place.
2656         (boyer_moore_horspool_searcher::operator()): Increment random access
2657         iterator directly instead of using std::next.
2658         (boyer_moore_searcher::operator()): Fix return value.
2659         * testsuite/20_util/function_objects/searchers.cc: Check both parts
2660         of return values.
2662 2017-04-12  Gerald Pfeifer  <gerald@pfeifer.com>
2664         * doc/xml/faq.xml: Update reference link to C++ ABI for Itanium.
2665         * doc/xml/manual/abi.xml. Ditto (thrice).
2667 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
2669         * doc/xml/manual/status_cxx2017.xml: Remove duplicate table entry.
2670         * doc/html/*: Regenerate.
2672         * testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests
2673         that no longer fail.
2675         * include/bits/ios_base.h: Correct comment.
2676         * testsuite/util/testsuite_hooks.h: Likewise.
2678         * doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
2679         * doc/xml/manual/appendix_contributing.xml (contrib.organization): Add
2680         directories for debug, parallel and profile headers.
2681         * doc/html/*: Regenerate.
2683         * include/bits/char_traits.h (__gnu_cxx::char_traits): Add
2684         _GLIBCXX14_CONSTEXPR on assign, compare, find, and length.
2685         (std::char_traits<char>, std::char_traits<wchar_t>): Add
2686         _GLIBCXX17_CONSTEXPR on assign.
2687         (std::char_traits<char16_t>, std::char_traits<char32_t>): Add
2688         _GLIBCXX17_CONSTEXPR on assign, compare, find, and length.
2689         * testsuite/21_strings/char_traits/requirements/
2690         constexpr_functions_c++17.cc: New test.
2692 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
2694         PR libstdc++/79141
2695         * include/bits/stl_pair.h (__nonesuch_no_braces): New.
2696         (operator=(typename conditional<
2697         __and_<is_copy_assignable<_T1>,
2698         is_copy_assignable<_T2>>::value,
2699         const pair&, const __nonesuch&>::type)): Change __nonesuch
2700         to __nonesuch_no_braces.
2701         (operator=(typename conditional<
2702         __not_<__and_<is_copy_assignable<_T1>,
2703         is_copy_assignable<_T2>>>::value,
2704         const pair&, const __nonesuch&>::type)): Likewise.
2705         (operator=(typename conditional<
2706         __and_<is_move_assignable<_T1>,
2707         is_move_assignable<_T2>>::value,
2708         pair&&, __nonesuch&&>::type)): Likewise.
2709         * testsuite/20_util/pair/79141.cc: New.
2711 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
2713         Implement std::is_aggregate.
2714         * include/std/type_traits (is_aggregate, is_aggregate_v): New.
2715         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
2716         New.
2717         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
2718         * testsuite/20_util/is_aggregate/value.cc: Likewise.
2720 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
2722         Adjust optional's pretty printer for LWG 2900.
2723         * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter.__init__):
2724         Look at the nested payload in case of non-experimental optional.
2726 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
2728         Implement LWG 2900, The copy and move constructors
2729         of optional are not constexpr.
2730         * include/std/optional (_Optional_payload): New.
2731         (_Optional_base): Remove the bool parameter.
2732         (_Optional_base<_Tp, false>): Remove.
2733         (_Optional_base()): Adjust.
2734         (_Optional_base(nullopt_t)): Likewise.
2735         (_Optional_base(in_place_t, _Args&&...)): Likewise.
2736         (_Optional_base(in_place_t, initializer_list<_Up>, _Args&&...)):
2737         Likewise.
2738         (_Optional_base(const _Optional_base&)): Likewise.
2739         (_Optional_base(_Optional_base&&)): Likewise.
2740         (operator=(const _Optional_base&)): Likewise.
2741         (operator=(_Optional_base&&)): Likewise.
2742         (~_Optional_base()): Remove.
2743         (_M_is_engaged()): Adjust.
2744         (_M_get()): Likewise.
2745         (_M_construct(_Args&&...)): Likewise.
2746         (_M_destruct()): Likewise.
2747         (_M_reset()): Likewise.
2748         (_Optional_base::_Empty_byte): Remove.
2749         (_Optional_base::_M_empty): Remove.
2750         (_Optional_base::_M_payload): Adjust.
2751         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
2752         * testsuite/20_util/optional/constexpr/cons/value.cc: Add tests.
2754 2017-03-28  Jonathan Wakely  <jwakely@redhat.com>
2756         PR libstdc++/80137
2757         * include/bits/random.tcc (generate_canonical): Use std::nextafter
2758         or numeric_limits::epsilon() to reduce out-of-range values.
2759         * testsuite/26_numerics/random/uniform_real_distribution/operators/
2760         64351.cc: Verify complexity requirement is met.
2762         * doc/xml/manual/abi.xml: Add xml:id anchor.
2763         * doc/xml/manual/using.xml (manual.intro.using.macros): Document
2764         _GLIBCXX_RELEASE. Link to new anchor for __GLIBCXX__ notes.
2765         (concurrency.io.structure): Add markup.
2766         * doc/html/*: Regenerate.
2768         PR libstdc++/80229
2769         * include/bits/shared_ptr_base.h
2770         (__shared_ptr::_M_enable_shared_from_this_with): Change parameters to
2771         non-const and then use remove_cv to get unqualified type.
2772         * testsuite/20_util/enable_shared_from_this/members/const.cc: Don't
2773         cast away constness on object created const.
2774         * testsuite/20_util/shared_ptr/cons/80229.cc: New test.
2776 2017-03-26  Markus Trippelsdorf  <markus@trippelsdorf.de>
2778         PR libstdc++/80183
2779         * include/bits/stl_tree.h:
2780         (_Rb_tree_header::_M_move_data(_Rb_tree_header&)): Also save _M_color.
2782 2017-03-23  Jonathan Wakely  <jwakely@redhat.com>
2784         * testsuite/23_containers/array/tuple_interface/
2785         tuple_element_debug_neg.cc: Adjust dg-error.
2786         * testsuite/23_containers/list/operations/78389.cc: Fix less-than to
2787         define a valid strict weak ordering.
2788         * testsuite/23_containers/priority_queue/67085.cc: Disable test for
2789         Debug Mode, due to debug checks making extra copies of predicate.
2790         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
2791         Likewise.
2793         * doc/xml/faq.xml: Add link.
2794         * doc/xml/manual/backwards_compatibility.xml: Remove outdated
2795         information on pre-ISO headers. Replace broken link to C++ FAQ Lite.
2796         * doc/xml/manual/io.xml: Update broken link.
2797         * doc/html/*: Regenerate.
2799 2017-03-23  Daniel Kruegler  <daniel.kruegler@gmail.com>
2801         Implement LWG 2686, Why is std::hash specialized for error_code,
2802         but not error_condition?
2803         * include/std/system_error (hash<error_condition>): Define for C++17.
2804         * testsuite/20_util/hash/operators/size_t.cc (hash<error_condition>):
2805         Instantiate test for error_condition.
2806         * testsuite/20_util/hash/requirements/explicit_instantiation.cc
2807         (hash<error_condition>): Instantiate hash<error_condition>.
2809         * include/bits/c++config (_GLIBCXX17_INLINE): Define.
2810         * include/bits/regex_constants.h (All std::regex_constants constants):
2811         Add _GLIBCXX17_INLINE as per P0607R0.
2812         * include/bits/std_mutex.h (defer_lock, try_to_lock, adopt_lock):
2813         Likewise.
2814         * include/bits/stl_pair.h (piecewise_construct): Likewise.
2815         * include/bits/uses_allocator.h (allocator_arg, uses_allocator_v)
2816         (__is_uses_allocator_constructible_v)
2817         (__is_nothrow_uses_allocator_constructible_v): Likewise.
2818         * include/std/chrono (treat_as_floating_point_v): Likewise.
2819         * include/std/functional (is_bind_expression_v, is_placeholder_v):
2820         Likewise.
2821         * include/std/optional (nullopt): Likewise.
2822         * include/std/ratio (ratio_equal_v, ratio_not_equal_v, ratio_less_v)
2823         ratio_less_equal_v, ratio_greater_v, ratio_greater_equal_v): Likewise.
2824         * include/std/system_error (is_error_code_enum_v)
2825         (is_error_condition_enum_v): Likewise.
2826         * include/std/tuple (tuple_size_v, ignore): Likewise.
2827         (ignore): Declare ignore constexpr as per LWG 2773, declare assignment
2828         constexpr as per LWG 2933.
2829         * include/std/type_traits (All variable templates): Add
2830         _GLIBCXX17_INLINE as per P0607R0.
2831         * include/std/variant (variant_size_v, variant_npos, __index_of_v)
2832         (__tuple_count_v, __exactly_once): Likewise.
2833         * testsuite/18_support/headers/new/synopsis.cc
2834         (hardware_destructive_interference_size)
2835         (hardware_constructive_interference_size): Likewise for commented-out
2836         variables.
2837         * testsuite/20_util/tuple/creation_functions/constexpr.cc: Add new
2838         test function for constexpr std::ignore (LWG 2773).
2839         * testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc: New
2840         test for LWG 2933.
2842 2017-03-22  Jonathan Wakely  <jwakely@redhat.com>
2844         * include/bits/shared_ptr.h (shared_ptr, weak_ptr): Add deduction
2845         guides for C++17.
2846         * include/bits/std_function.h (function): Likewise.
2847         * include/bits/stl_pair.h (pair): Likewise.
2848         * include/debug/array (__gnu_debug::array): Likewise.
2849         * include/std/array (array): Likewise.
2850         * include/std/functional (make_default_searcher)
2851         (make_boyer_moore_searcher, make_boyer_moore_horspool_searcher):
2852         Remove generator functions.
2853         * include/std/tuple (tuple): Add deduction guides.
2854         * include/std/valarray (valarray): Likewise.
2855         * testsuite/20_util/function_objects/searchers.cc: Adjust to use
2856         class template argument deduction instead of generator functions.
2857         * testsuite/20_util/function/cons/deduction.cc: New test.
2858         * testsuite/20_util/optional/cons/deduction_guide.cc: Rename to ...
2859         * testsuite/20_util/optional/cons/deduction.cc: ... here.
2860         * testsuite/20_util/pair/cons/deduction.cc: New test.
2861         * testsuite/20_util/shared_ptr/cons/deduction.cc: New test.
2862         * testsuite/20_util/tuple/cons/deduction.cc: New test.
2863         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error.
2864         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: New test.
2865         * testsuite/20_util/weak_ptr/cons/deduction.cc: New test.
2866         * testsuite/23_containers/array/cons/deduction.cc: New test.
2867         * testsuite/23_containers/array/cons/deduction_neg.cc: New test.
2868         * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
2869         Adjust dg-error.
2870         * testsuite/23_containers/array/tuple_interface/get_neg.cc: Likewise.
2871         * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
2872         Likewise.
2873         * testsuite/26_numerics/valarray/deduction.cc: New test.
2874         * testsuite/30_threads/lock_guard/cons/deduction.cc: New test.
2875         * testsuite/30_threads/scoped_lock/cons/deduction.cc: New test.
2876         * testsuite/30_threads/unique_lock/cons/deduction.cc: New test.
2878 2017-03-20  François Dumont  <fdumont@gcc.gnu.org>
2880         * include/bits/stl_deque.h (deque): Access allocator value_type only if
2881         concept checks are enabled.
2882         * include/bits/stl_stack.h (stack): Likewise.
2883         * include/bits/stl_vector.h (vector): Likewise.
2884         * include/bits/stl_list.h (list): Likewise and check
2885         _SGIAssignableConcept only in C++03.
2886         * include/bits/stl_map.h (map): Likewise.
2887         * include/bits/stl_set.h (set): Likewise.
2888         * include/bits/stl_multimap.h (multimap): Likewise.
2889         * include/bits/stl_multiset.h (multiset): Likewise.
2890         * include/bits/stl_queue.h (queue, priority_queue): Likewise.
2892 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
2894         * doc/xml/manual/appendix_contributing.xml: Convert link to
2895         ansi.org to https.
2896         Update link to the C++ standard at ansi.org.
2898         * doc/xml/faq.xml: Remove information redundant with the above;
2899         instead add a reference.
2901 2017-03-17  Jonathan Wakely  <jwakely@redhat.com>
2903         * src/c++11/codecvt.cc (range): Add non-type template parameter and
2904         define oerloaded operators for reading and writing code units.
2905         (range<Elem, false>): Define partial specialization for accessing
2906         wide characters in potentially unaligned byte ranges.
2907         (ucs2_span(const char16_t*, const char16_t*, ...))
2908         (ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
2909         to range<const char16_t, false> in order to avoid unaligned reads.
2910         (__codecvt_utf16_base<char16_t>::do_out)
2911         (__codecvt_utf16_base<char32_t>::do_out)
2912         (__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for
2913         unaligned data to avoid unaligned writes.
2914         (__codecvt_utf16_base<char16_t>::do_in)
2915         (__codecvt_utf16_base<char32_t>::do_in)
2916         (__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return
2917         error if there are unprocessable trailing bytes.
2918         (__codecvt_utf16_base<char16_t>::do_length)
2919         (__codecvt_utf16_base<char32_t>::do_length)
2920         (__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type
2921         range<const char16_t, false> to span functions.
2922         * testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.
2924 2017-03-16  Jonathan Wakely  <jwakely@redhat.com>
2926         PR libstdc++/79980
2927         * src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.
2929         PR libstdc++/80041
2930         * src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out)
2931         (__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to
2932         char16_t to work with UTF-16 instead of UTF-8.
2933         * testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.
2935         * src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>)
2936         (codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>)
2937         (__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>)
2938         (__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>)
2939         (__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>)
2940         (__codecvt_utf8_utf16_base<char32_t>)
2941         (__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and
2942         do_max_length() return values.
2943         * testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
2944         * testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
2945         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.
2947         PR libstdc++/79980
2948         * include/bits/locale_conv.h (__do_str_codecvt): Set __count on
2949         error path.
2950         * src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
2951         for manipulating codecvt_mode values.
2952         (read_utf16_bom): Compare input to BOM constants instead of integral
2953         constants that depend on endianness.  Take mode parameter by
2954         reference and adjust it, to distinguish between no BOM present and
2955         UTF-16BE BOM present.
2956         (ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
2957         (surrogates): New enumeration type.
2958         (utf16_in, utf16_out): Add surrogates parameter to choose between
2959         UTF-16 and UCS2 behaviour.
2960         (utf16_span, ucs2_span): Use std::min not std::max.
2961         (ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
2962         (ucs2_in): Likewise. Adjust calls to read_utf16_bom.
2963         * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
2964         * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.
2966         PR libstdc++/79511
2967         * src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff
2968         as a surrogate pair.
2969         (__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness
2970         for internal representation.
2971         (__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise.
2972         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.
2974         PR libstdc++/80064
2975         * include/bits/stl_heap.h (__is_heap, push_heap, __adjust_heap)
2976         (pop_heap, make_heap, sort_heap, is_heap_until, is_heap): Cope with
2977         invalid instantiations using function types for _Compare argument.
2978         * testsuite/25_algorithms/make_heap/80064.cc: New test.
2980         PR libstdc++/67440
2981         * python/libstdcxx/v6/printers.py (find_type): Avoid gdb.Type.name
2982         for GDB 7.6 compatibility, use gdb.Type.unqualified instead.
2984 2017-03-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
2986         Implement LWG 2857, {variant,optional,any}::emplace should
2987         return the constructed value.
2988         * include/std/any (emplace(_Args&&...)): Change the return type and
2989         return a reference to the constructed value.
2990         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
2991         * include/std/optional (emplace(_Args&&...)): Likewise.
2992         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
2993         * include/std/variant (emplace<_Tp>(_Args&&...)): Likewise.
2994         (emplace<_Tp>(initializer_list<_Up>, _Args&&...)): Likewise.
2995         (emplace<_Np>(_Args&&...)): Likewise.
2996         (emplace<_Np>(initializer_list<_Up>, _Args&&...)): Likewise.
2997         * testsuite/20_util/any/assign/emplace.cc: Add tests for
2998         checking the return value of emplace.
2999         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
3000         * testsuite/20_util/optional/assignment/6.cc: Add tests for
3001         checking the return value of emplace.
3002         * testsuite/20_util/variant/run.cc: Likewise.
3004 2017-03-15  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
3006         PR libstdc++/62045
3007         * include/ext/pb_ds/qdetail/binary_heap_/binary_heap_.hpp
3008         (is_heap): Remove.
3009         (push_heap): Remove the wrong checking using is_heap.
3010         (make_heap): Remove the assertion using is_heap.
3011         * include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
3012         (modify): Ditto.
3013         (resize_for_insert_if_needed): Add PB_DS_ASSERT_VALID after
3014         calling make_heap.
3016 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
3018         PR libstdc++/62045
3019         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
3020         New test.
3021         * testsuite/ext/pb_ds/regression/priority_queues.cc: Fix copy&paste
3022         error in comment.
3024 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
3026         * acinclude.m4 (GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Fix typo in
3027         comment.
3028         * config.h.in: Regenerate.
3029         * configure: Regenerate.
3030         * doc/Makefile.in: Regenerate.
3032 2017-03-14  Jonathan Wakely  <jwakely@redhat.com>
3034         PR libstdc++/79162
3035         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3036         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Replace
3037         with a constrained template.
3038         [!_GLIBCXX_USE_CXX11_ABI]
3039         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Likewise.
3040         * testsuite/21_strings/basic_string/cons/char/79162.cc: New test.
3041         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: New test.
3043 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3045         PR libstdc++/80034
3046         * include/bits/list.tcc (merge(list&&)): Use const for the size_t
3047         in the catch-block.
3048         (merge(list&&, _StrictWeakOrdering)): Likewise.
3049         * testsuite/23_containers/list/operations/80034.cc: New.
3051 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3053         Implement LWG 2806, Base class of bad_optional_access.
3054         * include/std/optional (bad_optional_access):
3055         Derive from std::exception.
3056         (bad_optional_access::bad_optional_access): Adjust.
3057         (bad_optional_access::what): New.
3058         (__throw_bad_optional_access(const char*)):
3059         Remove the parameter and adjust calls.
3060         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
3061         * testsuite/20_util/optional/typedefs.cc: Likewise.
3063 2017-03-12  Ville Voutilainen  <ville.voutilainen@gmail.com>
3065         Implement LWG 2934, optional<const T> doesn't compare with T.
3066         * include/std/optional
3067         (operator==(const optional<_Tp>&, const optional<_Tp>&)):
3068         Turn into operator==(const optional<_Tp>&, const optional<_Up>&).
3069         (operator!=(const optional<_Tp>&, const optional<_Tp>&)):
3070         Turn into operator!=(const optional<_Tp>&, const optional<_Up>&).
3071         (operator<(const optional<_Tp>&, const optional<_Tp>&)):
3072         Turn into operator<(const optional<_Tp>&, const optional<_Up>&.
3073         (operator>(const optional<_Tp>&, const optional<_Tp>&)):
3074         Turn into operator>(const optional<_Tp>&, const optional<_Up>&.
3075         (operator<=(const optional<_Tp>&, const optional<_Tp>&)):
3076         Turn into operator<=(const optional<_Tp>&, const optional<_Up>&).
3077         (operator>=(const optional<_Tp>&, const optional<_Tp>&)):
3078         Turn into operator>=(const optional<_Tp>&, const optional<_Up>&).
3079         (operator==(const optional<_Tp>&, const _Tp&)):
3080         Turn into operator==(const optional<_Tp>&, const _Up&).
3081         (operator==(const _Tp&, const optional<_Tp>&)):
3082         Turn into operator==(const _Up&, const optional<_Tp>&).
3083         (operator!=(const optional<_Tp>&, const _Tp&)):
3084         Turn into operator!=(const optional<_Tp>&, const _Up&).
3085         (operator!=(const _Tp&, const optional<_Tp>&)):
3086         Turn into operator!=(const _Up&, const optional<_Tp>&).
3087         (operator<(const optional<_Tp>&, const _Tp&)):
3088         Turn into operator<(const optional<_Tp>&, const _Up&).
3089         (operator<(const _Tp&, const optional<_Tp>&)):
3090         Turn into operator<(const _Up&, const optional<_Tp>&).
3091         (operator>(const optional<_Tp>&, const _Tp&)):
3092         Turn into operator>(const optional<_Tp>&, const _Up&).
3093         (operator>(const _Tp&, const optional<_Tp>&)):
3094         Turn into operator>(const _Up&, const optional<_Tp>&).
3095         (operator<=(const optional<_Tp>&, const _Tp&)):
3096         Turn into operator<=(const optional<_Tp>&, const _Up&).
3097         (operator<=(const _Tp&, const optional<_Tp>&)):
3098         Turn into operator<=(const _Up&, const optional<_Tp>&).
3099         (operator>=(const optional<_Tp>&, const _Tp&)):
3100         Turn into operator>=(const optional<_Tp>&, const _Up&).
3101         (operator>=(const _Tp&, const optional<_Tp>&)):
3102         Turn into operator>=(const _Up&, const optional<_Tp>&).
3103         * testsuite/20_util/optional/relops/7.cc: New.
3105 2017-03-10  Jonathan Wakely  <jwakely@redhat.com>
3107         * testsuite/17_intro/names.cc: Undefine macros that clash with
3108         identifiers in AIX system headers.
3110         * include/bits/invoke.h (__invoke): Use __invoke_result instead of
3111         result_of, and __is_nothrow_invocable instead of
3112         __is_nothrow_callable.
3113         * include/bits/shared_ptr_base.h (__shared_ptr): Use __is_invocable
3114         instead of __is_callable.
3115         * include/std/functional (invoke): use invoke_result_t instead of
3116         result_of_t and is_nothrow_invocable instead of is_nothrow_callable.
3117         (_Not_fn): Use __invoke_result instead of result_of.
3118         * include/std/type_traits (__result_of_memobj, __result_of_memfun):
3119         Remove partial specializations for reference_wrapper types.
3120         (__result_of_impl): Use __inv_unwrap to strip reference_wrapper.
3121         (__invoke_result): Define replacement for result_of and then use it to
3122         define result_of.
3123         (__is_callable_impl, __is_callable, __is_nothrow_callable): Replace
3124         with __is_invocable_impl, __is_invocable, and __is_nothrow_invocable
3125         respectively.
3126         (invoke_result, invoke_result_t): Define for C++17.
3127         (is_callable, is_nothrow_callable): Replace with is_invocable,
3128         is_invocable_r, is_nothrow_invocable, and is_nothrow_invocable_r.
3129         (is_callable_v, is_nothrow_callable_v): Replace with is_invocable_v,
3130         is_invocable_r_v, is_nothrow_invocable_v, and is_nothrow_invocable_r_v.
3131         * include/std/variant (hash<variant<T...>>): Use is_nothrow_invocable_v
3132         instead of is_nothrow_callable_v.
3133         * testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
3134         main function.
3135         * testsuite/20_util/function_objects/not_fn/1.cc: Use is_invocable
3136         instead of is_callable.
3137         * testsuite/20_util/is_callable/*: Rename directory and adjust tests
3138         to use new traits.
3139         * testsuite/20_util/is_nothrow_callable/*: Likewise.
3140         * testsuite/20_util/optional/hash.cc: Use is_invocable_v instead of
3141         is_callable.
3142         * testsuite/20_util/variant/hash.cc: Likewise.
3144 2017-03-10  George Lander  <george.lander@arm.com>
3146         * acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
3147         _GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
3148         * configure: Regenerate.
3150 2017-03-09  Jonathan Wakely  <jwakely@redhat.com>
3152         * include/std/functional (_Not_fn): Define macro to simplify
3153         repetitive function definitions.
3155         * doc/xml/manual/status_cxx2017.xml: Document std::byte support.
3156         * include/c_global/cstddef (std::byte): Define for C++17.
3157         * testsuite/18_support/byte/global_neg.cc: New test.
3158         * testsuite/18_support/byte/ops.cc: New test.
3159         * testsuite/18_support/byte/requirements.cc: New test.
3161 2017-03-05  Jonathan Wakely  <jwakely@redhat.com>
3163         * doc/xml/manual/status_cxx2017.xml: Document P0156R2 status.
3164         * doc/html/*: Regenerate.
3165         * include/std/mutex (scoped_lock): Implement new C++17 template.
3166         * testsuite/30_threads/scoped_lock/cons/1.cc: New test.
3167         * testsuite/30_threads/scoped_lock/requirements/
3168         explicit_instantiation.cc: New test.
3169         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: New test.
3171 2017-03-02  Gerald Pfeifer  <gerald@pfeifer.com>
3172             François Dumont  <frs.dumont@gmail.com>
3173             Jonathan Wakely  <jwakely@redhat.com>
3175         * doc/xml/manual/debug_mode.xml: Update and simplify note
3176         on link- and run-time coexistence.
3178 2017-03-02  Jonathan Wakely  <jwakely@redhat.com>
3180         * testsuite/17_intro/headers/names.cc: Rename to ...
3181         * testsuite/17_intro/names.cc: ... here.
3183         PR libstdc++/79789
3184         * include/bits/hashtable_policy.h (__clp2): Use reserved names for
3185         parameters and local variables.
3186         * include/bits/ios_base.h (make_error_code, make_error_condition):
3187         Likewise.
3188         * include/bits/list.tcc (list::sort): Likewise.
3189         * include/bits/mask_array.h (mask_array): Likewise.
3190         * include/bits/regex.h (regex_token_iterator): Likewise.
3191         * include/bits/slice_array.h (slice_array): Likewise.
3192         * include/bits/stl_algo.h (__sample): Likewise.
3193         * include/std/memory (undeclare_no_pointers): Likewise.
3194         * include/std/type_traits (is_callable_v, is_nothrow_callable_v):
3195         Likewise.
3196         * libsupc++/exception_ptr.h (__dest_thunk): Likewise.
3197         * testsuite/17_intro/headers/names.cc: New test.
3199         PR libstdc++/79798
3200         * include/std/functional (bind::_Res_type_impl): Fix incorrect use of
3201         result_of that loses top-level cv-qualifiers.
3202         * testsuite/20_util/bind/79798.cc: New test.
3204 2017-03-01  Gerald Pfeifer  <gerald@pfeifer.com>
3206         * doc/xml/manual/documentation_hacking.xml: Tweak link to
3207         doxygen.org.
3209 2017-02-23  Jonathan Wakely  <jwakely@redhat.com>
3211         * include/experimental/iterator: Include <iterator>.
3212         * testsuite/experimental/iterator/requirements.cc: Check for contents
3213         of <iterator>.
3215 2017-02-19  Dinka Ranns  <dinka.ranns@googlemail.com>
3217         C++17 GB50 resolution
3218         * include/std/chrono (duration::operator++()): Add
3219         _GLIBCXX17_CONSTEXPR.
3220         (duration::operator++(int)): Likewise.
3221         (duration::operator--()): Likewise.
3222         (duration::operator--(int)): Likewise.
3223         (duration::operator+=(const duration&)): Likewise.
3224         (duration::operator-=(const duration&)): Likewise.
3225         (duration::operator*=(const rep&)): Likewise.
3226         (duration::operator/=(const rep&)): Likewise.
3227         (duration::operator%=(const rep&)): Likewise.
3228         (duration::operator%=(const duration&)): Likewise.
3229         (time_point::operator+=(const duration&)): Likewise.
3230         (time_point::operator-=(const duration&)): Likewise.
3231         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: New test.
3232         * testsuite/20_util/duration/literals/range.cc: Adjust dg-error.
3233         * testsuite/20_util/time_point/arithmetic/constexpr.cc: New test.
3235 2017-02-19  Gerald Pfeifer  <gerald@pfeifer.com>
3237         * doc/xml/manual/debug.xml: Adjust link to ThreadSanitizer.
3239 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
3241         * doc/xml/manual/io.xml: Update link to groups.google.com.
3242         Tweak link description.
3244 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
3246         * doc/xml/manual/profile_mode.xml: Fix link.
3248 2017-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
3250         * doc/xml/manual/policy_data_structures.xml: Simplify and
3251         standardize references to boost.org.
3252         * doc/xml/manual/policy_data_structures_biblio.xml: Ditto.
3253         * doc/xml/manual/shared_ptr.xml: Ditto.
3255 2017-02-16  Jonathan Wakely  <jwakely@redhat.com>
3257         PR libstdc++/60936
3258         * src/c++11/snprintf_lite.cc (__concat_size_t): Calculate length
3259         written to buffer, not length remaining in buffer.
3261 2017-02-15  Tim Shen  <timshen@google.com>
3263         PR libstdc++/78723
3264         * include/std/variant (operator<(), operator>(), operator<=(),
3265         operator>=(), operator==(), operator!=()): Implement P0393R3.
3266         * testsuite/20_util/variant/compile.cc: Adjust tests.
3267         * testsuite/20_util/variant/run.cc: Adjust tests.
3269 2017-02-15  Tim Shen  <timshen@google.com>
3271         PR libstdc++/79513
3272         * include/std/variant (visit()): Forward variant types to the return
3273         type detection code.
3274         * testsuite/20_util/variant/compile.cc: Add test cases.
3276 2017-02-13  H.J. Lu  <hongjiu.lu@intel.com>
3278         PR libstdc++/79348
3279         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3281 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
3283         PR libstdc++/79348
3284         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3285         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
3286         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
3287         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
3288         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Likewise.
3289         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
3290         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Likewise.
3291         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
3292         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
3294 2017-02-13  Jonathan Wakely  <jwakely@redhat.com>
3296         PR libstdc++/79486
3297         * include/std/future (__future_base::_Task_state::_M_run)
3298         (__future_base::_Task_state::_M_run_delayed): Use lvalue types in
3299         result_of expressions.
3300         * testsuite/30_threads/packaged_task/79486.cc: New.
3302 2017-02-11  Jonathan Wakely  <jwakely@redhat.com>
3304         PR libstdc++/79467
3305         * include/bits/shared_ptr_base.h (__shared_ptr(_Yp*, _Deleter))
3306         (__shared_ptr(_Yp*, _Deleter, _Alloc)): Use lvalue types in
3307         __is_callable check.
3308         * testsuite/20_util/shared_ptr/cons/79467.cc: New.
3310         * include/bits/atomic_base.h: Re-indent.
3312 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
3314         * doc/xml/manual/profile_mode.xml: Update a paper reference.
3316 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3318         * src/c++11/snprintf_lite.cc (__err): Use https for bug reporting.
3320 2017-02-08  Jonathan Wakely  <jwakely@redhat.com>
3322         * doc/xml/manual/policy_data_structures.xml: Fix spelling of author's
3323         name.
3324         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise. Remove
3325         broken links to texts that are no longer online.
3326         * doc/xml/manual/profile_mode.xml: Update links to CGO 2009 paper and
3327         LCPC 2006 paper.
3328         * doc/xml/manual/using.xml: Update links to memory model information.
3329         * doc/xml/manual/using_exceptions.xml: Update link to "Appendix E:
3330         Standard-Library Exception Safety".
3331         * doc/html/*: Regenerate.
3333 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3335         * doc/xml/manual/profile_mode.xml: Unbreak link to
3336         "Optimizing Sorting with Machine Learning Algorithms".
3338 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3340         * src/c++11/snprintf_lite.cc (__err): Update bug reporting URL.
3342 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3344         * doc/xml/manual/abi.xml: Update link to "Sun Studio 11: C++
3345         Migration Guide".
3347 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
3349         * doc/html/ext/lwg-active.html: Remove.
3350         * doc/html/ext/lwg-closed.html: Ditto.
3351         * doc/html/ext/lwg-defects.html: Ditto.
3353         * doc/Makefile.am (xml_extradir): Remove.
3354         (xml_extra): Ditto.
3355         (stamp-html-docbook-lwg): Remove recipe...
3356         (stamp-html-docbook-data): ...and its use here.
3357         * doc/Makefile.in: Regenerate.
3359         * doc/xml/manual/intro.xml: Shorten two paragraphs explaining
3360         the relationship to the upstream working group.
3361         Replace a local link to ../ext/lwg-active.html by the upstream one.
3362         Replace all reference to ../ext/lwg-defects.html by a new entity
3363         &DR; which refers to the upstream address.
3365 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
3367         * doc/xml/manual/status_cxx2017.xml: Fix link to N4284.
3369 2017-02-06  Jonathan Wakely  <jwakely@redhat.com>
3371         PR libstdc++/79323
3372         * testsuite/20_util/duration/literals/range.cc: Prune extra output
3373         at -O0.
3375 2017-02-06  Gerald Pfeifer  <gerald@pfeifer.com>
3377         * doc/xml/manual/documentation_hacking.xml: Update URL of the
3378         DocBook Element Reference.  Use that term as link description
3379         instead of "online".
3380         epubcheck has moved to GitHub.
3381         Remove obsolete link to DocBook Publishing Tools.
3383 2017-02-03  Jonathan Wakely  <jwakely@redhat.com>
3385         PR libstdc++/66145
3386         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Restore ABI override
3387         so new ios::failure can be caught even when old ABI is the default.
3388         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
3389         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
3390         exceptions_failbit.cc: Likewise.
3391         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
3392         exceptions_failbit.cc: Likewise.
3393         * testsuite/27_io/basic_istream/extractors_other/char/
3394         exceptions_null.cc: Likewise.
3395         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
3396         exceptions_null.cc: Likewise.
3397         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
3398         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
3399         * testsuite/27_io/basic_ostream/inserters_other/char/
3400         exceptions_null.cc: Likewise.
3401         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
3402         exceptions_null.cc: Likewise.
3403         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
3405         PR libstdc++/60936
3406         * src/c++11/Makefile.am: Add new files.
3407         * src/c++11/Makefile.in: Regenerate.
3408         * src/c++11/cow-string-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
3409         (operator<<, operator>>, getline): Move explicit instantiations to ...
3410         * src/c++11/cow-string-io-inst.cc: ... new file.
3411         * src/c++11/cow-wstring-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
3412         (operator<<, operator>>, getline): Move explicit instantiations to ...
3413         * src/c++11/cow-wstring-io-inst.cc: ... new file.
3414         * src/c++11/functexcept.cc (__throw_ios_failure, __throw_system_error)
3415         (__throw_future_error, __throw_bad_function_call):
3416         (__throw_regex_error): Move functions for C++11 exceptions to the
3417         files that define the exception types.
3418         * src/c++11/functional.cc (__throw_bad_function_call): Move here.
3419         * src/c++11/future.cc (__throw_future_error): Likewise.
3420         * src/c++11/ios.cc (__throw_ios_failure): Likewise.
3421         * src/c++11/regex.cc (__throw_regex_error): Likewise.
3422         * src/c++11/snprintf_lite.cc (__concat_size_t): Print decimal
3423         representation directly instead of calling __int_to_char.
3424         * src/c++11/sso_string.cc (__sso_string): New file for definition
3425         of __sso_string type.
3426         * src/c++11/string-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
3427         explicit instantiations of narrow string I/O functions.
3428         * src/c++11/system_error.cc (__throw_system_error): Move here.
3429         (__sso_string): Move to new file.
3430         * src/c++11/wstring-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
3431         explicit instantiations of wide string I/O functions.
3432         * src/c++98/misc-inst.cc [_GLIBCXX_USE_CXX11_ABI] (operator<<)
3433         (operator>>, getline): Remove explicit instantiations from here.
3435 2017-02-02  H.J. Lu  <hongjiu.lu@intel.com>
3437         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3439 2017-02-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3441         * configure.host: Separate Solaris/SPARC and x86 baselines.
3442         * config/abi/post/solaris2.10/baseline_symbols.txt: Move ...
3443         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: ... here.
3444         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Move ...
3445         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
3446         ... here.
3447         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Move ...
3448         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: ... here.
3449         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: New file.
3450         * config/abi/post/solaris2.11/baseline_symbols.txt: Move ...
3451         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: ... here.
3452         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Move ...
3453         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
3454         ... here.
3455         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Move ...
3456         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: ... here.
3457         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: New file.
3459         * config/abi/post/solaris2.10/baseline_symbols.txt: Regenerate.
3460         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
3461         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
3462         * config/abi/post/solaris2.11/baseline_symbols.txt: Likewise.
3463         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Likewise.
3464         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Likewise.
3466 2017-02-01  Jonathan Wakely  <jwakely@redhat.com>
3468         PR libstdc++/78346
3469         * include/bits/predefined_ops.h (_Iter_equals_iter): Store iterator
3470         not its referent.
3471         (_Iter_comp_to_iter): Likewise.
3472         * testsuite/25_algorithms/search/78346.cc: New test.
3474         PR libstdc++/79254
3475         * config/abi/pre/gnu.ver: Remove recently added symbols.
3476         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3477         (basic_string::_M_copy_assign): Remove.
3478         (basic_string::operator=(const basic_string&)): Don't dispatch to
3479         _M_copy_assign. If source object is small just deallocate, otherwise
3480         perform new allocation before making any changes.
3481         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
3482         (basic_string::_M_copy_assign(const basic_string&, true_type)):
3483         Remove.
3484         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3485         Test cases where the allocators are equal or the string is small.
3486         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3487         Likewise.
3489 2017-01-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
3491         Implement LWG 2825, LWG 2756 breaks class template argument
3492         deduction for optional.
3493         * include/std/optional: Add a deduction guide.
3494         * testsuite/20_util/optional/cons/deduction_guide.cc: New.
3496 2017-01-27  Jonathan Wakely  <jwakely@redhat.com>
3498         PR libstdc++/79254
3499         * config/abi/pre/gnu.ver: Add new symbols.
3500         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3501         (basic_string::_M_copy_assign): New overloaded functions to perform
3502         copy assignment.
3503         (basic_string::operator=(const basic_string&)): Dispatch to
3504         _M_copy_assign.
3505         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
3506         (basic_string::_M_copy_assign(const basic_string&, true_type)):
3507         Define, performing rollback on exception.
3508         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3509         Test exception-safety guarantee.
3510         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3511         Likewise.
3512         * testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
3513         std::swap visible.
3515 2017-01-26  Jonathan Wakely  <jwakely@redhat.com>
3517         PR libstdc++/70607
3518         * include/tr1/complex (conj): Remove using-declaration and restore
3519         overloads, reverting previous change.
3521         * testsuite/23_containers/list/operations/78389.cc: Fix for C++11
3522         mode.
3523         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
3524         Mark as unsupported in C++98 mode.
3525         * testsuite/23_containers/queue/requirements/constructible.cc:
3526         Likewise.
3527         * testsuite/23_containers/stack/requirements/constructible.cc:
3528         Likewise.
3529         * testsuite/25_algorithms/make_heap/movable.cc: Fix for C++11 mode.
3531         PR libstdc++/79243
3532         * include/bits/c++config (literals::string_view_literals::__7): Add.
3533         Only declare versioned namespaces for the relevant C++ dialects.
3534         * include/experimental/bits/erase_if.h (fundamentals_v2::__detail):
3535         Add versioning macros.
3536         * include/experimental/bits/lfts_config.h:
3537         (fundamentals_v1::__detail::__7, fundamentals_v2::__detail::__7): Add.
3538         * include/experimental/string_view (fundamentals_v2::__detail):
3539         Add versioning macros.
3540         (fundamentals_v2::__detail::__identity): Remove.
3541         (fundamentals_v2::__detail::__idt): Use common_type instead of
3542         __detail::__identity.
3543         * include/std/string_view (__detail::__identity, __detail::__idt):
3544         Likewise.
3545         (literals::string_view_literals): Fix nesting of versioning macros.
3547         PR libstdc++/79190
3548         * libsupc++/del_opa.cc (operator delete(void*, std::align_val_t))
3549         [!_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE_POSIX_MEMALIGN
3550         && !_GLIBCXX_HAVE_MEMALIGN && !_GLIBCXX_HAVE__ALIGNED_MALLOC]:
3551         Retrieve original pointer value allocated by malloc.
3552         * libsupc++/new_opa.cc [!_GLIBCXX_HAVE_ALIGNED_ALLOC
3553         && !_GLIBCXX_HAVE_POSIX_MEMALIGN && !_GLIBCXX_HAVE_MEMALIGN
3554         && !_GLIBCXX_HAVE__ALIGNED_MALLOC] (aligned_alloc(size_t, size_t)):
3555         Define, adjusting pointer value allocated by malloc and storing for
3556         retrieval by operator delete.
3558 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
3560         * libsupc++/eh_atomics.h: Update copyright years.
3561         * testsuite/20_util/unique_ptr/cons/default.cc: Update copyright years.
3563 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
3565         PR libstdc++/61791
3566         PR libstdc++/70607
3567         * include/std/complex (real(T), imag(T)): Add _GLIBCXX_CONSTEXPR.
3568         (proj(T), conj(T)): Change return types per DR 1522.
3569         * include/tr1/complex (conj): Remove overloads and use std::conj.
3570         * testsuite/26_numerics/complex/dr781_dr1137.cc: Rename to...
3571         * testsuite/26_numerics/complex/dr781.cc: ... this, and update.
3572         * testsuite/26_numerics/complex/value_operations/constexpr2.cc: Test
3573         real(T) and imag(T). Allow testing for C++11 too.
3575 2017-01-24  Jonathan Wakely  <jwakely@redhat.com>
3577         PR libstdc++/79206
3578         * include/experimental/string_view (operator==): Check sizes first.
3579         * include/std/string_view (operator==): Likewise.
3581 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
3583         * testsuite/experimental/array/make_array.cc: Restore <functional>
3584         inclusion.
3586 2017-01-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3588         * testsuite/29_atomics/atomic/69301.cc: Require atomic builtins.
3590 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
3592         PR libstdc++/79195
3593         * include/experimental/array (__make_array_elem): New class template
3594         and partial specialization.
3595         (__is_reference_wrapper): Move into __make_array_elem specialization.
3596         (make_array): Use __make_array_elem to determine element type and move
3597         static assertion into specialization. Qualify std::forward call.
3598         (to_array): Add exception specifiation.
3599         * testsuite/experimental/array/make_array.cc: Test argument types
3600         without a common type.
3601         * testsuite/experimental/array/neg.cc: Adjust expected error message.
3603 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
3605         * doc/xml/manual/debug.xml: code.google.com uses https now.
3607 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
3609         * doc/xml/manual/test.xml: Fix link into gccint online manual.
3611 2017-01-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
3613         Make poisoned hashes SFINAE away the call operator of the hash.
3614         * include/bits/functional_hash.h
3615         (__poison_hash::__enable_hash_call): New.
3616         * include/std/optional (__optional_hash_call_base): New.
3617         (hash<optional<_Tp>>): Derive from the new base,
3618         move the hash function into that base.
3619         * include/std/variant (__variant_hash_call_base_impl): New.
3620         (__variant_hash_call_base): Likewise.
3621         (hash<variant<_Types...>>): Derive from the new base,
3622         move the hash function into that base.
3623         * testsuite/20_util/optional/hash.cc: Add tests for is_callable.
3624         * testsuite/20_util/variant/hash.cc: Likewise.
3626 2017-01-20  Joe Seymour  <joe.s@somniumtech.com>
3628         * acinclude.m4 (GLIBCXX_CHECK_SIZE_T_MANGLING): Support uint20_t.
3629         * configure: Regenerate.
3631 2017-01-20  Jonathan Wakely  <jwakely@redhat.com>
3633         PR libstdc++/69240
3634         * include/bits/random.h (uniform_real_distribution::param_type)
3635         (normal_distribution::param_type, lognormal_distribution::param_type)
3636         (gamma_distribution::param_type, chi_squared_distribution::param_type)
3637         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
3638         (student_t_distribution::param_type)
3639         (bernoulli_distribution::param_type, binomial_distribution::param_type)
3640         (geometric_distribution::param_type)
3641         (negative_binomial_distribution::param_type)
3642         (poisson_distribution::param_type)
3643         (exponential_distribution::param_type)
3644         (weibull_distribution::param_type)
3645         (extreme_value_distribution::param_type)
3646         (discrete_distribution::param_type)
3647         (piecewise_constant_distribution::param_type)
3648         (piecewise_linear_distribution::param_type): Define operator!=.
3649         * include/bits/uniform_int_dist.h
3650         (uniform_int_distribution::param_type): Likewise.
3651         * include/ext/random (beta_distribution::param_type)
3652         (rice_distribution::param_type, nakagami_distribution::param_type)
3653         (pareto_distribution::param_type, k_distribution::param_type)
3654         (arcsine_distribution::param_type, hoyt_distribution::param_type)
3655         (triangular_distribution::param_type)
3656         (von_mises_distribution::param_type)
3657         (hypergeometric_distribution::param_type)
3658         (logistic_distribution::param_type)
3659         (uniform_on_sphere_distribution::param_type)
3660         (uniform_inside_sphere_distribution::param_type): Likewise.
3661         * testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc:
3662         Test construction with param_type.
3663         * testsuite/26_numerics/random/binomial_distribution/cons/parms.cc:
3664         Likewise.
3665         * testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
3666         Likewise.
3667         * testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc:
3668         Likewise.
3669         * testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
3670         Likewise.
3671         * testsuite/26_numerics/random/extreme_value_distribution/cons/
3672         parms.cc: Likewise.
3673         * testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc:
3674         Likewise.
3675         * testsuite/26_numerics/random/gamma_distribution/cons/parms.cc:
3676         Likewise.
3677         * testsuite/26_numerics/random/geometric_distribution/cons/parms.cc:
3678         Likewise.
3679         * testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc:
3680         Likewise.
3681         * testsuite/26_numerics/random/negative_binomial_distribution/cons/
3682         parms.cc: Likewise.
3683         * testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
3684         Likewise.
3685         * testsuite/26_numerics/random/poisson_distribution/cons/parms.cc:
3686         Likewise.
3687         * testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
3688         Likewise.
3689         * testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc:
3690         Likewise.
3691         * testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc:
3692         Likewise.
3693         * testsuite/26_numerics/random/weibull_distribution/cons/parms.cc:
3694         Likewise.
3695         * testsuite/ext/random/arcsine_distribution/cons/parms.cc: Likewise.
3696         * testsuite/ext/random/beta_distribution/cons/parms.cc: Likewise.
3697         * testsuite/ext/random/hoyt_distribution/cons/parms.cc: Likewise.
3698         * testsuite/ext/random/hypergeometric_distribution/cons/parms.cc:
3699         Likewise.
3700         * testsuite/ext/random/k_distribution/cons/parms.cc: Likewise.
3701         * testsuite/ext/random/logistic_distribution/cons/parms.cc: Likewise.
3702         * testsuite/ext/random/nakagami_distribution/cons/parms.cc: Likewise.
3703         * testsuite/ext/random/normal_mv_distribution/cons/parms.cc: Likewise.
3704         * testsuite/ext/random/pareto_distribution/cons/parms.cc: Likewise.
3705         * testsuite/ext/random/rice_distribution/cons/parms.cc: Likewise.
3706         * testsuite/ext/random/triangular_distribution/cons/parms.cc:
3707         Likewise.
3708         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/
3709         parms.cc: Likewise.
3710         * testsuite/ext/random/von_mises_distribution/cons/parms.cc: Likewise.
3712         PR libstdc++/72792
3713         * include/bits/alloc_traits.h (__allocator_traits_base::__diff_type)
3714         (__allocator_traits_base::__size_type): Remove.
3715         (allocator_traits::_Ptr): New class template to detect const and void
3716         pointer types without instantiating pointer_traits::rebind
3717         unnecessarily.
3718         (allocator_traits::_Diff): Likewise for detecting difference_type.
3719         (allocator_traits::_Size): New class template to detect size_type
3720         without instantiating make_unsigned unnecessarily.
3721         * include/bits/ptr_traits.h (pointer_traits::element_type): Use
3722         __detected_or_t instead of __detected_or_t_.
3723         * include/std/type_traits (__detected_or_t_): Remove.
3724         * testsuite/20_util/allocator_traits/members/pointers.cc: New test.
3726         PR libstdc++/72792
3727         PR libstdc++/72793
3728         * include/bits/alloc_traits.h (__allocator_traits_base::__rebind):
3729         Replace with class template using void_t.
3730         (__alloc_rebind): Define in terms of
3731         __allocator_traits_base::__rebind.
3732         (allocator_traits): Remove unconditional static_assert for
3733         rebind_alloc.
3734         * include/bits/ptr_traits.h (__replace_first_arg): Remove type member.
3735         (pointer_traits::__rebind): Replace with class template using void_t.
3736         (pointer_traits::rebind): Define in terms of __rebind.
3737         (pointer_traits): Remove unconditional static_assert for rebind.
3738         * testsuite/20_util/allocator_traits/members/rebind_alloc.cc: New test.
3739         * testsuite/20_util/pointer_traits/rebind.cc: New test.
3741         PR libstdc++/69321
3742         * include/experimental/any (__any_caster): Avoid instantiating
3743         manager function for types that can't be stored in any.
3744         * include/std/any (__any_caster): Likewise.
3745         * testsuite/20_util/any/misc/any_cast.cc: Test non-copyable type.
3746         * testsuite/experimental/any/misc/any_cast.cc: Likewise.
3748         PR libstdc++/64903
3749         * include/bits/stl_algo.h (is_partitioned): Use increment instead of
3750         std::advance.
3752 2017-01-19  Jonathan Wakely  <jwakely@redhat.com>
3754         PR libstdc++/79156
3755         * include/bits/shared_ptr_base.h (__enable_shared_from_this_base):
3756         Fix return type.
3757         (__enable_shared_from_this): Declare __shared_ptr as a friend.
3758         * testsuite/ext/shared_ptr/1.cc: New test.
3760         PR libstdc++/64903
3761         * include/bits/stl_algo.h (is_partitioned): Don't retest the partition
3762         point.
3763         * testsuite/25_algorithms/is_partitioned/2.cc: New test.
3765         * doc/xml/manual/abi.xml: Fix typo.
3766         * doc/html/manual/abi.html: Likewise.
3768         PR libstdc++/67085
3769         * include/bits/predefined_ops.h (_Iter_less_val, _Val_less_iter): Add
3770         converting constructors from _Iter_less_iter.
3771         (_Iter_comp_val, _Val_comp_iter): Add converting constructors from
3772         _Iter_comp_iter.
3773         (__iter_comp_val(_Iter_comp_iter<C>): Use converting constructor.
3774         (__val_comp_iter(_Iter_comp_iter<C>): Likewise.
3775         * include/bits/stl_heap.h (__is_heap_until, __push_heap, __pop_heap)
3776         (__make_heap, __sort_heap): Change _Compare parameters to references.
3777         (__is_heap, push_heap, __adjust_heap, __pop_heap, pop_heap)
3778         (__make_heap, make_heap, sort_heap, is_heap_until): Pass comparison
3779         functions as lvalues.
3780         (is_heap): Call __is_heap_until directly to avoid copying __comp.
3781         * testsuite/23_containers/priority_queue/67085.cc: Adjust test to
3782         count copies during construction with empty sequence.
3784         PR libstdc++/67085
3785         * include/bits/stl_heap.h (__is_heap): Use _GLIBCXX_MOVE.
3786         (__make_heap, __sort_heap): Don't use _GLIBCXX_MOVE inside loops.
3787         * testsuite/23_containers/priority_queue/67085.cc: Adjust expected
3788         number of copies.
3789         * testsuite/25_algorithms/make_heap/movable.cc: New test.
3791         PR libstdc++/67085
3792         * include/bits/stl_heap.h (push_heap, __adjust_heap, __pop_heap)
3793         (pop_heap, __make_heap, make_heap, __sort_heap, sort_heap): Use
3794         _GLIBCXX_MOVE when passing comparison function to other functions.
3795         (is_heap_until, is_heap): Use std::move when passing comparison
3796         function.
3797         * testsuite/23_containers/priority_queue/67085.cc: New test.
3799         PR libstdc++/78905
3800         * doc/xml/manual/abi.xml (abi.versioning.history): Add markup to
3801         macro names, filenames, and literal values. Document _GLIBCXX_RELEASE.
3802         Document that the deprecated _GLIBCXX_VERSION macro was removed for
3803         the 4.0.0 release.
3804         * doc/html/*: Regenerate.
3805         * include/Makefile.am (_GLIBCXX_RELEASE): Set value.
3806         * include/Makefile.in: Regenerate.
3807         * include/bits/c++config (_GLIBCXX_RELEASE): Add #define.
3808         * testsuite/ext/profile/mutex_extensions_neg.cc: Use lineno of 0 in
3809         dg-error.
3811 2017-01-18  Jonathan Wakely  <jwakely@redhat.com>
3813         PR libstdc++/69301
3814         * include/std/atomic (atomic<T>::load, atomic<T>::exchange): Use
3815         aligned buffer instead of default-initialized variable.
3816         * testsuite/29_atomics/atomic/69301.cc: New test.
3817         * include/experimental/memory (observer_ptr::release): Use reserved
3818         name.
3819         * include/ext/pointer.h (_Pointer_adapter::operator++(int))
3820         (_Pointer_adapter::operator--(int)): Likewise.
3822         PR libstdc++/68925
3823         * include/experimental/random (randint): Use temporary instead of
3824         thread_local static.
3826 2017-01-17  Joshua Conner  <joshconner@google.com>
3828         * crossconfig.m4: Add fuchsia OS.
3829         * configure: Regenerate.
3831 2017-01-17  Jonathan Wakely  <jwakely@redhat.com>
3833         PR libstdc++/69699
3834         * doc/xml/manual/abi.xml (abi.versioning.history): Explain why the
3835         __GLIBCXX__ macro is not useful. Remove redundant date information
3836         and link to the GCC release timeline.
3837         (abi.versioning.active): Move partial sentence into the previous
3838         paragraph.
3839         * doc/html/*: Regenerate.
3841         PR libstdc++/79114
3842         * libsupc++/nested_exception.h (throw_with_nested): Use decay instead
3843         of remove_reference.
3844         * testsuite/18_support/nested_exception/79114.cc: New test.
3846 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
3848         PR other/79046
3849         * configure.ac: Add GCC_BASE_VER.
3850         * fragment.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
3851         get version from BASE-VER file.
3852         * po/Makefile.in: Regenerated.
3853         * libsupc++/Makefile.in: Regenerated.
3854         * testsuite/Makefile.in: Regenerated.
3855         * src/Makefile.in: Regenerated.
3856         * configure: Regenerated.
3857         * Makefile.in: Regenerated.
3858         * include/Makefile.in: Regenerated.
3859         * doc/Makefile.in: Regenerated.
3860         * python/Makefile.in: Regenerated.
3861         * src/c++11/Makefile.in: Regenerated.
3862         * src/c++98/Makefile.in: Regenerated.
3863         * src/filesystem/Makefile.in: Regenerated.
3865 2017-01-16  Jonathan Wakely  <jwakely@redhat.com>
3867         PR libstdc++/66145
3868         * src/c++11/functexcept.cc: Use new ABI for std::ios_base::failure
3869         exceptions.
3870         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Don't override ABI
3871         for test, so new ios::failure can be caught.
3872         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
3873         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
3874         exceptions_failbit.cc: Likewise.
3875         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
3876         exceptions_failbit.cc: Likewise.
3877         * testsuite/27_io/basic_istream/extractors_other/char/
3878         exceptions_null.cc: Likewise.
3879         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
3880         exceptions_null.cc: Likewise.
3881         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
3882         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
3883         * testsuite/27_io/basic_ostream/inserters_other/char/
3884         exceptions_null.cc: Likewise.
3885         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
3886         exceptions_null.cc: Likewise.
3887         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
3889         PR libstdc++/78702
3890         * include/bits/locale_classes.h (locale::facet::__shim): Change from
3891         private to protected.
3892         * src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to
3893         make locale::facet::__shim accessible.
3895 2017-01-16  Ville Voutilainen  <ville.voutilainen@gmail.com>
3897         PR libstdc++/78389
3898         * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
3899         (merge(list&&, _StrictWeakOrdering)): Likewise.
3900         * testsuite/23_containers/list/operations/78389.cc: Add
3901         better test for the sizes.
3903 2017-01-14  Jonathan Wakely  <jwakely@redhat.com>
3905         * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
3906         Skip test when -D_GLIBCXX_PROFILE mode is included in options.
3907         * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
3908         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
3909         Likewise.
3910         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
3911         * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
3912         * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
3913         * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
3914         * testsuite/23_containers/unordered_map/modifiers/extract.cc:
3915         Likewise.
3916         * testsuite/23_containers/unordered_multimap/modifiers/extract.cc::
3917         Likewise.
3918         * testsuite/23_containers/unordered_multiset/modifiers/extract.cc::
3919         Likewise.
3920         * testsuite/23_containers/unordered_set/modifiers/extract.cc:
3921         Likewise.
3922         * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
3923         Likewise.
3924         * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
3925         * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
3926         * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
3927         * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
3928         * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
3929         * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
3930         * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
3931         * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
3932         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
3933         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
3934         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
3935         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3936         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3938 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
3940         PR libstdc++/65411
3941         * config/io/basic_file_stdio.cc (__basic_file<char>::close()): Don't
3942         retry fclose on EINTR.
3944         * include/profile/base.h: Remove unused header that leads to header
3945         cycle in C++17 mode.
3947         PR libstdc++/79075
3948         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
3949         Make _If_sv private.
3950         [!_GLIBCXX_USE_CXX11_ABI] (basic_string): Add member functions taking
3951         basic_string_view arguments.
3953         PR libstdc++/79075
3954         * testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Remove
3955         redundant option from cxxflags.
3956         (check_effective_target_cxx11-abi): Define.
3957         * testsuite/21_strings/basic_string/allocator/71964.cc: Use cxx11-abi
3958         effective target.
3959         * testsuite/21_strings/basic_string/allocator/char/copy.cc: Likewise.
3960         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3961         Likewise.
3962         * testsuite/21_strings/basic_string/allocator/char/minimal.cc:
3963         Likewise.
3964         * testsuite/21_strings/basic_string/allocator/char/move.cc: Likewise.
3965         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
3966         Likewise.
3967         * testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
3968         Likewise.
3969         * testsuite/21_strings/basic_string/allocator/char/swap.cc: Likewise.
3970         * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
3971         Likewise.
3972         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3973         Likewise.
3974         * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
3975         Likewise.
3976         * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
3977         Likewise.
3978         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
3979         Likewise.
3980         * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
3981         Likewise.
3982         * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
3983         Likewise.
3984         * testsuite/23_containers/list/61347.cc: Likewise.
3985         * testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
3986         * testsuite/27_io/ios_base/failure/cxx11.cc: Likewise.
3988 2017-01-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3990         PR libstdc++/78389
3991         * include/bits/list.tcc (merge(list&&)):
3992         Adjust list sizes if the comparator throws.
3993         (merge(list&&, _StrictWeakOrdering)): Likewise.
3994         (sort()): Splice elements back from the scratch buffers
3995         if the comparator throws.
3996         (sort(_StrictWeakOrdering)): Likewise.
3997         * testsuite/23_containers/list/operations/78389.cc: New.
3999 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
4001         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Mark
4002         XFAIL for C++17 until node reinsertion supports fancy pointers.
4004         PR libstdc++/78361
4005         * testsuite/20_util/add_pointer/value.cc: Test forming function
4006         pointers.
4008 2017-01-13  Michael Brune  <lucdanton@free.fr>
4010         PR libstdc++/78361
4011         * include/std/type_traits (__is_referenceable): Handle noexcept
4012         function types.
4014 2017-01-12  Jonathan Wakely  <jwakely@redhat.com>
4016         PR libstdc++/77528
4017         * include/bits/stl_queue.h (queue, priority_queue): Remove default
4018         member-initializers and define default constructors as templates with
4019         constraints.
4020         * include/bits/stl_stack.h (stack): Likewise.
4021         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
4022         New.
4023         * testsuite/23_containers/priority_queue/requirements/
4024         explicit_instantiation/1.cc: Test more instantiations.
4025         * testsuite/23_containers/priority_queue/requirements/
4026         explicit_instantiation/1_c++98.cc: Likewise.
4027         * testsuite/23_containers/queue/requirements/constructible.cc: New.
4028         * testsuite/23_containers/stack/requirements/constructible.cc: New.
4030         PR libstdc++/66284
4031         * doc/xml/manual/intro.xml: Document LWG 2781 change.
4032         * doc/html/*: Regenerate.
4033         * include/std/functional (_Function_base::_Ref_manager): Remove.
4034         (_Function_handler): Remove partial specializations for
4035         reference_wrapper.
4036         (function::target): Remove special case for const qualification.
4037         * testsuite/20_util/function/6.cc: Adjust tests for target type.
4038         * testsuite/20_util/function/7.cc: Likewise.
4039         * testsuite/20_util/function/8.cc: Likewise.
4041 2017-01-11  Jonathan Wakely  <jwakely@redhat.com>
4043         PR libstdc++/78134
4044         * include/bits/stl_map.h (map::lower_bound, map::upper_bound)
4045         (map::equal_range): Fix return type of heterogeneous overloads.
4046         * include/bits/stl_multimap.h (multimap::lower_bound)
4047         (multimap::upper_bound, multimap::equal_range): Likewise.
4048         * include/bits/stl_multiset.h (multiset::lower_bound)
4049         (multiset::upper_bound, multiset::equal_range): Likewise.
4050         * include/bits/stl_set.h (set::lower_bound, set::upper_bound)
4051         (set::equal_range): Likewise.
4052         * testsuite/23_containers/map/operations/2.cc
4053         * testsuite/23_containers/multimap/operations/2.cc
4054         * testsuite/23_containers/multiset/operations/2.cc
4055         * testsuite/23_containers/set/operations/2.cc
4057         PR libstdc++/78273
4058         * include/bits/stl_map.h (map::count<_Kt>(const _Kt&)): Don't assume
4059         the heterogeneous comparison can only find one match.
4060         * include/bits/stl_set.h (set::count<_Kt>(const _Kt&)): Likewise.
4061         * testsuite/23_containers/map/operations/2.cc: Test count works with
4062         comparison function that just partitions rather than sorting.
4063         * testsuite/23_containers/set/operations/2.cc: Likewise.
4065 2017-01-11  Ville Voutilainen  <ville.voutilainen@gmail.com>
4067         Reduce the size of variant, it doesn't need an index of
4068         type size_t internally.
4069         * include/std/variant (parse_numbers.h): New include.
4070         (__select_index): New.
4071         (_Variant_storage<false, _Types...>::_M_reset_impl): Use
4072         _index_type for comparison with variant_npos.
4073         (_Variant_storage<false, _Types...>::__index_type): New.
4074         (_Variant_storage<false, _Types...>::_M_index): Change the
4075         type from size_t to __index_type.
4076         (_Variant_storage<true, _Types...>::__index_type): New.
4077         (_Variant_storage<true, _Types...>::_M_index): Change the
4078         type from size_t to __index_type.
4079         (_Variant_base::_M_valid): Use _Storage::__index_type
4080         for comparison with variant_npos.
4081         (variant::index): Use _Base::_Storage::__index_type
4082         for comparison with variant_npos.
4083         * testsuite/20_util/variant/index_type.cc: New.
4085 2017-01-10  Jonathan Wakely  <jwakely@redhat.com>
4087         * testsuite/18_support/exception_ptr/60612-unexpected.cc: Adjust
4088         effective target selector to prevent running in C++17 mode.
4090         PR libstdc++/77528
4091         * include/bits/stl_queue.h (queue::c): Add default member initializer.
4092         (queue::queue()): Add constructor and define as defaulted.
4093         (queue::queue(_Sequence&&)): Remove default argument.
4094         (priority_queue::c, priority_queue::comp): Add default member
4095         initializers.
4096         (priority_queue::priority_queue()): Add constructor and define as
4097         defaulted.
4098         (priority_queue::priority_queue(const _Compare&, _Sequence&&)):
4099         Remove default argument for first parameter.
4100         * include/bits/stl_stack.h (stack::c): Add default member initializer.
4101         (stack::stack()): Add constructor and define as defaulted.
4102         (stack::stack(const _Sequence&)): Remove default argument.
4103         * testsuite/23_containers/priority_queue/requirements/
4104         explicit_instantiation/1.cc: Test explicit instantiation with
4105         non-DefaultConstructible sequence.
4106         * testsuite/23_containers/priority_queue/77528.cc: New test.
4107         * testsuite/23_containers/priority_queue/requirements/
4108         explicit_instantiation/1_c++0x.cc: Replace with 1_c++98.cc.
4109         * testsuite/23_containers/queue/77528.cc: New test.
4110         * testsuite/23_containers/queue/requirements/explicit_instantiation/
4111         1.cc: Test explicit instantiation with non-DefaultConstructible
4112         sequence.
4113         * testsuite/23_containers/queue/requirements/explicit_instantiation/
4114         1_c++0x.cc: Replace with 1_c++98.cc.
4115         * testsuite/23_containers/stack/77528.cc: New test.
4116         * testsuite/23_containers/stack/requirements/explicit_instantiation/
4117         1.cc: Test explicit instantiation with non-DefaultConstructible
4118         sequence.
4119         * testsuite/23_containers/stack/requirements/explicit_instantiation/
4120         1_c++0x.cc: Replace with 1_c++98.cc.
4122 2017-01-10  Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
4124         * include/bits/locale_facets_nonio.tcc
4125         (time_get::_M_extract_via_format): Avoid compilation errors with
4126         non-standard struct tm.
4128 2017-01-10  François Dumont  <fdumont@gcc.gnu.org>
4129             Jonathan Wakely  <jwakely@redhat.com>
4131         * python/libstdcxx/v6/printers.py (_versioned_namespace): Define.
4132         (is_specialization, strip_versioned_namespace): New helpers functions
4133         to work with symbols in the versioned namespace.
4134         (Printer.add_version): Add second name using versioned namespace.
4135         (add_one_template_type_printer, add_one_type_printer): Add second
4136         type printers using versioned namespace.
4137         (register_type_printers): Add template type printer for basic_string.
4138         (build_libstdcxx_dictionary): Remove dead code.
4139         * python/libstdcxx/v6/xmethods.py: Make all matchers look for
4140         versioned namespace.
4141         * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected
4142         results.
4143         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
4145 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
4147         PR libstdc++/79017
4148         * acinclude.m4 (GLIBCXX_CHECK_C99_TR1): Check for llrint and llround
4149         functions separately on darwin and if they're missing define
4150         _GLIBCXX_NO_C99_ROUNDING_FUNCS.
4151         * config.h.in: Regenerate.
4152         * configure: Regenerate.
4153         * include/c_global/cmath [_GLIBCXX_NO_C99_ROUNDING_FUNCS] (llrint)
4154         (llrintf, llrintl, llround, llroundf, llroundl): Do not define.
4156         * testsuite/30_threads/condition_variable/members/3.cc: Use new macro
4157         to detect correct thread_local destructors.
4158         * testsuite/util/testsuite_hooks.h (CORRECT_THREAD_LOCAL_DTORS):
4159         Define.
4161 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
4162             Aditya Kumar  <hiraditya@msn.com>
4164         PR libstdc++/66414
4165         * include/bits/basic_string.tcc
4166         (basic_string::find(const CharT*, size_type, size_type)): Optimize.
4168 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
4170         * testsuite/21_strings/basic_string/operations/find/char/6.cc: New.
4171         * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: New.
4173         * testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp:
4174         Include <cassert> header.
4176         PR libstdc++/78968
4177         * crossconfig.m4: Check for __cxa_thread_atexit on *-*-freebsd*.
4178         * configure: Regenerate.
4180 2017-01-06  Barrett Adair  <barrettellisadair@gmail.com>
4181             Jonathan Wakely  <jwakely@redhat.com>
4183         * include/std/variant (variant, swap): Replace __and_ usage with fold
4184         expressions.
4186 2017-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4188         PR go/78978
4189         * acinclude.m4 (GLIBCXX_CHECK_ASSEMBLER_HWCAP): Remove.
4190         * configure.ac: Call GCC_CHECK_ASSEMBLER_HWCAP instead of
4191         GLIBCXX_CHECK_ASSEMBLER_HWCAP.
4192         * fragment.am (CONFIG_CXXFLAGS): Use HWCAP_CFLAGS instead of
4193         HWCAP_FLAGS.
4194         * aclocal.m4: Regenerate.
4195         * configure: Regenerate.
4196         * Makefile.in, doc/Makefile.in, include/Makefile.in,
4197         libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in,
4198         src/Makefile.in, src/c++11/Makefile.in, src/c++98/Makefile.in,
4199         src/filesystem/Makefile.in, testsuite/Makefile.in: Regenerate.
4201 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
4203         * include/bits/c++config (_GLIBCXX_ASSERTIONS): Avoid redefinition.
4205         PR libstdc++/78991
4206         * include/bits/predefined_ops.h (_Iter_comp_iter, _Iter_comp_val)
4207         (_Val_comp_iter, _Iter_equals_val, _Iter_pred, _Iter_comp_to_val)
4208         (_Iter_comp_to_iter, _Iter_negate): Make constructors explicit and
4209         move function objects.
4210         (__iter_comp_iter, __iter_comp_val, __val_comp_iter, __pred_iter)
4211         (__iter_comp_val, __iter_comp_iter, __negate): Move function objects.
4212         * testsuite/25_algorithms/sort/78991.cc: New test.
4214 2017-01-05  Jonathan Wakely  <jwakely@redhat.com>
4216         * include/bits/std_function.h (function::_Signature_type): Remove.
4217         (function::function(_Functor)): Adjust.
4219 2017-01-05  Tim Shen  <timshen@google.com>
4221         PR libstdc++/78996
4222         * include/std/variant (__gen_vtable_impl): rename __unused to
4223         __dimensions to avoid naming conflict.
4225 2017-01-04  Jonathan Wakely  <jwakely@redhat.com>
4227         PR libstdc++/78968
4228         * config.h.in: Regenerate.
4229         * configure: Likewise.
4230         * configure.ac: Check for __cxa_thread_atexit.
4231         * libsupc++/atexit_thread.cc [_GLIBCXX_HAVE___CXA_THREAD_ATEXIT]:
4232         Don't define __cxa_thread_atexit if libc provides it.
4234 2017-01-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
4236         Implement 2801, Default-constructibility of unique_ptr.
4237         * include/bits/unique_ptr.h (__uniq_ptr_impl::_DeleterConstraint): New.
4238         (unique_ptr::_DeleterConstraint): Likewise.
4239         (unique_ptr()): Constrain.
4240         (unique_ptr(pointer)): Likewise.
4241         (unique_ptr(nullptr_t)): Likewise.
4242         (unique_ptr<_Tp[], _Dp>::_DeleterConstraint): New.
4243         (unique_ptr<_Tp[], _Dp>::unique_ptr()): Constrain.
4244         (unique_ptr<_Tp[], _Dp>::unique_ptr(_Up)): Likewise.
4245         (unique_ptr<_Tp[], _Dp>::unique_ptr(nullptr_t)): Likewise.
4246         * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust.
4247         * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
4248         * testsuite/20_util/unique_ptr/cons/default.cc: New.
4249         * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Adjust.
4251 2017-01-04  Pauli Nieminen  <suokkos@gmail.com>
4252             Jonathan Wakely  <jwakely@redhat.com>
4254         PR libstdc++/64735
4255         * acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define.
4256         * config.h.in: Regenerate.
4257         * config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46]
4258         (GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make
4259         exports for exception_ptr, nested_exception, and future conditional.
4260         [HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add
4261         exports for exception_ptr, nested_exception, and future conditional.
4262         * configure: Regenerate.
4263         * configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER.
4264         * include/std/future: Remove check for ATOMIC_INT_LOCK_FREE
4265         * libsupc++/eh_atomics.h: New file for internal use only.
4266         (__eh_atomic_inc, __eh_atomic_dec): New.
4267         * libsupc++/eh_ptr.cc (exception_ptr::_M_addref)
4268         (exception_ptr::_M_release) (__gxx_dependent_exception_cleanup)
4269         (rethrow_exception): Use eh_atomics.h reference counting helpers.
4270         * libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise.
4271         * libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise.
4272         * libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE.
4273         * libsupc++/exception_ptr.h: Likewise.
4274         * libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro.
4275         * libsupc++/nested_exception.cc: Remove check for
4276         ATOMIC_INT_LOCK_FREE.
4277         * libsupc++/nested_exception.h: Likewise.
4278         * src/c++11/future.cc: Likewise.
4279         * testsuite/18_support/exception_ptr/*: Remove atomic builtins checks.
4280         * testsuite/18_support/nested_exception/*: Likewise.
4281         * testsuite/30_threads/async/*: Likewise.
4282         * testsuite/30_threads/future/*: Likewise.
4283         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
4284         * testsuite/30_threads/packaged_task/*: Likewise.
4285         * testsuite/30_threads/promise/*: Likewise.
4286         * testsuite/30_threads/shared_future/*: Likewise.
4288 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
4290         * doc/xml/manual/documentation_hacking.xml: sourceforge.net now
4291         defaults to https; adjust reference.
4293 2017-01-03  Jonathan Wakely  <jwakely@redhat.com>
4295         PR libstdc++/78956
4296         * include/std/thread (thread(const thread&&)): Add deleted
4297         constructor.
4298         * testsuite/30_threads/thread/cons/lwg2097.cc: New test.
4300         * doc/xml/manual/spine.xml: Update copyright years.
4301         * doc/xml/manual/build_hacking.xml: Fix spelling of libbuilddir.
4302         * doc/xml/manual/test.xml: Likewise.
4303         * doc/html/*: Regenerate.
4305 2017-01-01  Gerald Pfeifer  <gerald@pfeifer.com>
4307         * doc/xml/faq.xml: Update address of C++ ABI link.
4308         * doc/xml/manual/abi.xml: Ditto.
4310 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
4312         Update copyright years.
4314 Copyright (C) 2017 Free Software Foundation, Inc.
4316 Copying and distribution of this file, with or without modification,
4317 are permitted in any medium without royalty provided the copyright
4318 notice and this notice are preserved.