compiler: improve escape analysis
[official-gcc.git] / libstdc++-v3 / ChangeLog
blobeb79e8172b94cea196126c9661ff72b37f150339
1 2018-06-25  Jonathan Wakely  <jwakely@redhat.com>
3         PR libstdc++/86112
4         * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
5         Replace dict comprehension.
7         PR libstdc++/81092
8         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
10         PR libstdc++/86292
11         * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
12         Add try-catch block.
13         * testsuite/23_containers/vector/cons/86292.cc: New.
15         * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
17         * include/experimental/algorithm (sample, shuffle): Add new overloads
18         using per-thread random number engine.
19         * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
20         dependencies by using __gnu_test::test_container.
21         * testsuite/experimental/algorithm/sample-2.cc: New.
22         * testsuite/experimental/algorithm/shuffle.cc: New.
24 2018-06-22  Jonathan Wakely  <jwakely@redhat.com>
26         * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
27         different size_t mangling on 32-bit targets.
29         PR libstdc++/86280
30         * include/experimental/memory_resource
31         (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
32         enough for result of left shift.
34         PR libstdc++/86138
35         * include/bits/basic_string.tcc:
36         [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
37         (basic_string<char>::_Rep::_S_empty_rep_storage)
38         (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
39         instantiation declarations.
40         [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
41         explicit instantiation declarations.
42         * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
43         * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
45 2018-06-21  Jonathan Wakely  <jwakely@redhat.com>
47         PR libstdc++/83328
48         * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
49         * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
50         * configure: Regenerate.
51         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
52         (basic_string::insert(const_iterator, initializer_list<C>)): Add.
53         [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
54         (basic_string::insert(iterator, initializer_list<C>)): Suppress
55         definition.
56         * include/debug/string (basic_string::insert(iterator, C)): Change
57         first parameter to const_iterator.
58         (basic_string::insert(iterator, size_type, C)): Likewise. Change
59         return type to iterator.
60         (basic_string::insert(iterator, InputIterator, InputIterator)):
61         Likewise.
62         (basic_string::insert(iterator, initializer_list<C>)): Change first
63         parameter to const_iterator and return type to iterator.
64         * src/c++11/string-inst.cc: Extend comment.
65         * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
66         New.
67         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
68         New.
69         * testsuite/util/testsuite_abi.cc: Add new symbol version.
71         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
73         PR libstdc++/70940
74         * include/experimental/memory_resource
75         (__resource_adaptor_imp::do_deallocate): Add missing return.
76         * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
77         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
78         resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
79         __gnu_cxx::malloc_allocator.
81         PR libstdc++/70940
82         * include/experimental/memory_resource (__resource_adaptor_common):
83         New base class.
84         (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
85         pointer from unaligned, and vice versa.
86         (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
87         allocated pointer to meet alignment request.
88         (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
89         original pointer for deallocation.
90         (__resource_adaptor_imp::do_is_equal): Reformat.
91         (__resource_adaptor_imp::_S_aligned_size): Remove.
92         (__resource_adaptor_imp::_S_supported): Remove.
93         (new_delete_resource): Use __gnu_cxx::new_allocator.
94         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
95         extended alignments and use debug_allocator to check for matching
96         allocate/deallocate pairs.
98 2018-06-21  François Dumont  <fdumont@gcc.gnu.org>
100         * include/debug/safe_iterator.h
101         (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
102         Compare __x base iterator with a value-initialized iterator of the
103         same type.
105 2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
107         PR libstdc++/70966
108         * include/experimental/memory_resource (__resource_adaptor_imp): Add
109         static assertions to enforce requirements on pointer types.
110         (__resource_adaptor_imp::get_allocator()): Add noexcept.
111         (new_delete_resource, null_memory_resource): Return address of an
112         object with dynamic storage duration.
113         (__null_memory_resource): Remove.
114         * testsuite/experimental/memory_resource/70966.cc: New.
116         * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
117         missed from recent commit.
119 2018-06-19  Jonathan Wakely  <jwakely@redhat.com>
121         * include/std/utility: Remove unused <exception> header.
123 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
125         LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
126         * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
127         (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
128         a specialization of std::pair.
129         * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
130         pair elements are constructed correctly.
132         LWG 2989 hide path iostream operators from normal lookup
133         * include/bits/fs_path.h (operator<<, operator>>): Define inline as
134         friends.
135         * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
137         LWG 3050 Fix cv-qualification of convertibility constraints
138         * include/std/chrono (duration, operator*, operator/, operator%): Use
139         const-qualified type as source type in is_convertible constraints.
140         * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
141         * testsuite/20_util/duration/cons/dr3050.cc: New.
142         * testsuite/20_util/duration/literals/range.cc: Rename to...
143         * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
144         dg-error lineno.
146 2018-06-18  Maya Rashish  <coypu@sdf.org>
148         * crossconfig.m4: Handle OpenBSD just like NetBSD.
149         * configure: Rebuilt.
151 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
153         P0754R2 <version> header
154         * include/Makefile.am: Add new header.
155         * include/Makefile.in: Regenerate.
156         * include/bits/c++config: Change doxygen comment to suggest <version>
157         instead of <iosfwd>.
158         * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
159         unconditionally.  Add C++17 and C++20 headers.
160         * include/std/version: New header.
161         * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
162         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
163         * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
164         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
165         * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
166         * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
167         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
168         New.
169         * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
170         * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
171         * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
172         * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
173         * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
174         * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
175         * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
176         New.
177         * testsuite/18_support/headers/version/macros.cc: New.
178         * testsuite/18_support/headers/version/macros.cc: New.
180         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
181         enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
182         symlink.
183         * config.h.in: Regenerate.
184         * configure: Regenerate.
185         * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
187         LWG 3035. std::allocator's constructors should be constexpr
188         * include/bits/allocator.h (allocator): Add constexpr to constructors
189         for C++2a. Replace dynamic exception specifications with NOTHROW
190         macro.
191         (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
192         NOTHROW.
193         * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
194         * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
195         to constructors for C++2a.
196         * include/ext/new_allocator.h (new_allocator): Likewise.
198 2018-06-16  Jonathan Wakely  <jwakely@redhat.com>
200         LWG 3076 basic_string CTAD ambiguity
201         * doc/xml/manual/intro.xml: Document LWG 3076 change.
202         * include/bits/basic_string.h
203         [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
204         (basic_string(const _CharT*, const _Alloc&)): Turn into a function
205         template constrained by _RequireAllocator.
206         (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
207         * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
208         Define.
209         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
210         deduction
211         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
212         Likewise.
214 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
216         PR libstdc++/86169
217         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
218         (basic_string::data()): Unshare string.
219         * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
220         New.
222         * include/std/string_view (basic_string_view(const CharT*)): Remove
223         check for null pointer and add nonnull attribute.
224         (compare(const CharT*), compare(size_type, size_type, const CharT*))
225         (find(const CharT*, size_type), rfind(const CharT*, size_type))
226         (find_first_of(const CharT*, size_type))
227         (find_last_of(const CharT*, size_type))
228         (find_first_not_of(const CharT*, size_type))
229         (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
230         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
231         * testsuite/21_strings/basic_string_view/operations/compare/char/
232         nonnull.cc: New.
233         * testsuite/21_strings/basic_string_view/operations/find/char/
234         nonnull.cc: New.
235         * testsuite/21_strings/basic_string_view/operations/rfind/char/
236         nonnull.cc: New.
238         PR libstdc++/86168
239         * include/bits/random.h (random_device(const string&)): Remove
240         default argument.
242         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
243         define for C++17 and above.
245         LWG 2993 reference_wrapper<T> conversion from T&&
246         * doc/xml/manual/intro.xml: Document LWG 2993 change.
247         * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
248         (reference_wrapper(_Tp&&)): Remove.
249         (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
250         template.
251         (reference_wrapper): Add deduction guide.
252         * testsuite/20_util/reference_wrapper/deduction.cc: New.
253         * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
255         LWG 3039 Unnecessary decay in thread and packaged_task
256         * include/std/future (__constrain_pkgdtask): Replace with ...
257         (packaged_task::__not_same): New alias template, using
258         __remove_cvref_t instead of decay.
259         * include/std/thread (thread::__not_same): Add comment.
261 2018-06-14  Jonathan Wakely  <jwakely@redhat.com>
263         LWG 3075 basic_string needs deduction guides from basic_string_view
264         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
265         deduction from string views.
266         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
267         Likewise.
269         LWG 3074 make scalar types non-deduced in valarray non-member functions
270         * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
271         scalar parameters to be a non-deduced context.
272         * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
273         whitespace.
274         * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
275         * testsuite/26_numerics/valarray/transcend.cc: New.
277         * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
278         Move back to <utility>.
279         * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
280         Restore to here.
282         P0935R0 Eradicating unnecessarily explicit default constructors
283         * include/backward/strstream (strstreambuf): Add non-explicit default
284         constructor.
285         * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
286         Likewise.
287         * include/bits/regex.h (match_results): Likewise.
288         * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
289         default constructor.
290         * testsuite/22_locale/conversions/string/1.cc: Likewise.
291         * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
292         * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
294         * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
295         macro from <utility> and change type to long.
296         * include/std/utility (__cpp_lib_tuple_element_t): Remove.
297         * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
298         macro.
300         P0935R0 Eradicating unnecessarily explicit default constructors
301         * include/bits/random.h (uniform_real_distribution::param_type)
302         (normal_distribution::param_type, lognormal_distribution::param_type)
303         (gamma_distribution::param_type, chi_squared_distribution::param_type)
304         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
305         (student_t_distribution::param_type)
306         (bernoulli_distribution::param_type)
307         (binomial_distribution::param_type)
308         (geometric_distribution::param_type)
309         (negative_binomial_distribution::param_type)
310         (poisson_distribution::param_type)
311         (exponential_distribution::param_type)
312         (weibull_distribution::param_type)
313         (extreme_value_distribution::param_type): Add non-explicit default
314         constructors. Remove default argument for first parameter of explicit
315         constructors.
316         * include/bits/uniform_int_dist.h
317         (uniform_int_distribution::param_type): Likewise.
318         * include/ext/random
319         (beta_distribution::param_type, rice_distribution::param_type)
320         (nakagami_distribution::param_type, pareto_distribution::param_type)
321         (k_distribution::param_type, arcsine_distribution::param_type)
322         (hoyt_distribution::param_type, triangular_distribution::param_type)
323         (von_mises_distribution::param_type)
324         (hypergeometric_distribution::param_type)
325         (logistic_distribution::param_type)
326         (uniform_inside_sphere_distribution::param_type): Likewise.
327         (uniform_on_sphere_distribution::param_type): Make default constructor
328         non-explicit.
329         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
330         Test param_type for non-explicit default constructor.
331         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
332         Likewise.
333         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
334         Likewise.
335         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
336         Likewise.
337         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
338         Likewise.
339         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
340         Likewise.
341         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
342         Likewise.
343         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
344         Likewise.
345         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
346         Likewise.
347         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
348         Likewise.
349         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
350         Likewise.
351         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
352         Likewise.
353         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
354         Likewise.
355         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
356         Likewise.
357         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
358         Likewise.
359         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
360         Likewise.
361         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
362         Likewise.
363         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
364         Likewise.
365         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
366         Likewise.
367         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
368         Likewise.
369         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
370         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
371         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
372         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
373         Likewise.
374         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
375         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
376         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
377         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
378         Likewise.
379         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
380         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
381         * testsuite/ext/random/triangular_distribution/cons/default.cc:
382         Likewise.
383         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
384         Likewise.
385         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
386         Likewise.
387         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
388         Likewise.
390 2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
391             Jonathan Wakely  <jwakely@redhat.com>
393         PR libstdc++/83982
394         * include/bits/vector.tcc (vector::_M_default_append(size_type)):
395         Default-construct new elements before moving existing ones.
396         * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
397         New.
399 2018-06-13  Jonathan Wakely  <jwakely@redhat.com>
401         PR libstdc++/86127
402         * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
403         unused typedef.
404         (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
405         Use node allocator to create and destroy elements.
406         (forward_list::_Tp_alloc_type): Remove unused typedef.
407         (forward_list::_Alloc_traits): Use allocator_traits instead of
408         __gnu_cxx::__alloc_traits.
410 2018-06-13  François Dumont  <fdumont@gcc.gnu.org>
412         * include/debug/helper_functions.h
413         (__gnu_debug::_Safe_iterator<>): Add declaration.
414         (__can_advance(_Ite, _Size)): New.
415         (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
416         * include/debug/functions.h
417         (__gnu_debug::_Safe_iterator<>): Remove declaration.
418         * include/debug/stl_iterator.h
419         (__can_advance(const _Safe_iterator<>&)): New definition.
420         * include/debug/stl_iterator.h
421         (__can_advance(const std::reverse_iterator<>&, _Size)): New.
422         (__can_advance(const std::move_iterator<>&, _Size)): New.
423         * include/debug/macros.h (__glibcxx_check_can_increment): New.
424         * include/debug/debug.h (__glibcxx_requires_can_increment): New.
425         * include/bits/stl_algobase.h (fill_n): Use latter.
426         * testsuite/25_algorithms/fill_n/2.cc: New.
427         * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
428         * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
429         * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
430         * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
432         * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
433         (__glibcxx_requires_can_decrement_range): New.
435 2018-06-12  François Dumont  <fdumont@gcc.gnu.org>
437         * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
438         (__glibcxx_check_can_decrement_range): New.
439         * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
440         __glibcxx_requires_can_increment_range.
441         (std::move(_II, _II, _OI)): Likewise.
442         (std::copy_backward(_BI, _BI, _BI2)): Use
443         __glibcxx_requires_can_decrement_range.
444         (std::move_backward(_BI, _BI, _BI2)): Likewise.
445         * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
446         * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
447         * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
448         * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
449         * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
450         * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
452 2018-06-12  Jonathan Wakely  <jwakely@redhat.com>
454         P0935R0 Eradicating unnecessarily explicit default constructors
455         * include/bits/random.h (linear_congruential_engine)
456         (mersenne_twister_engine, subtract_with_carry_engine, random_device)
457         (uniform_real_distribution, normal_distribution)
458         (lognormal_distribution, gamma_distribution, chi_squared_distribution)
459         (cauchy_distribution, fisher_f_distribution, student_t_distribution)
460         (bernoulli_distribution, binomial_distribution,geometric_distribution)
461         (negative_binomial_distribution, exponential_distribution)
462         (weibull_distribution, extreme_value_distribution): Add non-explicit
463         default constructors. Remove default argument for first parameter of
464         explicit constructors.
465         (piecewise_constant_distribution, piecewise_linear_distribution):
466         Make default constructor non-explicit.
467         * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
468         non-explicit default constructors. Remove default argument for first
469         parameter of explicit constructor.
470         * include/ext/random
471         (simd_fast_mersenne_twister_engine, beta_distribution)
472         (rice_distribution, nakagami_distribution, pareto_distribution)
473         (k_distribution, arcsine_distribution, hoyt_distribution)
474         (triangular_distribution, von_mises_distribution)
475         (hypergeometric_distribution, logistic_distribution)
476         (uniform_inside_sphere_distribution): Likewise.
477         (uniform_on_sphere_distribution): Make default constructor
478         non-explicit.
479         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
480         Test for non-explicit default constructor. Fix references to standard.
481         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
482         Likewise.
483         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
484         Likewise.
485         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
486         Likewise.
487         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
488         Likewise.
489         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
490         Likewise.
491         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
492         Likewise.
493         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
494         Likewise.
495         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
496         Likewise.
497         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
498         Likewise.
499         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
500         Likewise.
501         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
502         Likewise.
503         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
504         Likewise.
505         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
506         Likewise.
507         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
508         Likewise.
509         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
510         Likewise.
511         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
512         Likewise.
513         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
514         Likewise.
515         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
516         Likewise.
517         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
518         Likewise.
519         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
520         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
521         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
522         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
523         Likewise.
524         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
525         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
526         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
527         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
528         Likewise.
529         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
530         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
531         * testsuite/ext/random/triangular_distribution/cons/default.cc:
532         Likewise.
533         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
534         Likewise.
535         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
536         Likewise.
537         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
538         Likewise.
539         * testsuite/util/testsuite_common_types.h
540         (implicitly_default_constructible): New helper.
542 2018-06-08  Jonathan Wakely  <jwakely@redhat.com>
544         * include/bits/ios_base.h (ios::Init::Init(const Init&))
545         (ios::Init::operator=): Define as defaulted.
546         * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
547         Likewise.
548         * include/bits/stream_iterator.h (istream_iterator::operator=)
549         (ostream_iterator::operator=): Likewise.
550         * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
551         Likewise.
552         * include/std/bitset (bitset::reference::reference(const reference&)):
553         Likewise.
554         * include/std/complex (complex<float>::complex(const complex&))
555         (complex<double>::complex(const complex&))
556         (complex<long double>::complex(const complex&)): Likewise.
558 2018-06-07  Jonathan Wakely  <jwakely@redhat.com>
560         * include/bits/regex.h (sub_match): Add noexcept to default
561         constructor and length observer.
562         (match_results): Add noexcept to default constructor and observers
563         with no preconditions. Define destructor as defaulted.
564         (operator==, operator!=, swap): Add noexcept.
565         (regex_iterator): Add default member initializers and define default
566         constructor and destructor as defaulted. Add noexcept to equality
567         and dereference operators.
569 2018-06-07  François Dumont  <fdumont@gcc.gnu.org>
571         * src/c++11/debug.cc
572         (_Safe_iterator_base::_M_detach()): Reset state only if needed.
573         (_Safe_iterator_base::_M_detach_single()): Likewise.
574         (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
575         (_Safe_local_iterator_base::_M_detach_single()): Likewise.
577 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
579         * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
580         move of const value.
582 2018-06-06  Jakub Jelinek  <jakub@redhat.com>
584         PR c++/86068
585         * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
586         rather than __cpp_transactional_memory >= 201505L.
588 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
590         PR libstdc++/86008
591         * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
592         Define new partial specialization.
593         * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
594         new overload.
595         (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
596         value not reference for iteration.
597         * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
598         comment.
599         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
600         * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
601         comment.
603 2018-06-05  Jonathan Wakely  <jwakely@redhat.com>
605         * include/std/type_traits: Fix comment typos.
607         * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
608         mingw* targets.
609         * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
610         * testsuite/experimental/filesystem/operations/read_symlink.cc:
611         Likewise.
613 2018-06-05  François Dumont  <fdumont@gcc.gnu.org>
615         * include/bits/stl_tempbuf.h
616         (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
617         (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
618         * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
619         * include/bits/stl_algo.h (__stable_partition): Adapt.
620         (__inplace_merge): Adapt.
621         (__stable_sort): Adapt.
623 2018-06-04  Jonathan Wakely  <jwakely@redhat.com>
625         PR libstdc++/85930
626         * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
627         unconditionally. Remove redundant declaration.
628         [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
629         alignment-specifier.
631         * include/bits/postypes.h (fpos): Define special members as defaulted.
633         PR libstdc++/85930
634         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
635         the static variable correctly.
637 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
639         PR libstdc++/78870 support std::filesystem on Windows
640         * config.h.in: Regenerate.
641         * configure: Regenerate.
642         * configure.ac: Check for link, readlink and symlink.
643         * include/bits/fs_path.h (path::operator/=(const path&)): Move
644         definition out of class body.
645         (path::is_absolute(), path::_M_append(path)): Likewise.
646         (operator<<(basic_ostream, const path&)): Use std::quoted directly.
647         (operator>>(basic_istream, path&)): Likewise.
648         (u8path): Reorder definitions and fix Windows implementation.
649         (path::is_absolute()): Define inline and fix for Windows.
650         [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
651         Define POSIX version inline.
652         (path::_M_append(path)): Define inline.
653         * include/experimental/bits/fs_path.h (path::is_absolute()): Move
654         definition out of class body.
655         (operator<<(basic_ostream, const path&)): Fix type of delimiter and
656         escape characters.
657         (operator>>(basic_istream, path&)): Likewise.
658         (path::is_absolute()): Define inline and fix for Windows.
659         * src/filesystem/dir-common.h (__gnu_posix): New namespace.
660         (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
661         (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
662         Define as adaptors for Windows functions/types or as
663         using-declarations for POSIX functions/types.
664         (_Dir_base, get_file_type): Qualify names to use declarations from
665         __gnu_posix namespace.
666         (_Dir_base::is_dor_or_dotdot): New helper functions.
667         * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
668         names to use declarations from __gnu_posix namespace.
669         * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
670         (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
671         (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
672         (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
673         (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
674         (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
675         Define as adaptors for Windows functions/types or as
676         using-declarations for POSIX functions/types.
677         (stat_type, do_copy_file): Qualify names to use declarations from
678         __gnu_posix namespace.
679         (do_space): Declare new function.
680         (make_file_type): Only use S_ISLNK if defined.
681         * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
682         path::value_type not char.
683         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
684         names to use declarations from __gnu_posix namespace.
685         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
686         add implementation for Windows.
687         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
688         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
689         [!_PC_PATH_MAX]: Don't use pathconf.
690         [PATH_MAX]: Use if defined.
691         (filesystem::current_path(const path&, error_code&))
692         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
693         (filesystem::last_write_time, filesystem::permissions): Use names
694         from __gnu_posix.
695         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
696         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
697         implementation for Windows.
698         (filesystem::rename, filesystem::resize_file): Use names from
699         __gnu_posix.
700         (filesystem::space): Use do_space.
701         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
702         (filesystem::status, filesystem::symlink_status): Use names from
703         __gnu_posix.
704         (filesystem::temp_directory_path): Add implementation for Windows.
705         * src/filesystem/path.cc (dot): Define constant.
706         (path::replace_extension): Use dot.
707         (path::_M_find_extension): Likewise. Use path::string_type not
708         std::string.
709         (path::_M_split_cmpts): Use dot.
710         (filesystem_error::_M_get_what): Use u8string() not native().
711         * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
712         Qualify names to use declarations from __gnu_posix namespace.
713         * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
714         correct error_code.
715         (filesystem::absolute(const path&, error_code&)): Add implementation
716         for Windows.
717         (char_ptr, filesystem::canonical): Use path::value_type not char.
718         (do_copy_file): Use names from __gnu_posix.
719         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
720         sendfile.
721         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
722         names to use declarations from __gnu_posix namespace.
723         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
724         add implementation for Windows.
725         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
726         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
727         [!_PC_PATH_MAX]: Don't use pathconf.
728         [PATH_MAX]: Use if defined.
729         (filesystem::current_path(const path&, error_code&))
730         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
731         (filesystem::last_write_time, filesystem::permissions): Use names
732         from __gnu_posix.
733         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
734         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
735         implementation for Windows.
736         (filesystem::rename, filesystem::resize_file): Use names from
737         __gnu_posix.
738         (do_space): Define.
739         (filesystem::space): Use do_space.
740         (filesystem::status, filesystem::symlink_status): Use names from
741         __gnu_posix.
742         (filesystem::temp_directory_path): Add implementation for Windows.
743         * src/filesystem/std-path.cc
744         [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
745         Define for Windows.
746         (dot): Define constant.
747         (path::replace_extension, is_dot): Use dot.
748         (path::lexically_normal): Check _M_type instead of calling
749         non-existent function.
750         (path::_M_find_extension): Use dot. Use path::string_type not
751         std::string.
752         (path::_M_split_cmpts): Use dot.
753         (filesystem_error::_M_get_what): Use u8string() not native().
754         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
755         use symlinks.
756         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
757         Likewise.
758         * testsuite/27_io/filesystem/operations/absolute.cc: Use
759         __gnu_test::root_path() instead of "/" and add Windows-specific tests.
760         * testsuite/27_io/filesystem/operations/canonical.cc: Use
761         path::string() to get narrow string, not path::native().
762         * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
763         with std::filesystem::path not std::basic_string.
764         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
765         * testsuite/27_io/filesystem/operations/exists.cc: Use
766         __gnu_test::root_path() instead of "/".
767         * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
768         fstreams with std::filesystem::path not std::basic_string.
769         * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
770         path::string() to get narrow string.
771         * testsuite/27_io/filesystem/operations/space.cc: Check results for
772         errors, expect sensible values otherwise.
773         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
774         helpers for adjusting the environment on Windows.
775         * testsuite/27_io/filesystem/path/append/path.cc: Test
776         Windows-specific behaviour.
777         * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
778         of path::string_type objects.
779         * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
780         string to wide string on Windows.
781         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
782         for backslash as root-directory.
783         * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
784         path::string() to get narrow string.
785         * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
786         paths.
787         * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
788         not std::string.
789         * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
790         different definintion of absolute paths on Windows.
791         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
792         Do not use symlinks.
793         * testsuite/experimental/filesystem/operations/absolute.cc: Test
794         Windows behaviour.
795         * testsuite/experimental/filesystem/operations/copy.cc: Construct
796         fstreams with NTCTS not std::basic_string.
797         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
798         * testsuite/experimental/filesystem/operations/exists.cc: Use
799         __gnu_test::root_path() instead of "/".
800         * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
801         fstreams with NTCTS not std::basic_string.
802         * testsuite/experimental/filesystem/operations/last_write_time.cc:
803         Use path::string() to get narrow string.
804         * testsuite/experimental/filesystem/operations/space.cc: Use
805         __gnu_test::root_path() instead of "/".
806         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
807         Add helpers for adjusting the environment on Windows.
808         * testsuite/experimental/filesystem/path/append/path.cc: Use
809         path::string() to get narrow strings for comparisons.
810         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
811         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
812         Likewise.
813         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
814         * testsuite/experimental/filesystem/path/native/string.cc: Use
815         string_type not std::string.
816         * testsuite/experimental/filesystem/path/query/is_absolute.cc:
817         Adjust for different definintion of absolute paths on Windows.
818         * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
819         function.
820         (__gnu_test::scoped_file): Construct fstreams with NTCTS not
821         std::basic_string.
823 2018-05-31  Jonathan Wakely  <jwakely@redhat.com>
825         PR libstdc++/85951
826         * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
827         uint_least16_t and uint_least32_t.
828         (__make_unsigned<wchar_t>): Define unconditionally.
829         (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
830         typedefs.
831         (__make_unsigned_selector_base): New type to provide helper templates.
832         (__make_unsigned_selector<_Tp, false, true>): Reimplement using
833         __make_unsigned_selector_base helpers.
834         (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
835         (__make_signed_selector<_Tp, true, false>): Remove intermediate
836         typedefs.
837         (__make_signed<wchar_t>, __make_signed<char16_t>)
838         (__make_signed<char32_t>)): Define unconditionally.
839         * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
840         wchar_t, char16_t and char32_t are transformed correctly.
841         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
842         dg-error lineno.
843         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
844         wchar_t, char16_t and char32_t are transformed correctly.
845         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
846         dg-error lineno.
848 2018-05-29  Jonathan Wakely  <jwakely@redhat.com>
850         * include/std/variant (__erased_dtor): Qualify call to __get.
852 2018-05-27  François Dumont  <fdumont@gcc.gnu.org>
854         * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
855         (_Rb_tree(const allocator_type&)): Use latter.
856         * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
857         (map(initializer_list<value_type>, const allocator_type&)): Likewise.
858         (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
859         * include/bits/stl_multimap.h
860         (multimap(const allocator_type&)): Likewise.
861         (multimap(initializer_list<value_type>, const allocator_type&)):
862         Likewise.
863         (multimap(_InputIterator, _InputIterator, const allocator_type&)):
864         Likewise.
865         * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
866         (set(initializer_list<value_type>, const allocator_type&)): Likewise.
867         (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
868         * include/bits/stl_multiset.h
869         (multiset(const allocator_type&)): Likewise.
870         (multiset(initializer_list<value_type>, const allocator_type&)):
871         Likewise.
872         (multiset(_InputIterator, _InputIterator, const allocator_type&)):
873         Likewise.
875 2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
877         PR libstdc++/85768
878         * src/c++11/debug.cc: Remove backtrace usage.
880 2018-05-24  Maya Rashish  <coypu@sdf.org>
882         PR target/85904
883         * crossconfig.m4: Test for aligned_alloc on netbsd.
884         * configure: Regenerate.
886 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
888         PR libstdc++/69769
889         PR libstdc++/85886
890         * include/bits/atomic_base.h (__atomic_base::value_type)
891         (__atomic_base::difference_type): Add new typedefs.
892         * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
893         (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
894         (atomic<T*>::operator++, atomic<T*>::operator--)
895         (atomic<T*>::operator+=, atomic<T*>::operator-=)
896         (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
897         to enforce C++17 requirement on pointer arithmetic.
898         (__atomic_val_t, __atomic_diff_t): New alias templates.
899         (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
900         (atomic_compare_exchange_weak_explicit)
901         (atomic_compare_exchange_strong_explicit, atomic_store)
902         (atomic_exchange, atomic_compare_exchange_weak)
903         (atomic_compare_exchange_strong): Use __atomic_val_t to make
904         scalar parameters be non-deduced contexts.
905         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
906         (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
907         atomic instead of __atomic_base, and use __atomic_diff_t for scalar
908         parameters.
909         (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
910         (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
911         (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
912         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
913         (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
914         address types.
915         * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
916         * testsuite/29_atomics/atomic/69769.cc: New test.
917         * testsuite/29_atomics/atomic/nonmembers.cc: New test.
918         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
919         Disable test for C++17 and later.
920         * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
921         * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
922         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
923         test.
925 2018-05-23  Jonathan Wakely  <jwakely@redhat.com>
927         * include/bits/fs_path.h (path::__is_encoded_char): Change from class
928         template to alias template.
929         (path::__value_type_is_char): Use remove_const_t.
930         (path:_S_string_from_iter): New helper function.
931         (path::_S_convert(InputIter, __null_terminated))
932         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
933         Use _S_string_from_iter.
934         (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
935         rep for COW strings.
936         * include/experimental/bits/fs_path.h (path::__is_encoded_char):
937         Change from class template to alias template.
938         (path::__value_type_is_char): Use remove_const.
939         (path:_S_string_from_iter): New helper function.
940         (path::_S_convert(InputIter, __null_terminated))
941         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
942         Use _S_string_from_iter.
943         * testsuite/27_io/filesystem/path/append/source.cc: Test appending
944         wide strings.
945         * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
946         string equality, not path equivalence.
947         * testsuite/27_io/filesystem/path/construct/format.cc: Check
948         construction from std::string and std::wstring and input iterators.
949         * testsuite/27_io/filesystem/path/construct/locale.cc: Check
950         construction from iterators.
951         * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
952         exact string equality, not path equivalence.
953         * testsuite/experimental/filesystem/path/construct/locale.cc: Check
954         construction from iterators.
956         * include/bits/fs_path.h (path::_M_type): Change default member
957         initializer to _Filename.
958         (path::begin): Create past-the-end iterator for empty path.
959         * src/filesystem/std-path.cc (path::remove_filename()): Remove
960         debugging check.
961         (path::has_relative_path()): Return false for empty filenames.
962         (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
963         Fix offset of empty final component.
964         * testsuite/27_io/filesystem/path/itr/components.cc: New.
965         * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
967 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
969         Add support for opening file streams from wide character strings.
970         * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
971         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
972         Define new overload.
973         * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
974         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
975         Declare new overload.
976         * configure.ac: Check for _wfopen.
977         * crossconfig.m4: Likewise.
978         * configure: Regenerate.
979         * config.h.in: Regenerate.
980         * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
981         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
982         Define new overload.
983         * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
984         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
985         Declare new overload.
986         [_GLIBCXX_HAVE__WFOPEN]
987         (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
988         (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
989         (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
990         (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
991         (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
992         (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
993         new overloads.
994         * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
995         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
996         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
997         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
998         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
999         * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
1000         * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
1002 2018-05-21  François Dumont  <fdumont@gcc.gnu.org>
1004         PR libstdc++/85845
1005         * include/bits/stl_tree.h
1006         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
1007         qualification.
1009 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
1011         * src/filesystem/std-ops.cc (absolute): Report an error for empty
1012         paths.
1013         (weakly_canonical(const path&)): Do not call canonical on empty path.
1014         (weakly_canonical(const path&, error_code&)): Likewise.
1015         * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
1017         PR libstdc++/85818
1018         * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
1019         dg-require-filesystem-ts.
1021         PR libstdc++/85843
1022         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
1023         initialize base class to avoid warnings.
1025 2018-05-19  Jonathan Wakely  <jwakely@redhat.com>
1027         * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
1028         [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
1029         little_endian element in bitmask.
1030         * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
1031         * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
1033 2018-05-18  François Dumont  <fdumont@gcc.gnu.org>
1035         * include/bits/stl_tree.h
1036         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
1037         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
1038         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
1039         (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
1040         * include/debug/map.h
1041         (map(map&&, const_allocator_type&)): Add noexcept qualitication.
1042         * include/debug/multimap.h
1043         (multimap(multimap&&, const_allocator_type&)): Likewise.
1044         * include/debug/set.h
1045         (set(set&&, const_allocator_type&)): Likewise.
1046         * include/debug/multiset.h
1047         (multiset(multiset&&, const_allocator_type&)): Likewise.
1048         * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
1049         Add checks.
1050         * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
1051         Add checks.
1052         * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
1053         Add checks.
1054         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
1055         Add checks.
1056         * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
1057         Add checks.
1058         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
1059         Add checks.
1060         * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
1061         Add checks.
1062         * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
1063         Add checks.
1065 2018-05-18  Jason Merrill  <jason@redhat.com>
1067         * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
1068         for conversion to const_iterator.  Add defaulted copy ops.
1069         * libsupc++/new (bad_alloc): Add defaulted copy ops.
1070         * libsupc++/exception.h (exception): Add defaulted copy ops.
1071         * include/std/system_error (system_error): Add defaulted copy ops.
1072         * include/std/stdexcept (domain_error, invalid_argument)
1073         (length_error, out_of_range, range_error, overflow_error)
1074         (underflow_error): Add defaulted copy ops.
1075         * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
1076         copy assignment.
1077         * include/bits/allocator.h (allocator): Add defaulted copy assignment.
1078         * include/ext/throw_allocator.h (condition_base): Add defaulted
1079         default and copy ctor and copy assignment.
1081 2018-05-18  Jonathan Wakely  <jwakely@redhat.com>
1083         PR libstdc++/85098
1084         * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
1085         (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
1086         (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
1087         (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
1088         definitions.
1089         * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
1090         whitespace.
1091         * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
1092         braces around body of do-while.
1093         * testsuite/28_regex/basic_regex/85098.cc: New
1095 2018-05-17  Jonathan Wakely  <jwakely@redhat.com>
1097         PR libstdc++/85818
1098         * src/filesystem/path.cc (path::preferred_separator): Add used
1099         attribute.
1100         * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
1102         PR libstdc++/85812
1103         * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
1104         * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
1105         Refactor to separate non-throwing and throwing implementations.
1106         [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
1107         if constructing the object throws.
1109 2018-05-15  Jonathan Wakely  <jwakely@redhat.com>
1111         PR libstdc++/85749
1112         * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
1113         (linear_congruential_engine, mersenne_twister_engine)
1114         (subtract_with_carry_engine, discard_block_engine)
1115         (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
1116         constrain function templates taking seed sequences.
1117         * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
1118         (mersenne_twister_engine::seed(_Sseq&))
1119         (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
1120         match declarations.
1121         * include/ext/random (simd_fast_mersenne_twister_engine): Use
1122         __is_seed_seq to constrain function templates taking seed sequences.
1123         * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
1124         Change return type to match declaration.
1125         * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
1126         New.
1127         * testsuite/26_numerics/random/independent_bits_engine/cons/
1128         seed_seq2.cc: New.
1129         * testsuite/26_numerics/random/linear_congruential_engine/cons/
1130         seed_seq2.cc: New.
1131         * testsuite/26_numerics/random/mersenne_twister_engine/cons/
1132         seed_seq2.cc: New.
1133         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1134         * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
1135         New.
1136         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
1137         seed_seq2.cc: New.
1138         * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
1139         seed_seq2.cc: New.
1141         PR libstdc++/83891
1142         * include/bits/fs_path.h (path::is_absolute()): Use same definition
1143         for all operating systems.
1144         * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
1145         * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
1146         * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
1147         * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
1149         * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
1150         unused <vector> header.
1151         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
1152         * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
1153         * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
1154         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
1155         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
1156         Likewise.
1157         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
1158         Likewise.
1159         * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
1160         * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
1161         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
1162         * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
1163         * testsuite/experimental/filesystem/path/decompose/extension.cc:
1164         Likewise.
1165         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
1166         * testsuite/experimental/filesystem/path/query/has_extension.cc:
1167         Likewise.
1168         * testsuite/experimental/filesystem/path/query/has_filename.cc:
1169         Likewise.
1170         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
1171         Likewise.
1172         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
1173         Likewise.
1174         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
1175         Likewise.
1176         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
1177         Likewise.
1178         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
1179         Likewise.
1180         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
1181         * testsuite/experimental/filesystem/path/query/is_relative.cc:
1182         Likewise.
1184         PR libstdc++/84159
1185         * include/bits/fs_path.h (path::operator/=, path::append): Construct
1186         temporary path before calling _M_append.
1187         (path::_M_append): Change parameter to path and implement C++17
1188         semantics.
1189         * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
1190         and more examples from the standard.
1191         * testsuite/27_io/filesystem/path/append/source.cc: New.
1192         * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
1193         * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
1195         * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
1196         __invoke to prevent ADL.
1198 2018-05-14  Jonathan Wakely  <jwakely@redhat.com>
1200         PR libstdc++/81256
1201         * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
1202         exceptions from _M_terminate_output().
1203         * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
1204         exceptions from close().
1205         * testsuite/27_io/basic_filebuf/close/81256.cc: New.
1207         * include/bits/valarray_array.h (__valarray_get_memory): Remove.
1208         (__valarray_get_storage): Call operator new directly. Remove ignored
1209         top-level restrict qualifier and add malloc attribute instead.
1210         (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
1212         PR libstdc++/67554
1213         * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
1214         (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
1216         PR libstdc++/82966
1217         * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
1218         instead of type.
1219         * testsuite/23_containers/set/modifiers/node_swap.cc: New.
1221 2018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
1223         PR libstdc++/80165
1224         * testsuite/20_util/variant/80165.cc: New.
1226 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
1228         * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
1229         * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
1230         of C++11 containers with Debug Mode support.
1231         * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
1232         * doc/html/*: Regenerate.
1234 2018-05-10  Jason Merrill  <jason@redhat.com>
1236         * include/bits/regex_compiler.h (_S_cache_size): Change from
1237         function to variable.
1239 2018-05-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
1241         PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
1242         * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
1243         argument defaulted to +1.  Doxy comments on same.
1244         * testsuite/special_functions/02_assoc_legendre/
1245         check_value.cc: Regen.
1246         * testsuite/tr1/5_numerical_facilities/special_functions/
1247         02_assoc_legendre/check_value.cc: Regen.
1249 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
1251         PR libstdc++/85729
1252         * include/bits/c++config.h (__replacement_assert): Add linkage
1253         specification.
1254         * include/bits/std_abs.h: Add comment to closing brace of block.
1255         * include/c_global/cstddef: Add linkage specification.
1256         * include/c_global/cstring: Likewise.
1257         * include/c_global/cwchar: Likewise.
1259 2018-05-09  François Dumont  <fdumont@gcc.gnu.org>
1261         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
1262         Rename in...
1263         (_Safe_iterator<>::_S_constant()): ...that.
1264         * include/debug/safe_local_iterator.h
1265         (_Safe_local_iterator<>::_M_constant()): Rename in...
1266         (_Safe_local_iterator<>::_S_constant()): ...that.
1267         * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
1268         (_Iterator_state::__rbegin): New.
1269         (_Iterator_state::__rmiddle): New.
1270         (_Iterator_state::__rend): New.
1271         (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
1272         _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
1273         iterator type.
1274         (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
1275         _Is_iterator)): Likewise.
1276         (_Parameter::_S_reverse_state(_Iterator_state)): New.
1277         (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
1278         _Is_iterator)): New.
1279         (_Parameter(std::reverse_iterator<> const&, const char*,
1280         _Is_iterator)): New.
1281         (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
1282         const char*, _Is_iterator)): New.
1283         (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
1284         New.
1285         (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
1286         _Is_iterator)): New.
1287         * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
1288         * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
1289         * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
1291 2018-05-09  Jonathan Wakely  <jwakely@redhat.com>
1293         * include/bits/std_function.h (_Base_manager::_M_get_pointer):
1294         Use constexpr if in C++17 mode.
1295         (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
1296         Copy from const object.
1297         * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
1299 2018-05-08  François Dumont  <fdumont@gcc.gnu.org>
1301         * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
1302         [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
1303         backtrace.
1305         * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
1306         * include/debug/functions.h (__check_valid_range): Use latter.
1307         * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
1308         use latter.
1309         * include/debug/deque
1310         (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
1311         * include/debug/forward_list
1312         (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
1313         Likewise.
1314         * include/debug/list
1315         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
1316         * include/debug/list
1317         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
1318         * include/debug/map.h
1319         (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
1320         (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
1321         Likewise.
1322         * include/debug/multimap.h
1323         (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
1324         (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
1325         const _Alloc&)): Likewise.
1326         * include/debug/set.h
1327         (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
1328         (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
1329         Likewise.
1330         * include/debug/multiset.h
1331         (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
1332         (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
1333         const _Alloc&)): Likewise.
1334         * include/debug/string
1335         (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
1336         Likewise.
1337         * include/debug/unordered_map
1338         (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
1339         Likewise.
1340         (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
1341         const _Alloc&)): Likewise.
1342         * include/debug/unordered_set
1343         (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
1344         Likewise.
1345         (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
1346         const _Alloc&)): Likewise.
1347         * include/debug/vector
1348         (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
1350         * include/debug/formatter.h (_Error_formatter::_M_function): New.
1351         (_Error_formatter(const char*, unsigned int)): Adapt.
1352         (_Error_formatter::_M_at): Rename in...
1353         (_Error_formatter::_S_at): ...that and adapt.
1354         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
1355         (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
1356         * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
1357         when available.
1359 2018-05-08  Jonathan Wakely  <jwakely@redhat.com>
1361         * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
1362         Use normal std::vector even in Debug Mode.
1364         PR libstdc++/85672
1365         * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
1366         to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
1367         * include/Makefile.in: Regenerate.
1368         * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
1369         within conditional block.
1371 2018-05-07  Jonathan Wakely  <jwakely@redhat.com>
1373         * doc/xml/manual/using.xml (table.cmd_options): Document that the
1374         C++17 Filesystem implementation also needs -lstdc++fs.
1376         PR libstdc++/85671
1377         * include/bits/fs_path.h (operator/): Permit copy elision.
1378         * include/experimental/bits/fs_path.h (operator/): Likewise.
1380 2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
1382         Moar PR libstdc++/80506
1383         * include/bits/random.tcc (gamma_distribution::__generate_impl()):
1384         Fix magic number used in loop condition.
1386 2018-05-04  Jonathan Wakely  <jwakely@redhat.com>
1388         PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
1389         * include/std/optional (_Optional_payload): Add noexcept to default
1390         constructor. Re-indent.
1391         (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
1392         constructor for copying disengaged payloads.
1393         (_Optional_payload<_Tp, true, false, true>): Likewise.
1394         (_Optional_payload<_Tp, true, true, false>): Likewise.
1395         (_Optional_payload<_Tp, true, false, false>): Likewise.
1396         * testsuite/20_util/optional/cons/85642.cc: New.
1397         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
1399 2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
1401         PR libstdc++/82644
1402         * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
1403         inline definitions instead of using-declarations.
1404         [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
1405         * testsuite/tr1/5_numerical_facilities/special_functions/
1406         07_conf_hyperg/compile_cxx17.cc: New.
1407         * testsuite/tr1/5_numerical_facilities/special_functions/
1408         17_hyperg/compile_cxx17.cc: New.
1410         PR libstdc++/84769
1411         * include/std/variant (visit): Qualify std::get call.
1413         PR libstdc++/85632 use uintmax_t for arithmetic
1414         * src/filesystem/ops.cc (experimental::filesystem::space): Perform
1415         arithmetic in result type.
1416         * src/filesystem/std-ops.cc (filesystem::space): Likewise.
1417         * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
1418         is greater than free space.
1419         * testsuite/experimental/filesystem/operations/space.cc: New.
1421         * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
1422         * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
1423         New.
1424         * testsuite/20_util/remove_cvref/value.cc: New.
1425         * testsuite/20_util/remove_cvref/value_ext.cc: New.
1427         PR libstdc++/84087 LWG DR 2268 basic_string default arguments
1428         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
1429         (append(const basic_string&, size_type, size_type)
1430         (assign(const basic_string&, size_type, size_type)
1431         (insert(size_type, const basic_string&, size_type, size_type)
1432         (replace(size_type,size_type,const basic_string&,size_type,size_type)
1433         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
1434         Add default arguments (LWG 2268).
1435         [_GLIBCXX_USE_CXX11_ABI=0]
1436         (append(const basic_string&, size_type, size_type)
1437         (assign(const basic_string&, size_type, size_type)
1438         (insert(size_type, const basic_string&, size_type, size_type)
1439         (replace(size_type,size_type,const basic_string&,size_type,size_type)
1440         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
1441         Likewise.
1442         * testsuite/21_strings/basic_string/dr2268.cc: New test.
1444         PR libstdc++/84535
1445         * include/std/thread (thread::__not_same): New SFINAE helper.
1446         (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
1447         first argument is not a std::thread. Add static assertion to check
1448         INVOKE expression is valid.
1449         (thread::thread(thread&), thread::thread(const thread&&)): Remove.
1450         (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
1451         __invoke_result for return types and remove exception specifications.
1452         * testsuite/30_threads/thread/cons/84535.cc: New.
1454         * include/std/future (__async_result_of): Use __invoke_result instead
1455         of result_of.
1457         * include/std/any (any_cast): Use __remove_cvref_t.
1458         * include/std/tuple (__make_tuple): Likewise.
1459         * include/std/type_traits (__remove_cvref_t): Define.
1460         (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
1461         [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
1462         * include/std/variant (__erased_hash): Use __remove_cvref_t.
1464 2018-05-02  François Dumont  <fdumont@gcc.gnu.org>
1466         * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
1467         ensure overloaded comma not used.
1468         * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
1469         * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
1470         * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
1471         * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
1472         * testsuite/23_containers/list/modifiers/assign/1.cc: New.
1473         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
1474         * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
1476 2018-05-02  Jonathan Wakely  <jwakely@redhat.com>
1478         PR libstdc++/68197
1479         * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
1480         indices to unsigned.
1481         * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
1482         as failure. Refactor error handling.
1483         * testsuite/27_io/ios_base/storage/68197.cc: New.
1485         PR libstdc++/57997
1486         PR libstdc++/83860
1487         * include/bits/gslice_array.h (gslice_array): Define default
1488         constructor as deleted, as per C++11 standard.
1489         * include/bits/mask_array.h (mask_array): Likewise.
1490         * include/bits/slice_array.h (slice_array): Likewise.
1491         * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
1492         to namespace __detail.
1493         (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
1494         members.
1495         * include/bits/valarray_before.h (_ValArrayRef): New helper for type
1496         of data members in closure objects.
1497         (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
1498         (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
1499         __detail.
1500         (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
1501         (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
1502         (_SBase::_M_expr): Use _ValArrayRef for type of data members.
1503         * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
1504         (_ValFunClos, _RefFunClos): Move to namespace __detail and add
1505         using-declarations to namespace std.
1506         * testsuite/26_numerics/valarray/83860.cc: New.
1508         * testsuite/backward/strstream_move.cc: Remove duplicate function
1509         call.
1511         PR libstdc++/69608
1512         * include/backward/strstream (strstreambuf): Define move constructor
1513         and move assignment operator.
1514         (istrstream, ostrstream, strstream): Likewise.
1515         * testsuite/backward/strstream_move.cc: New.
1517 2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
1519         PR libstdc++/84654
1520         * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
1521         * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
1522         * configure: Regenerate.
1523         * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
1524         based on ENABLE_FLOAT128.
1525         * include/Makefile.in: Regenerate.
1526         * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
1527         [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
1528         _GLIBCXX_USE_FLOAT128.
1530 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
1532         * configure: Regenerated.
1534 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
1536         * configure: Regenerated.
1538 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
1539             Jakub Jelinek  <jakub@redhat.com>
1541         PR libstdc++/85442
1542         * src/c++11/Makefile.am: Don't generate debuginfo again for
1543         cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
1544         * src/c++11/Makefile.in: Regenerate.
1546 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
1548         PR libstdc++/84442
1549         * testsuite/30_threads/thread/cons/terminate.cc
1550         [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
1552 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
1554         PR jit/85384
1555         * configure: Regenerate.
1557 2018-04-16  Jonathan Wakely  <jwakely@redhat.com>
1559         * testsuite/experimental/filesystem/file_status/1.cc: Add
1560         -DUSE_FILESYSTEM_TS to dg-options.
1561         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
1562         Likewise.
1563         * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
1564         * testsuite/experimental/filesystem/iterators/
1565         recursive_directory_iterator.cc: Likewise.
1566         * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
1567         * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
1568         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
1569         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
1570         * testsuite/experimental/filesystem/operations/create_directories.cc:
1571         Likewise.
1572         * testsuite/experimental/filesystem/operations/create_directory.cc:
1573         Likewise.
1574         * testsuite/experimental/filesystem/operations/create_symlink.cc:
1575         Likewise.
1576         * testsuite/experimental/filesystem/operations/current_path.cc:
1577         Likewise.
1578         * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
1579         * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
1580         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
1581         * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
1582         * testsuite/experimental/filesystem/operations/last_write_time.cc:
1583         Likewise.
1584         * testsuite/experimental/filesystem/operations/permissions.cc:
1585         Likewise.
1586         * testsuite/experimental/filesystem/operations/read_symlink.cc:
1587         Likewise.
1588         * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
1589         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
1590         * testsuite/experimental/filesystem/operations/status.cc: Likewise.
1591         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
1592         Likewise.
1593         * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
1594         * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
1595         * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
1596         * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
1597         * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
1598         * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
1599         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
1600         * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
1601         * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
1602         * testsuite/experimental/filesystem/path/construct/default.cc:
1603         Likewise.
1604         * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
1605         * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
1606         * testsuite/experimental/filesystem/path/construct/string_view.cc:
1607         Likewise.
1608         * testsuite/experimental/filesystem/path/decompose/extension.cc:
1609         Likewise.
1610         * testsuite/experimental/filesystem/path/decompose/filename.cc:
1611         Likewise.
1612         * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
1613         Likewise.
1614         * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
1615         Likewise.
1616         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
1617         Likewise.
1618         * testsuite/experimental/filesystem/path/decompose/root_name.cc:
1619         Likewise.
1620         * testsuite/experimental/filesystem/path/decompose/root_path.cc:
1621         Likewise.
1622         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
1623         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
1624         Likewise.
1625         * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
1626         * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
1627         * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
1628         Likewise.
1629         * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
1630         Likewise.
1631         * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
1632         Likewise.
1633         * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
1634         Likewise.
1635         * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
1636         * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
1637         * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
1638         Likewise.
1639         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
1640         * testsuite/experimental/filesystem/path/query/has_extension.cc:
1641         Likewise.
1642         * testsuite/experimental/filesystem/path/query/has_filename.cc:
1643         Likewise.
1644         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
1645         Likewise.
1646         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
1647         Likewise.
1648         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
1649         Likewise.
1650         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
1651         Likewise.
1652         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
1653         Likewise.
1654         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
1655         * testsuite/experimental/filesystem/path/query/is_relative.cc:
1656         Likewise.
1658 2018-04-13  Jonathan Wakely  <jwakely@redhat.com>
1660         * src/c++11/Makefile.am: Fix sed command.
1661         * src/c++11/Makefile.in: Regenerate.
1663         * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
1664         handle mangled names starting with double underscores on darwin.
1665         * src/c++11/Makefile.in: Regenerate.
1667 2018-04-12  Jonathan Wakely  <jwakely@redhat.com>
1669         * src/c++11/Makefile.am: Fix comment.
1670         * src/c++11/Makefile.in: Regenerate.
1671         * src/c++11/cxx11-ios_failure.cc: Fix comment.
1672         * src/c++98/ios_failure.cc: Likewise.
1674         * src/c++11/ios.cc: Remove redundant macro definition.
1676 2018-04-11  Jonathan Wakely  <jwakely@redhat.com>
1678         * doc/xml/manual/abi.xml: Document header locations in recent
1679         releases.
1680         * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
1681         * doc/xml/manual/spine.xml: Update copyright years.
1682         * doc/xml/manual/strings.xml: Adjust tolower example to avoid
1683         undefined behaviour.
1684         * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
1685         * doc/html/*: Regenerate.
1687 2018-04-10  Jonathan Wakely  <jwakely@redhat.com>
1689         * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
1690         * doc/xml/manual/backwards_compatibility.xml: Likewise.
1691         * doc/xml/manual/containers.xml: Likewise.
1692         * doc/xml/manual/debug_mode.xml: Likewise.
1693         * doc/xml/manual/extensions.xml: Likewise.
1694         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
1695         * doc/xml/manual/using.xml: Likewise.
1696         * doc/xml/manual/utilities.xml: Likewise.
1698         PR libstdc++/85222
1699         * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
1700         cxx11-ios_failure.cc to rewrite type info for __ios_failure.
1701         * src/c++11/Makefile.in: Regenerate.
1702         * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
1703         New types.
1704         [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
1705         * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
1706         * src/c++98/ios_failure.cc (__construct_ios_failure)
1707         (__destroy_ios_failure, is_ios_failure_handler): New functions.
1708         [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
1709         * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
1710         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
1711         handler types, to always catch std::ios_base::failure.
1712         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
1713         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
1714         exceptions_failbit.cc: Likewise.
1715         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
1716         exceptions_failbit.cc: Likewise.
1717         * testsuite/27_io/basic_istream/extractors_other/char/
1718         exceptions_null.cc: Likewise.
1719         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
1720         exceptions_null.cc: Likewise.
1721         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
1722         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
1723         * testsuite/27_io/basic_ostream/inserters_other/char/
1724         exceptions_null.cc: Likewise.
1725         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
1726         exceptions_null.cc: Likewise.
1727         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
1729 2018-04-05  Jonathan Wakely  <jwakely@redhat.com>
1731         * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
1732         __get calls to avoid ADL and avoid ambiguity due to Clang bug.
1734 2018-04-03  Jonathan Wakely  <jwakely@redhat.com>
1736         PR libstdc++/85183
1737         * include/std/variant (_Move_assign_base::operator=): Fix incorrect
1738         value categories.
1739         * testsuite/20_util/variant/85183.cc: New.
1741 2018-03-26  Jonathan Wakely  <jwakely@redhat.com>
1743         * include/std/variant (__get): Qualify calls to avoid ADL.
1744         (__select_index): Adjust whitespace.
1745         (variant): Add using-declaration to workaround Clang bug.
1747 2018-03-22  Jonathan Wakely  <jwakely@redhat.com>
1749         PR libstdc++/85040
1750         * include/bits/stl_function.h (greater::__not_overloaded)
1751         (less::__not_overloaded, greater_equal::__not_overloaded)
1752         (less_equal::__not_overloaded): Fix ambiguous specializations.
1753         * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
1754         tests for type with overloaded operators.
1756 2018-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1758         PR libstdc++/77691
1759         * testsuite/experimental/memory_resource/resource_adaptor.cc:
1760         xfail execution on 32-bit Solaris/x86.
1762 2018-03-21  Jonathan Wakely  <jwakely@redhat.com>
1764         * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
1765         VERIFY instead of assert.
1766         * testsuite/20_util/hash/84998.cc: New test.
1767         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
1768         copy of test adjusted for Debug Mode.
1769         * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
1770         test in Debug Mode.
1772 2018-03-20  François Dumont  <fdumont@gcc.gnu.org>
1774         PR libstdc++/84998
1775         * include/bits/stl_bvector.h: Fix std::hash friend declaration.
1776         * include/std/bitset: Likewise.
1777         * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
1778         declaration.
1779         * include/bits/stl_multimap.h (std::multimap<>): Likewise.
1780         * include/bits/stl_multiset.h (std::multiset<>): Likewise.
1781         * include/bits/stl_set.h (std::set<>): Likewise.
1782         * include/bits/unordered_map.h (std::unordered_map<>): Fix
1783         _Hash_merge_helper friend declaration.
1784         (std::unordered_multimap<>): Likewise.
1785         * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
1786         (std::unordered_multiset<>): Likewise.
1788 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
1790         * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
1791         trailing slash for domain level link.
1792         * doc/xml/faq.xml: Ditto.
1793         * doc/xml/manual/appendix_free.xml (software): Ditto.
1794         * doc/xml/manual/intro.xml: Ditto.
1795         * doc/xml/manual/spine.xml: Ditto.
1796         * doc/xml/spine.xml: Ditto.
1798 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
1800         * doc/xml/manual/documentation_hacking.xml: Adjust link to
1801         docbook.org.
1803 2018-03-17  Jonathan Wakely  <jwakely@redhat.com>
1805         * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
1806         to compile as C++98.
1808 2018-03-14  Jonathan Wakely  <jwakely@redhat.com>
1810         PR libstdc++/78420
1811         * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
1812         (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
1813         to ensure total order for pointers.
1814         (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
1815         Add operator() overloads for pointer arguments and make generic
1816         overloads dispatch to new _S_cmp functions when comparisons would
1817         use built-in operators for pointers.
1818         * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
1820 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
1822         PR libstdc++/84773
1823         PR libstdc++/83662
1824         * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
1825         * configure: Regenerate.
1826         * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
1827         (aligned_alloc): Add using-declaration.
1828         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
1830 2018-03-09  François Dumont  <fdumont@gcc.gnu.org>
1832         * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
1833         Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
1834         registration.
1836 2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
1838         PR libstdc++/84769
1839         * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
1840         Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
1842         src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
1843         src/filesystem/std-ops.cc (create_dir): Likewise.
1845 2018-03-08  François Dumont  <fdumont@gcc.gnu.org>
1847         * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
1848         (StdListIteratorPrinter): Inherit from latter.
1849         (StdFwdListIteratorPrinter): New, inherit from latter.
1850         (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
1851         when iterator has no associated container.
1852         (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
1853         __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
1854         registrations.
1855         * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
1856         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
1858 2018-03-06  Ville Voutilainen  <ville.voutilainen@gmail.com>
1860         PR libstdc++/84601
1861         * include/std/optional (_Optional_payload): Split into multiple
1862         specializations that can handle different cases of trivial or
1863         non-trivial assignment operators.
1864         * testsuite/20_util/optional/84601.cc: New.
1865         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
1867 2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
1869         PR libstdc++/84671
1870         * include/bits/parse_numbers.h (_Number_help): Add partial
1871         specialization to handle digit separators. Adjust partial
1872         specialization for recursion temrination to require _Pow == 1ULL.
1873         * testsuite/20_util/duration/literals/84671.cc: New
1875 2018-02-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
1877         Implement the missing bits of LWG 2769
1878         * include/std/any (any_cast(const any&)): Add static_assert.
1879         (any_cast(any&)): Likewise.
1880         (any_cast(any&&)): Likewise, and remove the handling
1881         for copyable-but-not-movable type.
1882         * testsuite/20_util/any/misc/any_cast.cc: Adjust.
1883         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
1884         add new tests.
1886 2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
1888         PR libstdc++/84532
1889         * include/std/thread (thread::__make_invoker): Construct tuple
1890         directly instead of using make_tuple.
1891         * testsuite/30_threads/async/84532.cc: New.
1892         * testsuite/30_threads/thread/84532.cc: New.
1894 2018-02-20  François Dumont  <fdumont@gcc.gnu.org>
1896         * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
1897         (template<> __aligned_buffer): Define as __aligned_membuf alias.
1899 2018-02-19  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
1901         PR target/84148
1902         * configure: Regenerate.
1904 2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
1906         PR libstdc++/81797
1907         * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
1908         * configure: Regenerate.
1909         * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
1910         defined.
1911         * include/Makefile.in: Regenerate.
1913 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
1915         PR libstdc++/83833
1916         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
1917         Add -ffloat-store to options for m68k and ia32.
1919         * doc/xml/faq.xml: Update copyright years.
1920         * doc/html/*: Regenerate.
1922         PR libstdc++/83658
1923         * include/std/any (any::__do_emplace): Only set _M_manager after
1924         constructing the contained object.
1925         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
1926         * testsuite/20_util/any/modifiers/83658.cc: New test.
1928 2018-01-25  Jonathan Wakely  <jwakely@redhat.com>
1930         PR libstdc++/81076
1931         * include/c_global/cstddef (__byte_operand): Define primary template.
1932         * testsuite/18_support/byte/81076.cc: New test.
1934 2018-01-19  Christophe Lyon  <christophe.lyon@linaro.org>
1936         * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
1937         dg-options and dg-add-options order.
1938         * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
1939         * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
1940         Likewise.
1941         * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
1942         * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
1943         Likewise.
1944         * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
1945         Likewise.
1946         * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
1947         * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
1948         Likewise.
1949         * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
1950         Likewise.
1951         * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
1952         Likewise.
1953         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
1954         Likewise.
1955         * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
1956         Likewise.
1957         * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
1958         Likewise.
1959         * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
1960         Likewise.
1961         * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
1962         Likewise.
1963         * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
1964         * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
1965         * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
1966         * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
1967         * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
1968         * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
1969         * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
1970         * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
1971         * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
1972         Likewise.
1973         * testsuite/special_functions/19_sph_bessel/check_nan.cc:
1974         Likewise.
1975         * testsuite/special_functions/20_sph_legendre/check_nan.cc:
1976         Likewise.
1977         * testsuite/special_functions/21_sph_neumann/check_nan.cc:
1978         Likewise.
1980 2018-01-18  Uros Bizjak  <ubizjak@gmail.com>
1982         * configure.ac (AC_CHECK_HEADERS): Add linux/types.h.  Conditionally
1983         include linux/types.h when checking linux/random.h header.
1984         * config.h.in: Regenerate.
1985         * configure: Ditto.
1986         * src/c++11/random.cc: Conditionally include linux/types.h.
1988 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
1990         * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
1992 2018-01-16  Jonathan Wakely  <jwakely@redhat.com>
1994         PR libstdc++/83834
1995         * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
1996         pattern with exact match for std::cerr.
1998 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
2000         PR libstdc++/83833
2001         * include/bits/random.h (chi_squared_distribution::param): Update
2002         gamma distribution parameter.
2003         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
2004         test.
2006         PR libstdc++/83830
2007         * include/std/type_traits (has_unique_object_representations_v): Add
2008         variable template.
2009         * testsuite/20_util/has_unique_object_representations/value.cc: Check
2010         variable template.
2012 2018-01-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
2014         Make optional conditionally
2015         trivially_{copy,move}_{constructible,assignable}
2016         * include/std/optional (_Optional_payload): Fix the comment in
2017         the class head and turn into a primary and one specialization.
2018         (_Optional_payload::_M_engaged): Strike the NSDMI.
2019         (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
2020         New.
2021         (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
2022         Likewise.
2023         (_Optional_payload<_Tp, false>::_M_get): Likewise.
2024         (_Optional_payload<_Tp, false>::_M_reset): Likewise.
2025         (_Optional_base_impl): Likewise.
2026         (_Optional_base): Turn into a primary and three specializations.
2027         (optional(nullopt)): Change the base init.
2028         * testsuite/20_util/optional/assignment/8.cc: New.
2029         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
2030         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
2032 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
2034         PR libstdc++/80276
2035         * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
2036         (get_template_arg_list): New.
2037         (StdVariantPrinter._template_args): Remove, use get_template_arg_list
2038         instead.
2039         (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
2040         of strings and regular expressions.
2041         (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
2042         (FilteringTypePrinter): Add docstring. Match using startswith. Use
2043         strip_inline_namespaces instead of strip_versioned_namespace.
2044         (add_one_type_printer): Prepend namespace to match argument.
2045         (register_type_printers): Add type printers for char16_t and char32_t
2046         string types and for types using cxx11 ABI. Update calls to
2047         add_one_template_type_printer to provide default argument dicts.
2048         * testsuite/libstdc++-prettyprinters/80276.cc: New test.
2049         * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
2050         basic_string<unsigned char> and basic_string<signed char>.
2051         * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
2052         to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
2054 2018-01-14  Andreas Schwab  <schwab@linux-m68k.org>
2056         PR libstdc++/81092
2057         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
2059 2018-01-13  Tim Shen  <timshen@google.com>
2061         PR libstdc++/83601
2062         * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
2063         * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
2064         * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
2066 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2068         PR libstdc++/64054
2069         * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
2070         Remove dg-xfail-run-if.
2072 2018-01-10  François Dumont  <fdumont@gcc.gnu.org>
2074         * include/bits/forward_list.h
2075         (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
2076         (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
2077         (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
2078         (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
2079         (_Fwd_list_impl()): Add noexcept qualification.
2080         (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
2081         (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
2082         (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
2083         (_Fwd_list_base()): Default.
2084         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
2085         (_Fwd_list_base(_Fwd_list_base&&)): Default.
2086         (forward_list<>()): Default.
2087         (forward_list<>(forward_list&&)): Default.
2088         (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
2089         (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
2090         (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
2091         * include/bits/forward_list.tcc
2092         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
2093         _M_impl._M_head move assignment.
2094         (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
2095         * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
2097 2018-01-09  Jonathan Wakely  <jwakely@redhat.com>
2099         PR libstdc++/80276
2100         * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
2101         (UniquePointerPrinter): Print correct template argument, not type of
2102         the pointer.
2103         (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
2104         a type.
2105         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
2106         array type.
2107         * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
2108         weak_ptr of array types.
2110 2018-01-09  François Dumont  <fdumont@gcc.gnu.org>
2112         PR libstdc++/83709
2113         * include/bits/hashtable_policy.h
2114         (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
2115         __first != __last.
2116         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
2117         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
2118         Add false_type parameter.
2119         (_Insert_base::insert): Adapt.
2120         * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
2121         Adapt.
2122         (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
2123          Add __n_elt parameter, defaulted to 1.
2124         (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
2125         policy _M_need_rehash.
2126         (_Hashtable::_M_merge_unique): Pass target number of elements to add to
2127         produce only 1 rehash if necessary.
2128         * testsuite/23_containers/unordered_map/insert/83709.cc: New.
2129         * testsuite/23_containers/unordered_set/insert/83709.cc: New.
2131 2018-01-09  Juraj Oršulić  <juraj.orsulic@fer.hr>
2132             Jonathan Wakely  <jwakely@redhat.com>
2134         PR libstdc++/59253 (partial)
2135         * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
2136         type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
2137         (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
2138         children.
2139         * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
2140         of unique_ptr printer.
2141         * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
2142         output of shared_ptr printer.
2144 2018-01-05  Jonathan Wakely  <jwakely@redhat.com>
2146         PR libstdc++/83626
2147         * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
2148         unnecessary symlink_status call.
2149         (remove_all(const path&, error_code&)): Use filesystem::remove.
2150         * src/filesystem/std-ops.cc: Likewise.
2152         PR libstdc++/83279
2153         * src/filesystem/std-ops.cc  (do_copy_file): Use non-null offset with
2154         sendfile.
2156         PR libstdc++/83626
2157         * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
2158         report an error for ENOENT.
2159         (remove_all(const path&)): Fix type of result variable.
2160         (remove_all(const path&, error_code&)): Use non-throwing increment
2161         for directory iterator. Call POSIX remove directly to avoid redundant
2162         calls to symlink_status. Do not report errors for ENOENT.
2163         * src/filesystem/std-ops.cc: Likewise.
2164         * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
2165         overload.
2166         * testsuite/experimental/filesystem/operations/remove_all.cc:
2167         Likewise.
2169 2018-01-04  Jonathan Wakely  <jwakely@redhat.com>
2171         PR libstdc++/83626
2172         * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
2173         redundant call to ec.clear().
2174         (remove_all(const path&, error_code&))): Do not return an error for
2175         non-existent paths.
2176         * src/filesystem/std-ops.cc: Likewise.
2177         * testsuite/27_io/filesystem/operations/remove.cc: New test.
2178         * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
2179         results for non-existent paths.
2180         * testsuite/experimental/filesystem/operations/remove.cc: New test.
2181         * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
2182         expected results for non-existent paths.
2184         * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
2185         check status_known once.
2186         * include/experimental/bits/fs_ops.h: Likewise.
2188         PR libstdc++/83607
2189         * include/std/functional (__is_byte_like): New trait.
2190         (__is_std_equal_to): Remove.
2191         (__boyer_moore_base_t): Use __is_byte_like instead of
2192         __is_std_equal_to.
2193         * include/experimental/functional (__is_std_equal_to): Remove.
2194         (__boyer_moore_base_t): Use __is_byte_like instead of
2195         __is_std_equal_to.
2196         * testsuite/20_util/function_objects/83607.cc: New test.
2198 2018-01-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
2200         Protect optional's deduction guide with the feature macro
2201         * include/std/optional: Use the feature macro.
2203 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2205         Update copyright years.
2207 Copyright (C) 2018 Free Software Foundation, Inc.
2209 Copying and distribution of this file, with or without modification,
2210 are permitted in any medium without royalty provided the copyright
2211 notice and this notice are preserved.