1 2018-09-20 Christophe Lyon <christophe.lyon@linaro.org>
3 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
6 2018-09-19 Jonathan Wakely <jwakely@redhat.com>
8 * include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
9 Remove __glibcxx_assert statements and use map::find instead of
12 2018-09-18 François Dumont <fdumont@gcc.gnu.org>
15 * src/c++11/hashtable_c++0x.cc:
16 (_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
17 requested size, but not necessarily greater.
18 (_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
19 strictly greater than next resize threshold.
20 * testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
21 to validate that there is no rehash as long as number of insertion is
22 lower or equal to the reserved number of elements.
24 2018-09-18 Jonathan Wakely <jwakely@redhat.com>
26 * include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
27 checking invocable condition.
28 (unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
29 here, where types must be complete. Pass pointer to deleter as an
31 * testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
33 2018-09-13 Jonathan Wakely <jwakely@redhat.com>
35 * include/std/variant (variant) [__clang__]: Limit workaround to
38 2018-09-11 Jonathan Wakely <jwakely@redhat.com>
41 * include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
43 * testsuite/20_util/shared_ptr/creation/87278.cc: New test.
45 Implement LWG 2905 changes to constrain unique_ptr constructors
46 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
48 (unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
49 constructible constraint.
50 (unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
51 deleters of reference type and add move constructible constraint.
52 (unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
53 Disable for deleters of non-reference type. Define as deleted.
54 (unique_ptr<T[], D>): Likewise.
55 * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
56 directives with unstable line numbers with dg-prune-output.
57 * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
58 * testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
59 * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
60 Make deleter types invocable.
62 2018-09-05 Jonathan Wakely <jwakely@redhat.com>
64 * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
66 2018-09-03 Jonathan Wakely <jwakely@redhat.com>
69 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test
70 that runs the long double part of hypot.cc.
71 * testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double
72 tests unless TEST_HYPOT_LONG_DOUBLE is defined.
74 * include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
75 Return raw pointer not allocator's pointer type.
76 (vector::_Temporary_value::_M_val): Use _M_ptr.
79 * include/bits/stl_map.h
80 (map::map(initializer_list<value_type>, const Compare&, const Alloc&))
81 (map::map(initializer_list<value_type>, const Alloc&))
82 (map::map(InputIterator, InputIterator, const Alloc&))
83 (map::map(InputIterator, InputIterator))
84 (map::map(InputIterator, InputIterator, const Compare&, const Alloc&))
85 (map::insert(InputIterator, InputIterator)):
86 Call _M_insert_range_unique instead of _M_insert_unique.
87 * include/bits/stl_multimap.h
88 (multimap::multimap(initializer_list<value_type>, const C&, const A&))
89 (multimap::multimap(initializer_list<value_type>, const A&))
90 (multimap::multimap(InputIterator, InputIterator, const A&))
91 (multimap::multimap(InputIterator, InputIterator))
92 (multimap::multimap(InputIterator, InputIterator, const C&, const A&))
93 (multimap::insert(InputIterator, InputIterator)): Call
94 _M_insert_range_equal instead of _M_insert_equal.
95 * include/bits/stl_multiset.h
96 (multiset::multiset(InputIterator, InputIterator))
97 (multiset::multiset(InputIterator, InputIterator, const C&, const A&))
98 (multiset::multiset(initializer_list<value_type>, const C&, const A&))
99 (multiset::multiset(initializer_list<value_type>, const A&))
100 (multiset::multiset(InputIterator, InputIterator, const A&))
101 (multiset::insert(InputIterator, InputIterator)): Call
102 _M_insert_range_equal instead of _M_insert_equal.
103 * include/bits/stl_set.h
104 (set::set(InputIterator, InputIterator))
105 (set::set(InputIterator, InputIterator, const Compare&, const Alloc&))
106 (set::set(initializer_list<value_type>, const Compare&, const Alloc&))
107 (set::set(initializer_list<value_type>, const Alloc&))
108 (set::set(InputIterator, InputIterator, const Alloc&))
109 (set::insert(InputIterator, InputIterator)):
110 Call _M_insert_range_unique instead of _M_insert_unique.
111 * include/bits/stl_tree.h
112 [__cplusplus >= 201103L] (_Rb_tree::__same_value_type): New alias
113 template for SFINAE constraints.
114 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_unique): Pair of
115 constrained overloads that either insert or emplace, depending on
116 iterator's value_type.
117 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_equal): Likewise.
118 [__cplusplus < 201103L] (_Rb_tree::_M_insert_range_unique)
119 (_Rb_tree::_M_insert_range_equal): New functions replacing range
120 versions of _M_insert_unique and _M_insert_equal.
121 (_Rb_tree::_M_insert_unique(_InputIterator, _InputIterator))
122 (_Rb_tree::_M_insert_equal(_InputIterator, _InputIterator)): Remove.
123 * testsuite/23_containers/map/modifiers/insert/87194.cc: New test.
124 * testsuite/23_containers/multimap/modifiers/insert/87194.cc: New test.
125 * testsuite/23_containers/multiset/modifiers/insert/87194.cc: New test.
126 * testsuite/23_containers/set/modifiers/insert/87194.cc: New test.
129 * include/bits/stl_map.h (map::insert(_Pair&&))
130 (map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
131 * include/bits/stl_multimap.h (multimap::insert(_Pair&&))
132 (multimap::insert(const_iterator, _Pair&&)): Likewise.
133 * include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
134 (unordered_map::insert(const_iterator, _Pair&&))
135 (unordered_multimap::insert(_Pair&&))
136 (unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
137 * testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
138 * testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
139 * testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
140 * testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
143 2018-09-02 François Dumont <fdumont@gcc.gnu.org>
145 * include/debug/safe_iterator.h
146 (_Safe_iterator<_It, _Seq, _Cat>::_Self): New.
147 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>::_Self):
149 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
151 (_GLIBCXX_DEBUG_VERIFY_OPERANDS, _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS)
152 (_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS)
153 (_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS): Define macros.
154 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
155 ::operator+(difference_type)): Use latters, inline as friend.
156 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
157 ::operator-(difference_type)): Likewise.
158 (operator==(const _Safe_iterator<>&, const _Safe_iterator<>&)):
160 (operator!=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
162 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
163 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
165 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
166 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
168 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
169 (operator+(difference_type, const _Safe_iterator<>&)): Likewise.
170 (operator-(const _Safe_iterator<>&, difference_type)): Likewise.
171 * include/debug/safe_iterator.tcc
172 (_Safe_iterator<>::_M_can_advance(difference_type)): Take parameter by
174 * include/debug/safe_local_iterator.h
175 (_Safe_local_iterator<_It, _Seq>::_Self): New.
176 (_Safe_local_iterator<_It, _Seq>::_OtherSelf): New.
177 (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Define macro.
178 (operator==(const _Safe_local_iterator<>&,
179 const _Safe_local_iterator<>&)): Use latter, inline as friend.
180 (operator!=(const _Safe_local_iterator<>&,
181 const _Safe_local_iterator<>&)): Likewise.
182 * testsuite/util/testsuite_containers.h: Include utility.
183 (struct forward_members_unordered<_Tp, bool>): Remove 2nd template
185 (forward_members_unordered<>::forward_members_unordered(value_type&)):
186 Add using namespace std::rel_ops.
187 Add iterator_concept_checks on local_iterator and const_local_iterator.
188 Add asserts on comparison between const_local_iterator and
190 (struct forward_members_unordered<_Tp, false>): Remove partial
192 * testsuite/23_containers/forward_list/types/1.cc: New.
193 * testsuite/23_containers/list/types/1.cc: New.
195 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
197 * doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
200 2018-08-31 Sandra Loosemore <sandra@codesourcery.com>
202 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
203 Add dg-require-fileio.
204 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
206 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
208 * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
210 * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
212 * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
214 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
215 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
216 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
217 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
218 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
219 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc:
221 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
223 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
225 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
227 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
229 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
231 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
233 * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
234 * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
235 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: Likewise.
236 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
237 * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
239 * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
241 * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
242 * testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
243 * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
244 * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
245 * testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
246 * testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
247 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: Likewise.
248 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: Likewise.
249 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
251 * testsuite/27_io/objects/wchar_t/10.cc: Likewise.
252 * testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
253 * testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
254 * testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
255 * testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
256 * testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
257 * testsuite/experimental/string_view/inserters/wchar_t/2.cc:
259 * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
261 2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
263 * testsuite/experimental/propagate_const/observers/1.cc: Make
264 dependence on -fdelete-null-pointer-checks explicit.
266 2018-08-30 Jonathan Wakely <jwakely@redhat.com>
268 * include/bits/hashtable_policy.h (__clp2): Fix calculation for LLP64
269 targets where sizeof(size_t) > sizeof(long). Avoid undefined shifts
270 of the number of bits in the type.
271 * include/std/bit (__ceil2): Avoid undefined shifts.
272 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Test values with
273 the most signifiant bit set.
275 * config/abi/pre/gnu.ver: Add missing exports for mingw.
277 * include/ext/pointer.h (_Pointer_adapter): Define operators for
278 pointer arithmetic using long long offsets.
279 * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
282 2018-08-29 Jonathan Wakely <jwakely@redhat.com>
285 * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT
286 string for alternative format.
288 2018-08-28 Jonathan Wakely <jwakely@redhat.com>
291 * src/filesystem/std-path.cc (path::lexically_normal): When handling
292 a dot-dot filename, preserve an empty final component in the iteration
294 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
296 * testsuite/27_io/filesystem/path/generation/normal.cc: Add new tests
297 for more than two adjacent dot-dot filenames.
298 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Replace slashes with
299 preferred-separator in expected normalized strings.
301 2018-08-25 Iain Sandoe <iain@sandoe.co.uk>
304 * configure.host (OPT_LDFLAGS): Don't append
305 -fvisibility-inlines-hidden for newer Darwin.
307 2018-08-24 Marc Glisse <marc.glisse@inria.fr>
310 * libsupc++/new (operator new(size_t, nothrow_t), operator
311 new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
312 operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
314 2018-08-24 Jonathan Wakely <jwakely@redhat.com>
316 * include/debug/deque (std::__debug::deque): Declare.
317 * include/debug/forward_list (std::__debug::forward_list): Declare.
318 * include/debug/list (std::__debug::list): Declare.
319 * include/debug/map (std::__debug::map): Declare.
320 * include/debug/set (std::__debug::set): Declare.
321 * include/debug/unordered_map (std::__debug::unordered_map): Declare.
322 * include/debug/unordered_set (std::__debug::unordered_set): Declare.
323 * include/debug/vector (std::__debug::vector): Declare.
324 * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
325 * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
327 * testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
328 * testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
329 * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
330 * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
331 * testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
332 * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
334 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
336 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
338 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
340 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
341 Adjust dg-error lineno.
342 * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
345 2018-08-23 Jonathan Wakely <jwakely@redhat.com>
347 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
348 Only define when RTTI is enabled.
350 * include/debug/vector (__niter_base): Define for C++98.
352 * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
353 Fix C++98 test to not use C++11 features.
354 * testsuite/25_algorithms/fill_n/2.cc: Likewise.
356 * scripts/check_compile: Fix comments.
358 * include/debug/string (insert(__const_iterator, _InIter, _InIter)):
359 [!_GLIBCXX_USE_CXX11_ABI]: Replace use of C++11-only cbegin() with
360 begin(), for C++98 compatibility.
362 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
363 (basic_string::__const_iterator): Change access to protected.
364 [!_GLIBCXX_USE_CXX11_ABI] (basic_string::__const_iterator): Define
365 as typedef for iterator.
366 * include/debug/string (__const_iterator): Use typedef from base.
367 (insert(const_iterator, _CharT))
368 (replace(const_iterator, const_iterator, const basic_string&))
369 (replace(const_iterator, const_iterator, const _CharT*, size_type))
370 (replace(const_iterator, const_iterator, const CharT*))
371 (replace(const_iterator, const_iterator, size_type, _CharT))
372 (replace(const_iterator, const_iterator, _InputIter, _InputIter))
373 (replace(const_iterator, const_iterator, initializer_list<_CharT>)):
374 Change const_iterator parameters to __const_iterator.
375 (insert(iterator, size_type, _CharT)): Add C++98 overload.
376 (insert(const_iterator, _InputIterator, _InputIterator)): Change
377 const_iterator parameter to __const_iterator.
378 [!_GLIBCXX_USE_CXX11_ABI]: Add workaround for incorrect return type
379 of base's member function.
380 (insert(const_iterator, size_type, _CharT)) [!_GLIBCXX_USE_CXX11_ABI]:
382 (insert(const_iterator, initializer_list<_CharT>))
383 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
384 * testsuite/21_strings/basic_string/init-list.cc: Remove effective
387 * testsuite/20_util/reference_wrapper/lwg2993.cc: Fix C++11 test to
388 not use C++14 feature.
389 * testsuite/23_containers/list/68222_neg.cc: Likewise.
391 * testsuite/21_strings/basic_string/init-list.cc:
393 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
395 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
398 * testsuite/23_containers/deque/capacity/max_size.cc: Fix test for
400 * testsuite/23_containers/deque/modifiers/assign/1.cc: Likewise.
401 * testsuite/23_containers/list/modifiers/assign/1.cc: Likewise.
402 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: Likewise.
403 * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
404 * testsuite/23_containers/vector/modifiers/assign/1.cc: Likewise.
406 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
409 * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
410 (experimental::pmr::match_results, experimental::pmr::cmatch)
411 (experimental::pmr::smatch, experimental::pmr::wcmatch)
412 (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
413 because COW strings don't support C++11 allocator model.
414 * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
415 (experimental::pmr::basic_string, experimental::pmr::string)
416 (experimental::pmr::u16string, experimental::pmr::u32string)
417 (experimental::pmr::wstring): Likewise.
418 * include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results)
419 (pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise.
420 * include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string)
421 (pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise.
422 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require
424 * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
427 * include/bits/deque.tcc (deque::_M_range_initialize): Use
428 _S_check_init_len to check size.
429 (deque::_M_push_back_aux, deque::_M_push_front_aux): Throw length
430 error if size would exceed max_size().
431 * include/bits/stl_deque.h (_Deque_base::size_type): Remove typedef.
432 (_Deque_base(_Deque_base&&, const allocator_type&, size_t)): Use
433 size_t instead of size_type.
434 (deq(size_type, const allocator_type&)
435 (deq(size_type, const value_type&, const allocator_type&)
436 (deque::_M_initialize_dispatch): Use _S_check_init_len to check size.
437 (deque::max_size): Call _S_max_size.
438 (deque::_S_check_init_len, deque::_S_max_size): New functions.
439 * include/bits/stl_vector.h (vector(size_type, const allocator_type&))
440 (vector(size_type, const value_type&, const allocator_type&))
441 (vector::_M_initialize_dispatch, vector::_M_range_initialize): Use
442 _S_check_init_len to check size.
443 (vector::max_size): Call _S_max_size.
444 (vector::_M_check_len): Prevent max from being expanded as a
446 (vector::_S_check_init_len, vector::_S_max_size): New functions.
447 * include/bits/vector.tcc (vector::_M_assign_aux): Use
448 _S_check_init_len to check size.
449 * testsuite/23_containers/deque/capacity/max_size.cc: New test.
450 * testsuite/23_containers/vector/capacity/max_size.cc: New test.
452 2018-08-22 François Dumont <fdumont@gcc.gnu.org>
455 * include/debug/safe_iterator.h
456 (_Safe_iterator<_It, _Sq, _Cat>): Add category template parameter.
457 (_Safe_iterator<>::_Const_iterator): Remove.
458 (_Safe_iterator<>::_IsConstant): New.
459 (_Safe_iterator<>::_OtherIterator): New.
460 (_Safe_iterator<_It, _Sq, _Cat>::_Safe_iterator<_MutIte>(
461 const _Safe_iterator<_MutIte, _Sq, _Cat>&)): Add _IsConstant::__value in
462 __gnu_cxx::__enable_if condition.
463 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to): New.
464 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_from_begin): New.
465 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to_end): New.
466 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>): New.
467 (_Safe_iterator<_It, _Sq, _Cat>::operator--()): Move...
468 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
469 ::operator--()): ...here.
470 (_Safe_iterator<_It, _Sq, _Cat>::operator--(int)): Move...
471 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
472 ::operator--(int)): ...here.
473 (_Safe_iterator<_It, _Sq, _Cat>::_M_decrementable()): Move...
474 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
475 ::_M_decrementable()): ...here.
476 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>): New.
477 (_Safe_iterator<_It, _Sq, _Cat>::operator[](const difference_type&)):
479 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
480 ::operator[](const difference_type&)): ...here.
481 (_Safe_iterator<_It, _Sq, _Cat>::operator+=(const difference_type&)):
483 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
484 ::operator+=(const difference_type&)): ...here.
485 (_Safe_iterator<_It, _Sq, _Cat>::operator+(const difference_type&)):
487 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
488 ::operator+(const difference_type&)): ...here.
489 (_Safe_iterator<_It, _Sq, _Cat>::operator-=(const difference_type&)):
491 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
492 ::operator-=(const difference_type&)): ...here.
493 (_Safe_iterator<_It, _Sq, _Cat>::operator-(const difference_type&)):
495 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
496 ::operator-(const difference_type&)): ...here.
497 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)):
498 Constraint to random access iterators.
499 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
501 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
502 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
504 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
505 (operator+(const difference_type&, const _Safe_iterator<>&)): Likewise.
506 (__check_dereferenceable(const _Safe_iterator<>&)): Remove.
507 (__get_distance): Remove.
508 (__get_distance_from_begin): Remove.
509 (__get_distance_to_end): Remove.
510 (struct __is_safe_random_iterator<_Safe_iterator<>>): Remove partial
512 (__base(const _Safe_iterator<>&, std::input_iterator_tag)): Remove.
513 (__base(const _Safe_iterator<>&, std::random_access_iterator_tag)): Remove.
514 (__base(const _Safe_iterator<>&)): Constraint to random access iterator.
515 * include/debug/safe_iterator.tcc
516 (_Safe_iterator<>::_M_get_distance_from_begin()): New.
517 (_Safe_iterator<>::_M_get_distance_to_end()): New.
518 (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator<>&)): New.
519 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
520 ::_M_valid_range): New.
521 * include/debug/safe_local_iterator.h
522 (_Safe_local_iterator<>::_Const_local_iterator): Remove.
523 (_Safe_local_iterator<>::_IsConstant): New.
524 (_Safe_local_iterator<>::_OtherIterator): New.
525 (_Safe_local_iterator<_It, _Cont>::_Safe_local_iterator<_MutIte, _Cont>(
526 const _Safe_local_iterator<_MutIte, _Seq>&)): Add _IsConstant::__value
527 in __gnu_cxx::__enable_if condition. If singular compare base iterator
528 with _MutIte rather than _It.
529 (_Safe_local_iterator<>::_S_constant): Make constexpr.
530 (_Safe_local_iterator<>::_M_get_distance_to): New.
531 (__check_dereferenceable(const _Safe_local_iterator<>&)): Remove.
532 (__get_distance(const _Safe_local_iterator<>&,
533 const _Safe_local_iterator<>&, std::input_iterator_tag)): Remove.
534 (__valid_range(const _Safe_local_iterator<>&,
535 const _Safe_local_iterator<>&)): New.
536 * include/debug/safe_local_iterator.tcc
537 (_Safe_local_iterator<>::_M_get_distance_to): New.
538 * include/debug/deque (std::__debug::deque<>): Add
539 ::__gnu_debug::_Safe_iterator<> friend declaration.
540 * include/debug/forward_list (std::__debug::forward_list<>): Likewise.
541 * include/debug/list (std::__debug::list<>): Likewise.
542 * include/debug/map.h (std::__debug::map<>): Likewise.
543 * include/debug/multimap.h (std::__debug::multimap<>): Likewise.
544 * include/debug/set.h (std::__debug::set<>): Likewise.
545 * include/debug/multiset.h (std::__debug::multiset<>): Likewise.
546 * include/debug/string (std::__debug::basic_string<>): Likewise.
547 * include/debug/unordered_map (std::__debug::unordered_map<>): Likewise
548 and add ::__gnu_debug::_Safe_local_iterator<> friend declaration.
549 (std::__debug::unordered_multimap<>): Likewise.
550 * include/debug/unordered_set (std::__debug::unordered_set<>): Likewise.
551 (std::__debug::unordered_multiset<>): Likewise.
552 * include/debug/formatter.h: Adapt.
553 * include/debug/helper_functions.h
554 (__gnu_debug::_Safe_local_iterator<>): Add declaration.
555 (__get_distance<_Ite>(_Ite, _Ite, std::random_access_iterator_tag):
556 Pass parameter by copy.
557 (__get_distance<_Ite>(_Ite, _Ite, std::input_iterator_tag): Likewise.
558 (__get_distance<_Ite>(_Ite, _Ite): Likewise.
559 (__valid_range_aux<_Integral>): Pass _Integral by copy.
560 (__valid_range<_InputIterator>): Pass _InputIterator by copy.
561 (__valid_range<>(const _Safe_iterator<>&,
562 const _Safe_iterator<>&, typename _Distance_traits<>::__type&)):
564 (__valid_range(const _Safe_local_iterator<>&,
565 const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)):
567 (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)):
569 (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)):
571 (__can_advance): Adapt.
572 (struct __is_safe_random_iterator<>): Remove.
573 (struct _SIter_base<>): Remove.
574 * include/debug/functions.h: Include <bits/stl_iterator.h>.
575 (__check_dereferenceable): Remove.
576 (__foreign_iterator_aux4, __foreign_iterator_aux3): Adapt.
577 (__foreign_iterator_aux2, __foreign_iterator_aux): Adapt.
578 (__foreign_iterator): Adapt.
579 * include/debug/stl_iterator.h
580 (__is_safe_random_iterator<std::reverse_iterator<>>): Remove.
581 (__base(const std::reverse_iterator<_Safe_iterator<_It, _Sq>)):
582 Constraint for random access iterators.
583 (__niter_base): Adapt.
584 * testsuite/util/testsuite_containers.h:
585 Include <bits/boost_concept_check.h>.
586 (iterator_concept_checks<_It, _Mutable, _Category>): New.
587 (citerator<_Cont>::forward_members::forward_members()): Instantiate
588 latter for container iterator and const_iterator.
589 * testsuite/23_containers/list/68222_neg.cc: New.
590 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adapt
592 * testsuite/23_containers/unordered_set/debug/debug_functions.cc:
594 * testsuite/23_containers/vector/debug/debug_functions.cc (test01):
597 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
600 * doc/xml/manual/status_cxx1998.xml: Document size_type and
601 difference_type for containers.
602 * doc/html/*: Regenerate.
604 2018-08-21 François Dumont <fdumont@gcc.gnu.org>
606 P0646R1 Improving the Return Value of Erase-Like Algorithms I
607 * include/debug/forward_list (forward_list::__remove_return_type):
608 Define typedef as size_type or void, according to __cplusplus value.
609 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
610 empty, according to __cplusplus value.
611 (_GLIBCXX20_ONLY): Define macro.
612 (forward_list::remove, forward_list::unique): Use typedef and macro
613 to change return type and add abi-tag for C++2a. Return number of
614 removed elements for C++2a.
615 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
616 typedef to change return type for C++2a. Return number of removed
618 * include/debug/list (list::__remove_return_type): Define typedef as
619 size_type or void, according to __cplusplus value.
620 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
621 empty, according to __cplusplus value.
622 (_GLIBCXX20_ONLY): Define macro.
623 (list::remove, list::unique): Use typedef and macro to change return
624 type and add abi-tag for C++2a. Return number of removed elements for
626 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
627 to change return type for C++2a. Return number of removed elements for
630 2018-08-21 David Edelsohn <dje.gcc@gmail.com>
632 * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
634 2018-08-21 Jonathan Wakely <jwakely@redhat.com>
636 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
637 redundant dg-do directive.
638 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
639 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
640 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
641 * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
643 2018-08-20 Jonathan Wakely <jwakely@redhat.com>
646 * include/std/tuple (_Tuple_impl::operator=): Define as deleted.
647 (_Tuple_impl::_M_assign): New functions to perform assignment instead
648 of assignment operators.
649 (_Tuple_impl::_M_swap): Remove exception specification.
650 (_Tuple_impl<_Idx, _Head>): Likewise.
651 (_TC::_NonNestedTuple, _TC::_NotSameTuple): Use __remove_cvref_t.
652 (__tuple_base): Remove.
653 (tuple, tuple<_T1, _T2>): Remove inheritance from __tuple_base.
654 (tuple::operator=, tuple<_T1, _T2>::operator=): Call _M_assign.
655 (tuple::swap, tuple<_T1, _T2>::swap): Define exception specification
656 using __is_nothrow_swappable.
657 (tuple<_T1, _T2>::tuple(_U1&&, _U2&&)): Use __remove_cvref_t.
659 * include/std/optional (_Optional_payload): Use variable templates
660 for conditions in default template arguments and exception
662 (optional): Likewise. Adjust indentation.
663 (optional::__not_self, optional::__not_tag, optional::_Requires): New
665 (optional::optional): Use new helpers in constructor constraints.
666 * include/std/type_traits (__or_v, __and_v): New variable templates.
667 * testsuite/20_util/optional/cons/value_neg.cc: Change dg-error to
668 dg-prune-output. Remove unused header.
670 2018-08-18 François Dumont <fdumont@gcc.gnu.org>
672 * testsuite/25_algorithms/copy/86658.cc: Use dg-options to define
675 2018-08-17 Jonathan Wakely <jwakely@redhat.com>
678 * include/std/tuple (__tuple_base): New class template with deleted
679 copy assignment operator.
680 (tuple, tuple<_T1, _T2>): Derive from __tuple_base<tuple> so that
681 implicit copy/move assignment operator will be deleted/suppressed.
682 (tuple::__assignable, tuple<_T1, _T2>::__assignable): New helper
683 functions for SFINAE constraints on assignment operators.
684 (tuple::__nothrow_assignable, tuple<_T1, _T2>::__nothrow_assignable):
685 New helper functions for exception specifications.
686 (tuple::operator=(const tuple&), tuple::operator=(tuple&&))
687 (tuple<_T1, _T2>::operator=(const tuple&))
688 (tuple<_T1, _T2>::operator=(tuple&&)): Change parameter types to
689 __nonesuch_no_braces when the operator should be defined implicitly.
690 Use __nothrow_assignable for exception specifications.
691 (tuple::operator=(const tuple<_UElements...>&))
692 (tuple::operator=(tuple<_UElements...>&&))
693 (tuple<_T1, _T2>::operator=(const tuple<_U1, _U2>&))
694 (tuple<_T1, _T2>::operator=(tuple<_U1, _U2>&&))
695 (tuple<_T1, _T2>::operator=(const pair<_U1, _U2>&))
696 (tuple<_T1, _T2>::operator=(pair<_U1, _U2>&&)): Constrain using
697 __assignable and use __nothrow_assignable for exception
699 * python/libstdcxx/v6/printers.py (is_specialization_of): Accept
700 gdb.Type as first argument, instead of a string.
701 (StdTuplePrinter._iterator._is_nonempty_tuple): New method to check
702 tuple for expected structure.
703 (StdTuplePrinter._iterator.__init__): Use _is_nonempty_tuple.
704 * testsuite/20_util/tuple/dr2729.cc: New test.
705 * testsuite/20_util/tuple/element_access/get_neg.cc: Change dg-error
708 2018-08-16 Jonathan Wakely <jwakely@redhat.com>
710 * include/tr1/legendre_function.tcc (__sph_legendre): Avoid warning
711 about signed/unsigned comparison.
713 * include/std/ostream (basic_ostream::sentry::~sentry): Suppress
714 deprecation warnings for using uncaught_exception().
717 * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
718 (logic_error::logic_error(logic_error&&))
719 (logic_error::operator=(logic_error&&))
720 (runtime_error::runtime_error(runtime_error&&))
721 (runtime_error::operator=(runtime_error&&)): Copy strings instead of
722 moving, to avoid allocating empty reps for moved-from strings.
724 2018-08-15 Jonathan Wakely <jwakely@redhat.com>
726 * include/experimental/regex: Remove begin/end macros for namespace.
727 * include/experimental/string: Likewise.
728 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
730 * testsuite/experimental/polymorphic_allocator/
731 pmr_typedefs_forward_list.cc: New test.
732 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
734 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
736 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
738 * testsuite/experimental/polymorphic_allocator/
739 pmr_typedefs_multimap.cc: New test.
740 * testsuite/experimental/polymorphic_allocator/
741 pmr_typedefs_multiset.cc: New test.
742 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
744 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
746 * testsuite/experimental/polymorphic_allocator/
747 pmr_typedefs_unordered_map.cc: New test.
748 * testsuite/experimental/polymorphic_allocator/
749 pmr_typedefs_unordered_multimap.cc: New test.
750 * testsuite/experimental/polymorphic_allocator/
751 pmr_typedefs_unordered_multiset.cc: New test.
752 * testsuite/experimental/polymorphic_allocator/
753 pmr_typedefs_unordered_set.cc: New test.
754 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
757 * include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
758 calls to __uses_allocator_construct_impl and __use_alloc.
759 * include/experimental/memory_resource
760 (polymorphic_allocator::_M_construct): Remove.
761 (polymorphic_allocator::construct): Call __uses_allocator_construct.
762 Qualify calls to __use_alloc.
763 * include/std/memory_resource (polymorphic_allocator::construct): Fix
764 type in SFINAE constraint. Use constexpr if instead of tag dispatching
765 to _S_construct overloads.
766 (polymorphic_allocator::construct(pair<T1, T2>*, ...)): Fix order of
767 arguments to _S_construct_p.
768 (polymorphic_allocator::_S_construct): Remove.
769 (polymorphic_allocator::_S_construct_p): Return allocators by value
771 * include/std/scoped_allocator (scoped_allocator_adaptor::construct):
772 Qualify calls to __use_alloc.
773 * testsuite/20_util/polymorphic_allocator/construct_pair.cc: New test,
774 copied from testsuite/20_util/scoped_allocator/construct_pair.cc.
775 * testsuite/experimental/polymorphic_allocator/1.cc: New test.
776 * testsuite/experimental/polymorphic_allocator/construct_pair.cc:
779 * src/c++17/memory_resource.cc [!_GLIBCXX_HAS_GTHREADS]
780 (atomic_mem_res): Add unsynchronized definition for single-threaded.
782 2018-08-14 Jonathan Wakely <jwakely@redhat.com>
785 * include/bits/stl_tempbuf.h (return_temporary_buffer): Use
786 non-placement delete.
788 * include/std/chrono (__check_overflow): Simplify definition.
789 (_Checked_integral_constant): Remove.
792 * src/c++17/default_resource.h: New file, defining default_res.
793 * src/c++17/memory_resource.cc [ATOMIC_POINTER_LOCK_FREE != 2]
794 (atomic_mem_res): Define alternative for atomic<memory_resource*>
795 using a mutex instead of atomics.
798 * config/abi/pre/gnu.ver: Export new symbol.
799 * doc/xml/manual/abi.xml: Document new versions.
800 * include/bits/fstream.tcc (basic_filebuf<C, T>::underflow)
801 (basic_filebuf<C, T>::xsgetn): Pass errno to __throw_ios_failure.
802 * include/bits/functexcept.h (__throw_ios_failure(const char*, int)):
803 Declare new overload.
804 * src/c++11/cxx11-ios_failure.cc (__ios_failure): Add new constructor
805 and static member function.
806 (__throw_ios_failure(const char*, int)): Define.
807 * src/c++98/ios_failure.cc [!_GLIBCXX_USE_DUAL_ABI]
808 (__throw_ios_failure(const char*, int)): Define.
810 2018-08-14 Jeremy Sawicki <jeremy-gcc@sawicki.us>
812 * include/ext/rope (_Rope_iterator_base(const _Rope_iterator_base&))
813 (_Rope_const_iterator::operator=(const _Rope_const_iterator&))
814 (_Rope_iterator::operator=(const _Rope_iterator&)): Ensure
815 copied/assigned rope iterators don't retain pointers to the iterator
816 they were copied/assigned from.
817 * testsuite/ext/rope/7.cc: New.
819 2018-08-13 Jonathan Wakely <jwakely@redhat.com>
822 * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
823 Combine definitions to avoid --detect-odr-violations warning.
825 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Use
826 __is_pow2 to check for valid alignment. Avoid branching when rounding
827 size to multiple of alignment.
829 * include/Makefile.am: Install <bit> and <version> for freestanding.
830 * include/Makefile.in: Regenerate.
831 * testsuite/17_intro/freestanding.cc: Check for <bit> and <version>.
834 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
837 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
839 * configure: Regenerate.
841 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
844 * doc/xml/manual/intro.xml: Document LWG 206 change.
845 * libsupc++/del_op.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
846 * libsupc++/del_opa.cc: Likewise.
847 * libsupc++/del_opant.cc: Likewise.
848 * libsupc++/del_opnt.cc: Likewise. Call operator delete(ptr) instead
850 * libsupc++/del_ops.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
851 * libsupc++/del_opsa.cc: Likewise.
852 * libsupc++/del_opva.cc: Likewise.
853 * libsupc++/del_opvant.cc: Likewise.
854 * libsupc++/del_opvnt.cc: Likewise. Call operator delete[](ptr)
855 instead of operator delete(ptr).
856 * libsupc++/del_opvs.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
857 * libsupc++/del_opvsa.cc: Likewise.
858 * libsupc++/new_op.cc: Use __builtin_expect in check for zero size.
859 * libsupc++/new_opa.cc: Use nullptr instead of literal 0.
860 * libsupc++/new_opant.cc: Likewise. Replace _GLIBCXX_USE_NOEXCEPT
862 * libsupc++/new_opnt.cc: Likewise. Call operator new(sz) instead of
864 * libsupc++/new_opvant.cc: Use nullptr and noexcept.
865 * libsupc++/new_opvnt.cc: Likewise. Call operator new[](sz) instead of
866 operator new(sz, nothrow).
867 * testsuite/18_support/new_nothrow.cc: New test.
869 2018-08-10 Martin Liska <mliska@suse.cz>
871 * libsupc++/new_op.cc (new): Remove __builtin_expect as malloc
872 predictor can handle that.
873 * libsupc++/new_opa.cc: Likewise.
874 * libsupc++/new_opnt.cc (new): Likewise.
876 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
879 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
881 * configure: Regenerate.
883 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
885 * include/std/deque (std::pmr::deque): Declare alias.
886 * include/std/forward_list (std::pmr::forward_list): Likewise.
887 * include/std/list (std::pmr::list): Likewise.
888 * include/std/map (std::pmr::map, std::pmr::multimap): Likewise.
889 * include/std/regex (std::pmr::match_results, std::pmr::cmatch)
890 (std::pmr::smatch, std::pmr::wcmatch, std::pmr::wsmatch): Likewise.
891 * include/std/set (std::pmr::set, std::pmr::multiset): Likewise.
892 * include/std/string (std::pmr::basic_string, std::pmr::string)
893 (std::pmr::u16string, std::pmr::u32string, std::pmr::wstring):
895 * include/std/unordered_map (std::pmr::unordered_map)
896 (std::pmr::unordered_multimap): Likewise.
897 * include/std/unordered_set (std::pmr::unordered_set)
898 (std::pmr::unordered_multiset): Likewise.
899 * include/std/vector (std::pmr::vector): Likewise.
900 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: New test.
901 * testsuite/23_containers/deque/types/pmr_typedefs.cc: New test.
902 * testsuite/23_containers/forward_list/pmr_typedefs.cc: New test.
903 * testsuite/23_containers/list/pmr_typedefs.cc: New test.
904 * testsuite/23_containers/map/pmr_typedefs.cc: New test.
905 * testsuite/23_containers/multimap/pmr_typedefs.cc: New test.
906 * testsuite/23_containers/multiset/pmr_typedefs.cc: New test.
907 * testsuite/23_containers/set/pmr_typedefs.cc: New test.
908 * testsuite/23_containers/unordered_map/pmr_typedefs.cc: New test.
909 * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: New
911 * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
913 * testsuite/23_containers/unordered_set/pmr_typedefs.cc: New test.
914 * testsuite/23_containers/vector/pmr_typedefs.cc: New test.
915 * testsuite/28_regex/match_results/pmr_typedefs.cc: New test.
917 2018-08-08 François Dumont <fdumont@gcc.gnu.org>
919 * include/bits/stl_algo.h
920 (__rotate(_Ite, _Ite, _Ite, forward_iterator_tag))
921 (__rotate(_Ite, _Ite, _Ite, bidirectional_iterator_tag))
922 (__rotate(_Ite, _Ite, _Ite, random_access_iterator_tag)): Move code
924 (rotate(_Ite, _Ite, _Ite)): ...here.
925 (__stable_partition_adaptive(_FIt, _FIt, _Pred, _Dist, _Pointer, _Dist)):
926 Simplify rotate call.
927 (__rotate_adaptive(_BIt1, _BIt1, _BIt1, _Dist, _Dist, _Bit2, _Dist)):
929 (__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
932 2018-08-08 Jonathan Wakely <jwakely@redhat.com>
934 * libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
935 avoid clashing with an ::aligned_alloc function that was not detected
938 * doc/xml/manual/using.xml: Fix markup for empty table entry.
939 * doc/html/*: Regenerate.
941 * doc/xml/manual/using.xml: Add missing header to table and fix typo.
942 * doc/html/*: Regenerate.
945 * include/bits/fs_dir.h (directory_entry::_M_file_type(error_code&)):
946 Clear error_code when cached type is used.
947 * testsuite/27_io/filesystem/directory_entry/86597.cc: New test.
949 2018-08-07 Jonathan Wakely <jwakely@redhat.com>
952 * include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
953 here instead of in _Move_assign_base.
954 (_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
955 (_Copy_assign_base::operator=): Use _M_destructive_move when changing
956 the contained value to another alternative.
957 (_Move_assign_base::operator=): Likewise.
958 (_Move_assign_base::_M_destructive_move): Remove.
959 * testsuite/20_util/variant/86874.cc: New test.
962 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
963 Replace macro with inline function.
964 [__sun]: Increase alignment to meet memalign precondition.
965 [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
966 (aligned_alloc): Move check for valid alignment to operator new.
967 Remove redundant check for non-zero size, it's enforced by the caller.
968 (operator new): Move check for valid alignment here. Use
969 __builtin_expect on check for zero size.
971 * config/abi/pre/gnu.ver: Export monotonic_buffer_resource members.
972 * include/std/memory_resource (monotonic_buffer_resource::release):
973 Call _M_release_buffers to free buffers.
974 (monotonic_buffer_resource::do_allocate): Call _M_new_buffer to
975 allocate a new buffer from upstream.
976 (monotonic_buffer_resource::_M_new_buffer): Declare.
977 (monotonic_buffer_resource::_M_release_buffers): Declare.
978 (monotonic_buffer_resource::_Chunk): Replace definition with
979 declaration as opaque type.
980 * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk):
982 (monotonic_buffer_resource::_M_new_buffer): Define.
983 (monotonic_buffer_resource::_M_release_buffers): Define.
985 2018-08-05 François Dumont <fdumont@gcc.gnu.org>
987 * include/bits/stl_iterator.h: Fix comment.
989 2018-08-03 Jonathan Wakely <jwakely@redhat.com>
991 * src/c++11/system_error.cc
992 (system_error_category::default_error_condition): Add workaround for
993 ENOTEMPTY and EEXIST having the same value on AIX.
994 * testsuite/19_diagnostics/error_category/system_category.cc: Add
995 extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
997 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
999 * configure: Regenerate.
1000 * configure.ac: Add -D_GLIBCXX_ASSERTIONS to default DEBUG_FLAGS.
1001 * src/c++11/futex.cc: Use __glibcxx_assert instead of
1002 _GLIBCXX_DEBUG_ASSERT.
1004 2018-08-01 Mike Crowe <mac@mcrowe.com>
1006 * include/std/condition_variable (wait_for): Use steady_clock.
1008 2018-08-01 Mike Crowe <mac@mcrowe.com>
1010 * include/std/condition_variable (wait_until): Only report timeout
1011 if we really have timed out when measured against the
1012 caller-supplied clock.
1013 * testsuite/30_threads/condition_variable/members/2.cc: Add test
1014 case to confirm above behaviour.
1016 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
1019 * src/c++11/system_error.cc
1020 (system_error_category::default_error_condition): New override to
1021 check for POSIX errno values.
1022 * testsuite/19_diagnostics/error_category/generic_category.cc: New
1023 * testsuite/19_diagnostics/error_category/system_category.cc: New
1026 2018-07-31 Jonathan Wakely <jwakely@redhat.com>
1029 * include/bits/stl_pair.h (__pair_base): New class with deleted copy
1030 assignment operator.
1031 (pair): Derive from __pair_base.
1032 (pair::operator=): Remove deleted overload.
1033 * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
1034 so that new base class isn't shown in GDB.
1035 * testsuite/20_util/pair/86751.cc: New test.
1036 * testsuite/20_util/pair/ref_assign.cc: New test.
1038 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1039 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Move definitions here.
1040 (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Likewise. Use !__is_identifier
1041 instead of __has_builtin.
1042 * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1043 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Remove definitions from here.
1044 * include/std/version [!_GLIBCXX_HAS_GTHREADS]
1045 (__cpp_lib_shared_timed_mutex, __cpp_lib_scoped_lock)
1046 (__cpp_lib_shared_mutex): Don't define when Gthreads not in use.
1047 [!_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP]
1048 (__cpp_lib_has_unique_object_representations): Don't define when
1049 builtin not available.
1050 [!_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE] (__cpp_lib_is_aggregate):
1052 [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
1053 * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
1056 * doc/xml/manual/test.xml: Improve documentation on writing tests for
1058 * doc/xml/manual/using.xml: Document all headers for C++11 and later.
1059 * doc/html/*: Regenerate.
1061 * include/ext/pointer.h [__cplusplus >= 201103L]
1062 (_Pointer_adapter::operator bool): Add explicit conversion operator
1063 to replace safe bool idiom.
1065 2018-07-30 Jonathan Wakely <jwakely@redhat.com>
1068 * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
1069 _S_to_pointer (LWG 1052, LWG 2118).
1070 (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
1071 * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
1072 * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
1074 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
1075 workaround for aligned_alloc bug on AIX.
1076 * testsuite/18_support/new_aligned.cc: New test.
1078 2018-07-26 Marek Polacek <polacek@redhat.com>
1080 * testsuite/30_threads/condition_variable_any/cond.cc: New.
1082 2018-07-26 Marek Polacek <polacek@redhat.com>
1084 * src/c++98/locale_init.cc: Fix #ifdef condition.
1086 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
1088 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
1089 dg-require-cstdint directive.
1090 * testsuite/20_util/allocator/overaligned.cc: Likewise.
1091 * testsuite/20_util/any/cons/aligned.cc: Likewise.
1092 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
1093 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
1094 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
1096 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
1097 * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
1098 * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
1099 * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
1100 * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
1101 random_device effective-target.
1102 * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
1103 * testsuite/25_algorithms/sample/1.cc: Require cstdint.
1104 * testsuite/25_algorithms/sample/2.cc: Likewise.
1105 * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
1107 * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
1109 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
1111 * testsuite/26_numerics/random/discard_block_engine/requirements/
1112 constexpr_data.cc: Likewise.
1113 * testsuite/26_numerics/random/discard_block_engine/requirements/
1114 constexpr_functions.cc: Likewise.
1115 * testsuite/26_numerics/random/independent_bits_engine/requirements/
1116 constexpr_functions.cc: Likewise.
1117 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
1118 constexpr_data.cc: Likewise.
1119 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
1120 constexpr_functions.cc: Likewise.
1121 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
1122 constexpr_data.cc: Likewise.
1123 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
1124 constexpr_functions.cc: Likewise.
1125 * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
1126 * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
1127 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
1128 constexpr_data.cc: Add dg-require-cstdint directive.
1129 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
1130 constexpr_functions.cc: Likewise.
1131 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
1132 constexpr_data.cc: Likewise.
1133 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
1134 constexpr_functions.cc: Likewise.
1135 * testsuite/26_numerics/random/uniform_real_distribution/operators/
1137 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
1138 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
1139 * testsuite/experimental/algorithm/sample.cc: Likewise.
1140 * testsuite/experimental/algorithm/search.cc: Likewise.
1141 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
1142 * testsuite/experimental/any/cons/aligned.cc: Likewise.
1143 * testsuite/experimental/memory_resource/new_delete_resource.cc:
1145 * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
1146 * testsuite/experimental/random/randint.cc: Likewise.
1147 * testsuite/experimental/source_location/1.cc: Likewise.
1148 * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
1149 * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
1150 * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
1151 * testsuite/ext/new_allocator/overaligned.cc: Likewise.
1152 * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
1153 * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
1154 * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
1155 * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
1156 * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
1157 * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
1158 * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
1159 * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
1160 * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
1161 * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
1162 * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
1163 * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
1164 * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
1165 * testsuite/ext/throw_allocator/check_new.cc: Likewise.
1166 * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
1167 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
1168 * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
1169 * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
1170 * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
1172 * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
1173 * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
1174 * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
1175 * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
1177 * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
1178 * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
1179 * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
1181 * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
1183 * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
1185 * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
1186 * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
1187 * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
1188 * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
1189 * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
1190 * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
1192 * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
1194 * testsuite/30_threads/recursive_timed_mutex/dest/
1195 destructor_locked.cc: Likewise.
1196 * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
1197 * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
1198 * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
1200 * testsuite/30_threads/recursive_timed_mutex/native_handle/
1201 typesizes.cc: Likewise.
1202 * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
1204 * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
1206 * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
1208 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
1210 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
1212 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
1214 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
1216 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
1218 * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
1219 * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
1220 * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
1221 * testsuite/30_threads/scoped_lock/requirements/
1222 explicit_instantiation.cc: Likewise.
1223 * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
1224 * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
1225 * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
1226 * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
1227 * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
1228 * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
1229 * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
1230 * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
1231 * testsuite/30_threads/shared_future/members/get.cc: Likewise.
1232 * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
1233 * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
1234 * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
1235 * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
1236 * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
1237 * testsuite/30_threads/shared_future/requirements/
1238 explicit_instantiation.cc: Likewise.
1239 * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
1240 * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
1241 * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
1242 * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
1243 * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
1244 * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
1245 * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
1246 * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
1247 * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
1248 * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
1249 * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
1250 * testsuite/30_threads/shared_lock/requirements/
1251 explicit_instantiation.cc: Likewise.
1252 * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
1253 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
1254 * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
1255 * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
1256 * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
1258 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
1259 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
1260 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
1261 * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
1262 * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
1263 * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
1264 * testsuite/30_threads/shared_timed_mutex/requirements/
1265 standard_layout.cc: Likewise.
1266 * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
1267 * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
1268 * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
1269 * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
1270 * testsuite/30_threads/this_thread/1.cc: Likewise.
1271 * testsuite/30_threads/this_thread/2.cc: Likewise.
1272 * testsuite/30_threads/this_thread/3.cc: Likewise.
1273 * testsuite/30_threads/this_thread/4.cc: Likewise.
1274 * testsuite/30_threads/this_thread/58038.cc: Likewise.
1275 * testsuite/30_threads/thread/70503.cc: Likewise.
1276 * testsuite/30_threads/thread/84532.cc: Likewise.
1277 * testsuite/30_threads/thread/adl.cc: Likewise.
1278 * testsuite/30_threads/thread/cons/1.cc: Likewise.
1279 * testsuite/30_threads/thread/cons/2.cc: Likewise.
1280 * testsuite/30_threads/thread/cons/3.cc: Likewise.
1281 * testsuite/30_threads/thread/cons/4.cc: Likewise.
1282 * testsuite/30_threads/thread/cons/49668.cc: Likewise.
1283 * testsuite/30_threads/thread/cons/5.cc: Likewise.
1284 * testsuite/30_threads/thread/cons/6.cc: Likewise.
1285 * testsuite/30_threads/thread/cons/7.cc: Likewise.
1286 * testsuite/30_threads/thread/cons/8.cc: Likewise.
1287 * testsuite/30_threads/thread/cons/84535.cc: Likewise.
1288 * testsuite/30_threads/thread/cons/9.cc: Likewise.
1289 * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
1290 * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
1291 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
1292 * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
1293 * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
1294 * testsuite/30_threads/thread/id/operators.cc: Likewise.
1295 * testsuite/30_threads/thread/members/1.cc: Likewise.
1296 * testsuite/30_threads/thread/members/2.cc: Likewise.
1297 * testsuite/30_threads/thread/members/3.cc: Likewise.
1298 * testsuite/30_threads/thread/members/4.cc: Likewise.
1299 * testsuite/30_threads/thread/members/5.cc: Likewise.
1300 * testsuite/30_threads/thread/members/hardware_concurrency.cc:
1302 * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
1303 * testsuite/30_threads/thread/swap/1.cc: Likewise.
1304 * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
1305 * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
1306 * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
1307 * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
1308 * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
1309 * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
1310 * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
1312 * testsuite/30_threads/timed_mutex/requirements/
1313 standard_layout.cc: Likewise.
1314 * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
1315 * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
1316 * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
1317 * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
1318 * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
1319 * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
1320 * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
1321 * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
1322 * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
1323 * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
1324 * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
1325 * testsuite/30_threads/try_lock/1.cc: Likewise.
1326 * testsuite/30_threads/try_lock/2.cc: Likewise.
1327 * testsuite/30_threads/try_lock/3.cc: Likewise.
1328 * testsuite/30_threads/try_lock/4.cc: Likewise.
1329 * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
1330 * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
1331 * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
1332 * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
1333 * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
1334 * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
1335 * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
1336 * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
1337 * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
1338 * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
1339 * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
1340 * testsuite/30_threads/unique_lock/requirements/
1341 explicit_instantiation.cc: Likewise.
1342 * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
1344 * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
1346 * testsuite/30_threads/async/49668.cc: Likewise.
1347 * testsuite/30_threads/async/54297.cc: Likewise.
1348 * testsuite/30_threads/async/84532.cc: Likewise.
1349 * testsuite/30_threads/async/any.cc: Likewise.
1350 * testsuite/30_threads/async/async.cc: Likewise.
1351 * testsuite/30_threads/async/except.cc: Likewise.
1352 * testsuite/30_threads/async/forced_unwind.cc: Likewise.
1353 * testsuite/30_threads/async/launch.cc: Likewise.
1354 * testsuite/30_threads/async/lwg2021.cc: Likewise.
1355 * testsuite/30_threads/async/sync.cc: Likewise.
1356 * testsuite/30_threads/call_once/39909.cc: Likewise.
1357 * testsuite/30_threads/call_once/49668.cc: Likewise.
1358 * testsuite/30_threads/call_once/60497.cc: Likewise.
1359 * testsuite/30_threads/call_once/call_once1.cc: Likewise.
1360 * testsuite/30_threads/call_once/constexpr.cc: Likewise.
1361 * testsuite/30_threads/call_once/dr2442.cc: Likewise.
1362 * testsuite/30_threads/call_once/once_flag.cc: Likewise.
1363 * testsuite/30_threads/condition_variable/54185.cc: Likewise.
1364 * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
1365 * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
1367 * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
1368 * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
1369 * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
1370 * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
1371 * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
1372 * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
1373 * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
1375 * testsuite/30_threads/condition_variable/requirements/
1376 standard_layout.cc: Likewise.
1377 * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
1379 * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
1380 * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
1381 * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
1382 * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
1384 * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
1386 * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
1387 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
1388 * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
1389 * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
1390 * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
1391 * testsuite/30_threads/future/cons/default.cc: Likewise.
1392 * testsuite/30_threads/future/cons/move.cc: Likewise.
1393 * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
1394 * testsuite/30_threads/future/members/45133.cc: Likewise.
1395 * testsuite/30_threads/future/members/get.cc: Likewise.
1396 * testsuite/30_threads/future/members/get2.cc: Likewise.
1397 * testsuite/30_threads/future/members/share.cc: Likewise.
1398 * testsuite/30_threads/future/members/valid.cc: Likewise.
1399 * testsuite/30_threads/future/members/wait.cc: Likewise.
1400 * testsuite/30_threads/future/members/wait_for.cc: Likewise.
1401 * testsuite/30_threads/future/members/wait_until.cc: Likewise.
1402 * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
1404 * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
1406 * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
1407 * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
1408 * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
1409 * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
1410 * testsuite/30_threads/lock/1.cc: Likewise.
1411 * testsuite/30_threads/lock/2.cc: Likewise.
1412 * testsuite/30_threads/lock/3.cc: Likewise.
1413 * testsuite/30_threads/lock/4.cc: Likewise.
1414 * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
1415 * testsuite/30_threads/lock_guard/requirements/
1416 explicit_instantiation.cc: Likewise.
1417 * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
1418 * testsuite/30_threads/mutex/cons/1.cc: Likewise.
1419 * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
1420 * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
1421 * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
1422 * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
1423 * testsuite/30_threads/mutex/lock/1.cc: Likewise.
1424 * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
1425 * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
1426 * testsuite/30_threads/mutex/requirements/standard_layout.cc::
1428 * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
1429 * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
1430 * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
1431 * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
1432 * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
1433 * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
1434 * testsuite/30_threads/packaged_task/49668.cc: Likewise.
1435 * testsuite/30_threads/packaged_task/60564.cc: Likewise.
1436 * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
1437 * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
1438 * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
1439 * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
1440 * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
1441 * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
1442 * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
1443 * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
1444 * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
1445 * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
1446 * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
1447 * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
1449 * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
1450 * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
1451 * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
1452 * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
1453 * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
1454 * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
1455 * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
1456 * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
1457 * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
1458 * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
1459 * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
1460 * testsuite/30_threads/packaged_task/requirements/
1461 explicit_instantiation.cc: Likewise.
1462 * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
1463 * testsuite/30_threads/promise/60966.cc: Likewise.
1464 * testsuite/30_threads/promise/69106.cc: Likewise.
1465 * testsuite/30_threads/promise/cons/1.cc: Likewise.
1466 * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
1467 * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
1468 * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
1469 * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
1470 * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
1471 * testsuite/30_threads/promise/cons/move.cc: Likewise.
1472 * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
1473 * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
1474 * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
1475 * testsuite/30_threads/promise/members/get_future.cc: Likewise.
1476 * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
1477 * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
1478 * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
1479 * testsuite/30_threads/promise/members/set_value.cc: Likewise.
1480 * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
1481 * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
1482 * testsuite/30_threads/promise/members/swap.cc: Likewise.
1483 * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
1485 * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
1487 * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
1489 * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
1490 * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
1491 * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
1492 * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
1493 * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
1494 * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
1495 * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
1496 * testsuite/20_util/duration/cons/1.cc: Likewise.
1497 * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
1498 * testsuite/20_util/duration/cons/2.cc: Likewise.
1499 * testsuite/20_util/duration/cons/54025.cc: Likewise.
1500 * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
1501 * testsuite/20_util/duration/requirements/explicit_instantiation/
1502 explicit_instantiation.cc: Likewise.
1503 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1504 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1505 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1506 * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
1507 * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
1508 * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
1509 * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
1510 * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
1511 * testsuite/20_util/ratio/operations/45866.cc: Likewise.
1512 * testsuite/20_util/ratio/operations/47913.cc: Likewise.
1513 * testsuite/20_util/ratio/operations/53840.cc: Likewise.
1514 * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
1515 * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
1516 * testsuite/20_util/system_clock/1.cc: Likewise.
1517 * testsuite/20_util/time_point/1.cc: Likewise.
1518 * testsuite/20_util/time_point/2.cc: Likewise.
1519 * testsuite/20_util/time_point/3.cc: Likewise.
1520 * testsuite/20_util/time_point/requirements/explicit_instantiation/
1521 explicit_instantiation.cc: Likewise.
1522 * testsuite/21_strings/basic_string/requirements/
1523 explicit_instantiation/char16_t/1.cc: Likewise.
1524 * testsuite/21_strings/basic_string/requirements/
1525 explicit_instantiation/char32_t/1.cc: Likewise.
1526 * testsuite/21_strings/basic_string_view/requirements/
1527 explicit_instantiation/char16_t/1.cc: Likewise.
1528 * testsuite/21_strings/basic_string_view/requirements/
1529 explicit_instantiation/char32_t/1.cc: Likewise.
1530 * testsuite/21_strings/char_traits/requirements/
1531 explicit_instantiation/char16_t/1.cc: Likewise.
1532 * testsuite/21_strings/char_traits/requirements/
1533 explicit_instantiation/char32_t/1.cc: Likewise.
1534 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
1535 * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
1536 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
1537 * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
1539 * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
1541 * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
1543 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
1544 * testsuite/23_containers/vector/bool/72847.cc: Likewise.
1545 * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
1547 * testsuite/experimental/string_view/requirements/
1548 explicit_instantiation/char16_t/1.cc: Likewise.
1549 * testsuite/experimental/string_view/requirements/
1550 explicit_instantiation/char32_t/1.cc: Likewise.
1551 * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
1553 * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
1556 * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1557 (random_condition, throw_value_random, throw_allocator_random)
1558 (std::hash<throw_value_random>): Do not define when <tr1/random> is
1560 * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
1561 define transactional memory support when <stdint.h> is not usable.
1563 * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
1564 implementation that doesn't depend on <stdint.h> types.
1565 * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
1566 std::size_t when std::uintptr_t is not usable.
1567 [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
1568 (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
1569 Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
1571 * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1572 (hash<u16string>, hash<u32string>): Remove dependency on
1573 _GLIBCXX_USE_C99_STDINT_TR1.
1574 * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1575 (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
1576 _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
1577 __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
1578 * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1579 (codecvt<char16_t, char, mbstate_t>)
1580 (codecvt<char32_t, char, mbstate_t>)
1581 (codecvt_byname<char16_t, char, mbstate_t>)
1582 (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
1583 on _GLIBCXX_USE_C99_STDINT_TR1.
1584 * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1585 (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
1586 * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1587 (char_traits<char16_t>, char_traits<char32_t>)
1588 (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
1589 on _GLIBCXX_USE_C99_STDINT_TR1.
1590 * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
1591 (u16string_view, u32string_view, hash<u16string_view>)
1592 (hash<u32string_view>, operator""sv(const char16_t, size_t))
1593 (operator""sv(const char32_t, size_t)): Likewise.
1594 * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1595 (hash<__u16vstring>, hash<__u32vstring>): Likewise.
1596 * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1597 (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
1598 (__u32sso_string, __u32rc_string): Likewise.
1599 * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
1600 (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
1601 * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
1602 (u16string_view, u32string_view, hash<u16string_view>)
1603 (hash<u32string_view>, operator""sv(const char16_t, size_t))
1604 (operator""sv(const char32_t, size_t)): Likewise.
1605 * src/c++11/codecvt.cc: Likewise.
1606 * src/c++98/locale_init.cc: Likewise.
1607 * src/c++98/localename.cc: Likewise.
1609 * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1610 (__atomic_futex_unsigned_base): Remove dependency on
1611 _GLIBCXX_USE_C99_STDINT_TR1 macro.
1612 * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1613 (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
1614 * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
1615 (uintmax_t): Define using predefined macros.
1616 * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
1617 (time_point, system_clock, high_resolution_clock, steady_clock): Remove
1618 dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
1619 (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
1620 [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
1621 long long when <stdint.h> is not usable.
1622 * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
1623 (condition_variable, condition_variable_any): Remove dependency on
1624 _GLIBCXX_USE_C99_STDINT_TR1.
1625 * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
1626 (packaged_task, async): Likewise.
1627 * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
1628 (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
1629 (once_flag, call_once): Likewise.
1630 * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
1631 * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
1632 (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
1633 * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
1634 (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
1635 (this_thread::sleep_until): Likewise.
1636 * src/c++11/chrono.cc: Remove dependency on
1637 _GLIBCXX_USE_C99_STDINT_TR1 macro.
1638 * src/c++11/condition_variable.cc: Likewise.
1639 * src/c++11/futex.cc: Likewise.
1640 * src/c++11/future.cc: Likewise.
1641 * src/c++11/mutex.cc: Likewise.
1642 * src/c++11/thread.cc: Likewise.
1643 * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
1644 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1645 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1646 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1647 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
1648 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
1650 2018-07-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1653 * testsuite/experimental/memory_resource/new_delete_resource.cc:
1654 xfail execution on 32-bit Solaris/x86.
1656 2018-07-26 Marc Glisse <marc.glisse@inria.fr>
1658 * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
1659 (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
1660 (vector::_M_move_assign): Reorder the swaps.
1662 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
1665 * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
1666 same alignment for post-release allocation.
1668 2018-07-25 Jonathan Wakely <jwakely@redhat.com>
1671 * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
1672 buffer being misaligned and so returned pointer not being at start.
1674 * include/experimental/memory_resource: Include <cstddef> header.
1676 * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
1677 * src/Makefile.am: Add comment.
1678 * src/c++17/Makefile.in: Regenerate.
1680 * include/Makefile.am: Add new <bits/unique_lock.h> header.
1681 * include/Makefile.in: Regenerate.
1682 * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
1683 (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
1684 (unique_lock): Move definition to ...
1685 * include/bits/unique_lock.h: New header.
1686 [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
1687 [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
1688 (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
1689 (unique_lock::try_lock_for): Define only when <chrono> is usable.
1690 * include/std/condition_variable: Include <bits/unique_lock.h>.
1691 * include/std/mutex: Likewise.
1693 2018-07-24 Jonathan Wakely <jwakely@redhat.com>
1695 * config/abi/pre/gnu.ver: Export new symbols.
1696 * configure: Regenerate.
1697 * include/Makefile.am: Add new <memory_resource> header.
1698 * include/Makefile.in: Regenerate.
1699 * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
1700 * include/std/memory_resource: New header.
1701 (memory_resource, polymorphic_allocator, new_delete_resource)
1702 (null_memory_resource, set_default_resource, get_default_resource)
1703 (pool_options, monotonic_buffer_resource): Define.
1704 * src/Makefile.am: Add c++17 directory.
1705 * src/Makefile.in: Regenerate.
1706 * src/c++11/Makefile.am: Fix comment.
1707 * src/c++17/Makefile.am: Add makefile for new sub-directory.
1708 * src/c++17/Makefile.in: Generate.
1709 * src/c++17/memory_resource.cc: New.
1710 (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
1711 (default_res, new_delete_resource, null_memory_resource)
1712 (set_default_resource, get_default_resource): Define.
1713 * testsuite/20_util/memory_resource/1.cc: New test.
1714 * testsuite/20_util/memory_resource/2.cc: New test.
1715 * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
1716 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
1717 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
1718 * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
1719 * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
1721 * testsuite/20_util/polymorphic_allocator/1.cc: New test.
1722 * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
1723 * testsuite/20_util/polymorphic_allocator/select.cc: New test.
1724 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
1725 Define concrete memory resource for testing.
1726 (__gnu_test::default_resource_mgr): Define RAII helper for changing
1730 * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
1731 parameter by reference, to avoid copying invalid iterators.
1732 * testsuite/25_algorithms/copy/86658.cc: New test.
1734 * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
1735 local variables for number of digits instead of type aliases.
1736 (__log2p1): Remove redundant branch also checked in __countl_zero.
1738 * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
1739 conditions. Add comments.
1740 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
1741 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
1742 * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
1744 * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
1745 (__uses_allocator_helper): Check conditions directly instead of
1746 using __is_erased_or_convertible.
1748 * include/experimental/memory_resource: Adjust comments and
1750 (__resource_adaptor_imp): Add second template parameter for type of
1751 memory resource base class.
1752 (memory_resource): Define default constructor, destructor, copy
1753 constructor and copy assignment operator as defaulted.
1756 * include/experimental/memory_resource (__get_default_resource): Use
1757 placement new to create an object with dynamic storage duration.
1759 2018-07-23 Jonathan Wakely <jwakely@redhat.com>
1762 * include/experimental/memory_resource
1763 (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
1764 (__resource_adaptor_common::__guaranteed_alignment): New helper to
1765 give maximum alignment an allocator guarantees. Specialize for known
1766 allocators using new and malloc.
1767 (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
1768 (__resource_adaptor_imp::do_deallocate): Likewise.
1769 * testsuite/experimental/memory_resource/new_delete_resource.cc:
1770 Check that new and delete are called with expected sizes.
1772 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
1775 * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
1778 2018-07-20 Fangrui Song <maskray@google.com>
1780 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
1781 _GLIBCXX_VISIBILITY(default).
1783 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
1786 * include/std/version: Move __cpp_lib_list_remove_return_type macro.
1788 2018-07-19 Jonathan Wakely <jwakely@redhat.com>
1790 * include/std/type_traits (__is_member_object_pointer_helper): Use
1791 __not_<is_function<_Tp>>::type instead of integral_constant.
1792 (__is_member_function_pointer_helper): Likewise for
1793 is_function<_Tp>::type.
1794 (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
1795 (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
1796 (is_trivially_constructible): Remove redundant use of
1798 (__is_trivially_copy_assignable_impl): Remove redundant use of
1800 (__is_trivially_move_assignable_impl): Remove redundant use of
1802 (is_trivially_destructible): Use __bool_constant.
1803 * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
1804 tests for scalar types.
1806 2018-07-19 Glen Joseph Fernandes <glenjofe@gmail.com>
1808 * include/bits/stl_algobase.h (__copy_move_a): Used
1809 __is_trivially_copyable.
1810 (__copy_move_backward_a): Likewise.
1811 * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
1814 2018-07-17 Jonathan Wakely <jwakely@redhat.com>
1817 * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
1818 (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
1819 * configure: Regenerate.
1820 * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
1821 * doc/Makefile.in: Regenerate.
1822 * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
1823 * include/Makefile.in: Regenerate.
1824 * libsupc++/Makefile.in: Regenerate.
1825 * po/Makefile.in: Regenerate.
1826 * python/Makefile.in: Regenerate.
1827 * src/Makefile.in: Regenerate.
1828 * src/c++11/Makefile.in: Regenerate.
1829 * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
1830 from -Wabi=2 that don't affect exported symbols.
1831 * src/c++98/Makefile.in: Regenerate.
1832 * src/filesystem/Makefile.in: Regenerate.
1833 * testsuite/Makefile.in: Regenerate.
1835 * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
1836 (_Async_state_common::_M_join): Simplify use of std::call_once and
1837 corresponding explicit instantiation.
1838 (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
1839 (__bind_simple): Remove definitions and explicit instantiation that
1840 are not required by exported symbols.
1842 2018-07-16 Jonathan Wakely <jwakely@redhat.com>
1844 * scripts/create_testsuite_files: Fix typo in comment.
1847 * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
1848 non-standard partial specialization.
1849 * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
1850 (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
1851 * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
1853 2018-07-16 Andreas Krebbel <krebbel@linux.ibm.com>
1855 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
1856 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
1857 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
1859 2018-07-06 François Dumont <fdumont@gcc.gnu.org>
1861 * include/debug/functions.h (__gnu_debug::__check_string): Move...
1862 * include/debug/string (__gnu_debug::__check_string): ... here.
1863 (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
1864 (__glibcxx_check_string_n_constructor): New.
1865 (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
1867 (__glibcxx_check_string_constructor): New.
1868 (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
1870 * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
1871 * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
1873 2018-07-06 Jonathan Wakely <jwakely@redhat.com>
1875 PR libstdc++/84928 use std::move in <numeric> algorithms
1876 * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
1877 conditionally move, according to __cplusplus value.
1878 (accumulate, inner_product, partial_sum, adjacent_difference): Use
1879 _GLIBCXX_MOVE_IF_20.
1880 * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
1881 * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
1882 * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
1883 * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
1885 * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
1887 P0935R0 Eradicating unnecessarily explicit default constructors
1888 * config/abi/pre/gnu.ver: Tighten existing patterns and export new
1889 default constructor symbols.
1890 * include/std/sstream (basic_stringbuf, basic_istringstream)
1891 (basic_ostringstream, basic_stringstream): Remove default arguments
1892 from explicit constructors taking ios_base::openmode and add separate
1893 non-explicit default constructors.
1894 * testsuite/27_io/basic_istringstream/cons/default.cc: New.
1895 * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
1896 * testsuite/27_io/basic_stringstream/cons/default.cc: New.
1897 * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
1898 * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
1900 * include/std/variant (__accepted_index): Use void_t.
1902 2018-07-05 Jonathan Wakely <jwakely@redhat.com>
1905 * config/abi/pre/gnu.ver: Export move constructors and move
1906 assignment operators for std::logic_error and std::runtime_error.
1907 * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
1908 _GLIBCXX_USE_NOEXCEPT.
1909 (logic_error, runtime_error): Declare move constructors and move
1910 assignment operators. When not declared already, define copy
1911 constructors and copy assignment operators as explicit-defaulted.
1912 (domain_error, invalid_argument, length_error, out_of_range)
1913 (overflow_error, underflow_error): Define move constructors and move
1914 assignment operators as explicitly-defaulted.
1915 * libsupc++/exception.h (exception): Likewise.
1916 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
1917 move constructors and move assignment operators as defaulted.
1918 * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
1919 assignment operators are defined.
1921 * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
1923 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1925 * testsuite/21_strings/basic_string/requirements/
1926 explicit_instantiation/debug.cc: Likewise.
1929 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1930 (basic_string::assign(basic_string&&)): Add conditional noexcept
1931 depending on the allocator's is_always_equal property (LWG 2063).
1932 * testsuite/21_strings/basic_string/modifiers/assign/char/
1933 move_assign.cc: Check for non-throwing exception specification.
1934 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
1935 move_assign.cc: Likewise.
1938 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1939 [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
1940 Add GLIBCXX_NOEXCEPT.
1941 (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
1942 to depend on the allocator's is_always_equal property (LWG 2063).
1943 (basic_string::swap(basic_string&)): Likewise.
1944 * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
1945 (basic_string::swap(basic_string&)): Likewise.
1946 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
1947 Check is_nothrow_move_assignable.
1948 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
1949 Check is_nothrow_move_assignable.
1950 * testsuite/21_strings/basic_string/cons/char/
1951 noexcept_move_construct.cc: Likewise.
1952 * testsuite/21_strings/basic_string/cons/wchar_t/
1953 noexcept_move_construct.cc: Likewise.
1955 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
1957 P0646R1 Improving the Return Value of Erase-Like Algorithms I
1958 * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
1960 (forward_list::__remove_return_type): Define typedef as size_type or
1961 void, according to __cplusplus value.
1962 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1963 empty, according to __cplusplus value.
1964 (forward_list::remove, forward_list::unique): Use typedef and macro
1965 to change return type and add abi-tag for C++2a.
1966 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
1967 typedef to change return type for C++2a.
1968 * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
1969 (forward_list::remove, forward_list::remove_if<Pred>)
1970 (forward_list::unique<BinPred>): Return number of removed elements
1972 * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
1973 (list::remove, list::unique, list::remove_if<Predicate>)
1974 (list::unique<BinaryPredicate>): Return number of removed elements
1976 * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
1977 (list::__remove_return_type): Define typedef as size_type or
1978 void, according to __cplusplus value.
1979 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1980 empty, according to __cplusplus value.
1981 (list::remove, list::unique): Use typedef and macro to change return
1982 type and add abi-tag for C++2a.
1983 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
1984 typedef to change return type for C++2a.
1985 * include/std/version (__cpp_lib_list_remove_return_type): Define.
1986 * testsuite/23_containers/forward_list/operations/
1987 remove_cxx20_return.cc: New.
1988 * testsuite/23_containers/forward_list/operations/
1989 unique_cxx20_return.cc: New.
1991 P0458R2 Checking for Existence of an Element in Associative Containers
1992 * include/bits/stl_map.h (map::contains): Add for C++2a.
1993 * include/bits/stl_multimap.h (multimap::contains): Likewise.
1994 * include/bits/stl_multiset.h (multiset::contains): Likewise.
1995 * include/bits/stl_set.h (set::contains): Likewise.
1996 * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
1997 (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
1998 (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
1999 (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
2000 * include/bits/unordered_map.h (unordered_map::contains)
2001 (unordered_multimap::contains): Add for C++2a.
2002 * include/bits/unordered_set.h (unordered_set::contains)
2003 (unordered_multiset::contains): Likewise.
2004 * testsuite/23_containers/map/operations/contains.cc: New.
2005 * testsuite/23_containers/multimap/operations/contains.cc: New.
2006 * testsuite/23_containers/multiset/operations/contains.cc: New.
2007 * testsuite/23_containers/set/operations/contains.cc: New.
2008 * testsuite/23_containers/unordered_map/operations/contains.cc: New.
2009 * testsuite/23_containers/unordered_multimap/operations/contains.cc:
2011 * testsuite/23_containers/unordered_multiset/operations/contains.cc:
2013 * testsuite/23_containers/unordered_set/operations/contains.cc: New.
2015 2018-07-04 François Dumont <fdumont@gcc.gnu.org>
2018 * include/debug/string
2019 (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
2020 Use __glibcxx_check_insert_range.
2021 * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
2022 __gnu_debug::string when _GLIBCXX_DEBUG.
2023 * 21_strings/basic_string/init-list.cc: Likewise.
2024 * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
2025 * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
2026 * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
2027 * 21_strings/basic_string/types/1.cc: Likewise.
2029 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
2031 * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
2032 target for std::random_device.
2033 * testsuite/26_numerics/random/random_device/cons/default.cc:
2035 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
2036 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2037 * testsuite/experimental/random/randint.cc: Likewise.
2038 * testsuite/lib/libstdc++.exp
2039 (check_effective_target_random_device): New proc.
2041 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
2042 Jakub Jelinek <jakub@redhat.com>
2044 * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
2046 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
2049 * include/std/type_traits (is_trivially_constructible): Check
2050 is_constructible before __is_trivially_constructible.
2051 * testsuite/20_util/is_trivially_constructible/value.cc: Add more
2052 tests, including negative cases.
2053 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
2054 zero for dg-error lineno.
2055 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
2058 * include/std/bit (__rotl, __rotr): Avoid branch.
2059 (_If_is_unsigned_integer): Use remove_cv_t.
2060 * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
2062 2018-07-03 Jonathan Wakely <jwakely@redhat.com>
2064 P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
2065 * include/Makefile.am: Add new header.
2066 * include/Makefile.in: Regenerate.
2067 * include/precompiled/stdc++.h: Include new header.
2068 * include/std/bit: New header.
2069 (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
2070 (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
2072 [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
2073 (countr_one, popcount): Define for C++2a. Also overload for std::byte.
2074 (ispow2, ceil2, floor2, log2p1): Define for C++2a.
2075 [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
2077 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
2078 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
2079 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
2080 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
2081 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
2082 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
2083 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
2084 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
2085 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
2086 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
2088 * include/bits/alloc_traits.h: Remove redundant preprocessor
2091 2018-07-03 François Dumont <fdumont@gcc.gnu.org>
2093 * include/bits/stl_algobase.h (__niter_wrap): New.
2094 (__copy_move_a2(_II, _II, _OI)): Use latter.
2095 (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
2096 (fill_n(_OI, _Size, const _Tp&)): Likewise.
2097 (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
2098 * include/debug/stl_iterator.h
2099 (std::__niter_base(const __gnu_cxx::_Safe_iterator<
2100 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
2101 * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
2102 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
2104 2018-07-02 Jonathan Wakely <jwakely@redhat.com>
2106 P0758R1 Implicit conversion traits
2107 * include/std/type_traits [__cplusplus > 201703]
2108 (__is_convertible_helper::__is_nothrow_type): Define new member.
2109 (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
2111 (__is_convertible_helper<_From, _To, false>::__test_nothrow)
2112 (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
2114 (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
2115 * testsuite/20_util/is_nothrow_convertible/value.cc: New.
2116 * testsuite/20_util/is_nothrow_convertible/requirements/
2117 explicit_instantiation.cc: New.
2118 * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
2121 P0887R1 The identity metafunction
2122 * include/std/type_traits (type_identity, type_identity_t): Define
2124 * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
2125 * testsuite/20_util/type_identity/requirements/
2126 explicit_instantiation.cc:New.
2127 * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
2129 * include/bits/regex.h (sub_match::operator string_type): Call str().
2130 (sub_match::compare): Use _M_str() instead of str().
2131 (sub_match::_M_compare): New public function.
2132 (sub_match::__string_view): New helper type.
2133 (sub_match::_M_str): New overloaded functions to avoid creating a
2134 string_type object when not needed.
2135 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
2136 Use sub_match::_M_compare instead of creating string_type objects.
2137 Fix Doxygen comments.
2138 * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
2139 (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
2141 (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
2143 * include/std/type_traits (__enable_if_t): Define for C++11.
2144 * testsuite/28_regex/sub_match/compare.cc: New.
2145 * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
2147 (input_iterator_wrapper): Use remove_cv for value_type argument of
2148 std::iterator base class.
2150 2018-06-29 Jonathan Wakely <jwakely@redhat.com>
2152 * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
2153 Add whitespace to dejagnu directive.
2154 * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
2156 2018-06-27 François Dumont <fdumont@gcc.gnu.org>
2158 * include/bits/stl_vector.h
2159 (struct _Vector_base<>::_Vector_impl_data): New.
2160 (struct _Vector_base<>::_Vector_impl): Inherit from latter.
2161 (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
2162 (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
2163 (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
2164 (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
2165 (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
2166 (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
2167 (_Vector_base()): Default.
2168 (_Vector_base(_Vector_base&&)): Default.
2169 (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
2170 (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
2171 (_Vector_base::_M_create_storage(size_t)): Make protected.
2172 (vector()): Default.
2173 (vector(vector&&)): Default.
2174 (vector(vector&&, const allocator_type&, true_type)): New.
2175 (vector(vector&&, const allocator_type&, false_type)): New.
2176 (vector(vector&&, const allocator_type&)): Use latters.
2177 (vector(_InputIte, _InputIte, const allocator_type&)): Call
2178 _M_range_initialize directly.
2179 * include/debug/vector
2180 (vector(vector&&, const allocator_type&)): Add noexcept qualification.
2181 * testsuite/23_containers/vector/allocator/default_init.cc: New.
2182 * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
2185 2018-06-27 Jonathan Wakely <jwakely@redhat.com>
2187 * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
2188 (__is_byte<byte>): Define specialization for std::byte.
2191 * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
2192 Declare explicit instantiations of COW empty reps and I/O functions.
2194 2018-06-26 David Edelsohn <dje.gcc@gmail.com>
2196 * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
2198 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2200 2018-06-26 Jonathan Wakely <jwakely@redhat.com>
2202 * include/bits/regex.tcc (regex_iterator::operator==): Add missing
2205 2018-06-25 Jonathan Wakely <jwakely@redhat.com>
2208 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
2209 Replace dict comprehension.
2212 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
2215 * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
2216 Add try-catch block.
2217 * testsuite/23_containers/vector/cons/86292.cc: New.
2219 * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
2221 * include/experimental/algorithm (sample, shuffle): Add new overloads
2222 using per-thread random number engine.
2223 * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
2224 dependencies by using __gnu_test::test_container.
2225 * testsuite/experimental/algorithm/sample-2.cc: New.
2226 * testsuite/experimental/algorithm/shuffle.cc: New.
2228 2018-06-22 Jonathan Wakely <jwakely@redhat.com>
2230 * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
2231 different size_t mangling on 32-bit targets.
2234 * include/experimental/memory_resource
2235 (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
2236 enough for result of left shift.
2239 * include/bits/basic_string.tcc:
2240 [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
2241 (basic_string<char>::_Rep::_S_empty_rep_storage)
2242 (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
2243 instantiation declarations.
2244 [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
2245 explicit instantiation declarations.
2246 * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
2247 * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
2249 2018-06-21 Jonathan Wakely <jwakely@redhat.com>
2252 * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
2253 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
2254 * configure: Regenerate.
2255 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2256 (basic_string::insert(const_iterator, initializer_list<C>)): Add.
2257 [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
2258 (basic_string::insert(iterator, initializer_list<C>)): Suppress
2260 * include/debug/string (basic_string::insert(iterator, C)): Change
2261 first parameter to const_iterator.
2262 (basic_string::insert(iterator, size_type, C)): Likewise. Change
2263 return type to iterator.
2264 (basic_string::insert(iterator, InputIterator, InputIterator)):
2266 (basic_string::insert(iterator, initializer_list<C>)): Change first
2267 parameter to const_iterator and return type to iterator.
2268 * src/c++11/string-inst.cc: Extend comment.
2269 * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
2271 * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
2273 * testsuite/util/testsuite_abi.cc: Add new symbol version.
2275 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
2278 * include/experimental/memory_resource
2279 (__resource_adaptor_imp::do_deallocate): Add missing return.
2280 * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
2281 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
2282 resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
2283 __gnu_cxx::malloc_allocator.
2286 * include/experimental/memory_resource (__resource_adaptor_common):
2288 (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
2289 pointer from unaligned, and vice versa.
2290 (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
2291 allocated pointer to meet alignment request.
2292 (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
2293 original pointer for deallocation.
2294 (__resource_adaptor_imp::do_is_equal): Reformat.
2295 (__resource_adaptor_imp::_S_aligned_size): Remove.
2296 (__resource_adaptor_imp::_S_supported): Remove.
2297 (new_delete_resource): Use __gnu_cxx::new_allocator.
2298 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
2299 extended alignments and use debug_allocator to check for matching
2300 allocate/deallocate pairs.
2302 2018-06-21 François Dumont <fdumont@gcc.gnu.org>
2304 * include/debug/safe_iterator.h
2305 (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
2306 Compare __x base iterator with a value-initialized iterator of the
2309 2018-06-20 Jonathan Wakely <jwakely@redhat.com>
2312 * include/experimental/memory_resource (__resource_adaptor_imp): Add
2313 static assertions to enforce requirements on pointer types.
2314 (__resource_adaptor_imp::get_allocator()): Add noexcept.
2315 (new_delete_resource, null_memory_resource): Return address of an
2316 object with dynamic storage duration.
2317 (__null_memory_resource): Remove.
2318 * testsuite/experimental/memory_resource/70966.cc: New.
2320 * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
2321 missed from recent commit.
2323 2018-06-19 Jonathan Wakely <jwakely@redhat.com>
2325 * include/std/utility: Remove unused <exception> header.
2327 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
2329 LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
2330 * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
2331 (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
2332 a specialization of std::pair.
2333 * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
2334 pair elements are constructed correctly.
2336 LWG 2989 hide path iostream operators from normal lookup
2337 * include/bits/fs_path.h (operator<<, operator>>): Define inline as
2339 * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
2341 LWG 3050 Fix cv-qualification of convertibility constraints
2342 * include/std/chrono (duration, operator*, operator/, operator%): Use
2343 const-qualified type as source type in is_convertible constraints.
2344 * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
2345 * testsuite/20_util/duration/cons/dr3050.cc: New.
2346 * testsuite/20_util/duration/literals/range.cc: Rename to...
2347 * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
2350 2018-06-18 Maya Rashish <coypu@sdf.org>
2352 * crossconfig.m4: Handle OpenBSD just like NetBSD.
2353 * configure: Rebuilt.
2355 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
2357 P0754R2 <version> header
2358 * include/Makefile.am: Add new header.
2359 * include/Makefile.in: Regenerate.
2360 * include/bits/c++config: Change doxygen comment to suggest <version>
2361 instead of <iosfwd>.
2362 * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
2363 unconditionally. Add C++17 and C++20 headers.
2364 * include/std/version: New header.
2365 * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
2366 * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
2367 * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
2368 * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
2369 * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
2370 * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
2371 * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
2373 * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
2374 * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
2375 * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
2376 * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
2377 * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
2378 * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
2379 * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
2381 * testsuite/18_support/headers/version/macros.cc: New.
2382 * testsuite/18_support/headers/version/macros.cc: New.
2384 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
2385 enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
2387 * config.h.in: Regenerate.
2388 * configure: Regenerate.
2389 * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
2391 LWG 3035. std::allocator's constructors should be constexpr
2392 * include/bits/allocator.h (allocator): Add constexpr to constructors
2393 for C++2a. Replace dynamic exception specifications with NOTHROW
2395 (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
2397 * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
2398 * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
2399 to constructors for C++2a.
2400 * include/ext/new_allocator.h (new_allocator): Likewise.
2402 2018-06-16 Jonathan Wakely <jwakely@redhat.com>
2404 LWG 3076 basic_string CTAD ambiguity
2405 * doc/xml/manual/intro.xml: Document LWG 3076 change.
2406 * include/bits/basic_string.h
2407 [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
2408 (basic_string(const _CharT*, const _Alloc&)): Turn into a function
2409 template constrained by _RequireAllocator.
2410 (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
2411 * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
2413 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
2415 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2418 2018-06-15 Jonathan Wakely <jwakely@redhat.com>
2421 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2422 (basic_string::data()): Unshare string.
2423 * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
2426 * include/std/string_view (basic_string_view(const CharT*)): Remove
2427 check for null pointer and add nonnull attribute.
2428 (compare(const CharT*), compare(size_type, size_type, const CharT*))
2429 (find(const CharT*, size_type), rfind(const CharT*, size_type))
2430 (find_first_of(const CharT*, size_type))
2431 (find_last_of(const CharT*, size_type))
2432 (find_first_not_of(const CharT*, size_type))
2433 (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
2434 * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
2435 * testsuite/21_strings/basic_string_view/operations/compare/char/
2437 * testsuite/21_strings/basic_string_view/operations/find/char/
2439 * testsuite/21_strings/basic_string_view/operations/rfind/char/
2443 * include/bits/random.h (random_device(const string&)): Remove
2446 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
2447 define for C++17 and above.
2449 LWG 2993 reference_wrapper<T> conversion from T&&
2450 * doc/xml/manual/intro.xml: Document LWG 2993 change.
2451 * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
2452 (reference_wrapper(_Tp&&)): Remove.
2453 (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
2455 (reference_wrapper): Add deduction guide.
2456 * testsuite/20_util/reference_wrapper/deduction.cc: New.
2457 * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
2459 LWG 3039 Unnecessary decay in thread and packaged_task
2460 * include/std/future (__constrain_pkgdtask): Replace with ...
2461 (packaged_task::__not_same): New alias template, using
2462 __remove_cvref_t instead of decay.
2463 * include/std/thread (thread::__not_same): Add comment.
2465 2018-06-14 Jonathan Wakely <jwakely@redhat.com>
2467 LWG 3075 basic_string needs deduction guides from basic_string_view
2468 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
2469 deduction from string views.
2470 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2473 LWG 3074 make scalar types non-deduced in valarray non-member functions
2474 * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
2475 scalar parameters to be a non-deduced context.
2476 * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
2478 * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
2479 * testsuite/26_numerics/valarray/transcend.cc: New.
2481 * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
2482 Move back to <utility>.
2483 * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
2486 P0935R0 Eradicating unnecessarily explicit default constructors
2487 * include/backward/strstream (strstreambuf): Add non-explicit default
2489 * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
2491 * include/bits/regex.h (match_results): Likewise.
2492 * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
2493 default constructor.
2494 * testsuite/22_locale/conversions/string/1.cc: Likewise.
2495 * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
2496 * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
2498 * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
2499 macro from <utility> and change type to long.
2500 * include/std/utility (__cpp_lib_tuple_element_t): Remove.
2501 * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
2504 P0935R0 Eradicating unnecessarily explicit default constructors
2505 * include/bits/random.h (uniform_real_distribution::param_type)
2506 (normal_distribution::param_type, lognormal_distribution::param_type)
2507 (gamma_distribution::param_type, chi_squared_distribution::param_type)
2508 (cauchy_distribution::param_type, fisher_f_distribution::param_type)
2509 (student_t_distribution::param_type)
2510 (bernoulli_distribution::param_type)
2511 (binomial_distribution::param_type)
2512 (geometric_distribution::param_type)
2513 (negative_binomial_distribution::param_type)
2514 (poisson_distribution::param_type)
2515 (exponential_distribution::param_type)
2516 (weibull_distribution::param_type)
2517 (extreme_value_distribution::param_type): Add non-explicit default
2518 constructors. Remove default argument for first parameter of explicit
2520 * include/bits/uniform_int_dist.h
2521 (uniform_int_distribution::param_type): Likewise.
2522 * include/ext/random
2523 (beta_distribution::param_type, rice_distribution::param_type)
2524 (nakagami_distribution::param_type, pareto_distribution::param_type)
2525 (k_distribution::param_type, arcsine_distribution::param_type)
2526 (hoyt_distribution::param_type, triangular_distribution::param_type)
2527 (von_mises_distribution::param_type)
2528 (hypergeometric_distribution::param_type)
2529 (logistic_distribution::param_type)
2530 (uniform_inside_sphere_distribution::param_type): Likewise.
2531 (uniform_on_sphere_distribution::param_type): Make default constructor
2533 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
2534 Test param_type for non-explicit default constructor.
2535 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
2537 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
2539 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
2541 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
2543 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
2545 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
2547 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
2549 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
2551 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
2553 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
2555 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
2557 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
2559 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
2561 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
2563 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
2565 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
2567 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
2569 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
2571 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
2573 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
2574 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
2575 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
2576 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
2578 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
2579 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
2580 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
2581 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
2583 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
2584 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
2585 * testsuite/ext/random/triangular_distribution/cons/default.cc:
2587 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
2589 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
2591 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
2594 2018-06-14 Daniel Trebbien <dtrebbien@gmail.com>
2595 Jonathan Wakely <jwakely@redhat.com>
2598 * include/bits/vector.tcc (vector::_M_default_append(size_type)):
2599 Default-construct new elements before moving existing ones.
2600 * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
2603 2018-06-13 Jonathan Wakely <jwakely@redhat.com>
2606 * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
2608 (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
2609 Use node allocator to create and destroy elements.
2610 (forward_list::_Tp_alloc_type): Remove unused typedef.
2611 (forward_list::_Alloc_traits): Use allocator_traits instead of
2612 __gnu_cxx::__alloc_traits.
2614 2018-06-13 François Dumont <fdumont@gcc.gnu.org>
2616 * include/debug/helper_functions.h
2617 (__gnu_debug::_Safe_iterator<>): Add declaration.
2618 (__can_advance(_Ite, _Size)): New.
2619 (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
2620 * include/debug/functions.h
2621 (__gnu_debug::_Safe_iterator<>): Remove declaration.
2622 * include/debug/stl_iterator.h
2623 (__can_advance(const _Safe_iterator<>&)): New definition.
2624 * include/debug/stl_iterator.h
2625 (__can_advance(const std::reverse_iterator<>&, _Size)): New.
2626 (__can_advance(const std::move_iterator<>&, _Size)): New.
2627 * include/debug/macros.h (__glibcxx_check_can_increment): New.
2628 * include/debug/debug.h (__glibcxx_requires_can_increment): New.
2629 * include/bits/stl_algobase.h (fill_n): Use latter.
2630 * testsuite/25_algorithms/fill_n/2.cc: New.
2631 * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
2632 * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
2633 * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
2634 * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
2636 * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
2637 (__glibcxx_requires_can_decrement_range): New.
2639 2018-06-12 François Dumont <fdumont@gcc.gnu.org>
2641 * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
2642 (__glibcxx_check_can_decrement_range): New.
2643 * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
2644 __glibcxx_requires_can_increment_range.
2645 (std::move(_II, _II, _OI)): Likewise.
2646 (std::copy_backward(_BI, _BI, _BI2)): Use
2647 __glibcxx_requires_can_decrement_range.
2648 (std::move_backward(_BI, _BI, _BI2)): Likewise.
2649 * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
2650 * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
2651 * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
2652 * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
2653 * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
2654 * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
2656 2018-06-12 Jonathan Wakely <jwakely@redhat.com>
2658 P0935R0 Eradicating unnecessarily explicit default constructors
2659 * include/bits/random.h (linear_congruential_engine)
2660 (mersenne_twister_engine, subtract_with_carry_engine, random_device)
2661 (uniform_real_distribution, normal_distribution)
2662 (lognormal_distribution, gamma_distribution, chi_squared_distribution)
2663 (cauchy_distribution, fisher_f_distribution, student_t_distribution)
2664 (bernoulli_distribution, binomial_distribution,geometric_distribution)
2665 (negative_binomial_distribution, exponential_distribution)
2666 (weibull_distribution, extreme_value_distribution): Add non-explicit
2667 default constructors. Remove default argument for first parameter of
2668 explicit constructors.
2669 (piecewise_constant_distribution, piecewise_linear_distribution):
2670 Make default constructor non-explicit.
2671 * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
2672 non-explicit default constructors. Remove default argument for first
2673 parameter of explicit constructor.
2674 * include/ext/random
2675 (simd_fast_mersenne_twister_engine, beta_distribution)
2676 (rice_distribution, nakagami_distribution, pareto_distribution)
2677 (k_distribution, arcsine_distribution, hoyt_distribution)
2678 (triangular_distribution, von_mises_distribution)
2679 (hypergeometric_distribution, logistic_distribution)
2680 (uniform_inside_sphere_distribution): Likewise.
2681 (uniform_on_sphere_distribution): Make default constructor
2683 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
2684 Test for non-explicit default constructor. Fix references to standard.
2685 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
2687 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
2689 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
2691 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
2693 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
2695 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
2697 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
2699 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
2701 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
2703 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
2705 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
2707 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
2709 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
2711 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
2713 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
2715 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
2717 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
2719 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
2721 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
2723 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
2724 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
2725 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
2726 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
2728 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
2729 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
2730 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
2731 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
2733 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
2734 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
2735 * testsuite/ext/random/triangular_distribution/cons/default.cc:
2737 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
2739 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
2741 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
2743 * testsuite/util/testsuite_common_types.h
2744 (implicitly_default_constructible): New helper.
2746 2018-06-08 Jonathan Wakely <jwakely@redhat.com>
2748 * include/bits/ios_base.h (ios::Init::Init(const Init&))
2749 (ios::Init::operator=): Define as defaulted.
2750 * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
2752 * include/bits/stream_iterator.h (istream_iterator::operator=)
2753 (ostream_iterator::operator=): Likewise.
2754 * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
2756 * include/std/bitset (bitset::reference::reference(const reference&)):
2758 * include/std/complex (complex<float>::complex(const complex&))
2759 (complex<double>::complex(const complex&))
2760 (complex<long double>::complex(const complex&)): Likewise.
2762 2018-06-07 Jonathan Wakely <jwakely@redhat.com>
2764 * include/bits/regex.h (sub_match): Add noexcept to default
2765 constructor and length observer.
2766 (match_results): Add noexcept to default constructor and observers
2767 with no preconditions. Define destructor as defaulted.
2768 (operator==, operator!=, swap): Add noexcept.
2769 (regex_iterator): Add default member initializers and define default
2770 constructor and destructor as defaulted. Add noexcept to equality
2771 and dereference operators.
2773 2018-06-07 François Dumont <fdumont@gcc.gnu.org>
2775 * src/c++11/debug.cc
2776 (_Safe_iterator_base::_M_detach()): Reset state only if needed.
2777 (_Safe_iterator_base::_M_detach_single()): Likewise.
2778 (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
2779 (_Safe_local_iterator_base::_M_detach_single()): Likewise.
2781 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
2783 * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
2784 move of const value.
2786 2018-06-06 Jakub Jelinek <jakub@redhat.com>
2789 * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
2790 rather than __cpp_transactional_memory >= 201505L.
2792 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
2795 * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
2796 Define new partial specialization.
2797 * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
2799 (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
2800 value not reference for iteration.
2801 * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
2803 * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
2804 * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
2807 2018-06-05 Jonathan Wakely <jwakely@redhat.com>
2809 * include/std/type_traits: Fix comment typos.
2811 * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
2813 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
2814 * testsuite/experimental/filesystem/operations/read_symlink.cc:
2817 2018-06-05 François Dumont <fdumont@gcc.gnu.org>
2819 * include/bits/stl_tempbuf.h
2820 (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
2821 (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
2822 * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
2823 * include/bits/stl_algo.h (__stable_partition): Adapt.
2824 (__inplace_merge): Adapt.
2825 (__stable_sort): Adapt.
2827 2018-06-04 Jonathan Wakely <jwakely@redhat.com>
2830 * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
2831 unconditionally. Remove redundant declaration.
2832 [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
2833 alignment-specifier.
2835 * include/bits/postypes.h (fpos): Define special members as defaulted.
2838 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
2839 the static variable correctly.
2841 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
2843 PR libstdc++/78870 support std::filesystem on Windows
2844 * config.h.in: Regenerate.
2845 * configure: Regenerate.
2846 * configure.ac: Check for link, readlink and symlink.
2847 * include/bits/fs_path.h (path::operator/=(const path&)): Move
2848 definition out of class body.
2849 (path::is_absolute(), path::_M_append(path)): Likewise.
2850 (operator<<(basic_ostream, const path&)): Use std::quoted directly.
2851 (operator>>(basic_istream, path&)): Likewise.
2852 (u8path): Reorder definitions and fix Windows implementation.
2853 (path::is_absolute()): Define inline and fix for Windows.
2854 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
2855 Define POSIX version inline.
2856 (path::_M_append(path)): Define inline.
2857 * include/experimental/bits/fs_path.h (path::is_absolute()): Move
2858 definition out of class body.
2859 (operator<<(basic_ostream, const path&)): Fix type of delimiter and
2861 (operator>>(basic_istream, path&)): Likewise.
2862 (path::is_absolute()): Define inline and fix for Windows.
2863 * src/filesystem/dir-common.h (__gnu_posix): New namespace.
2864 (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
2865 (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
2866 Define as adaptors for Windows functions/types or as
2867 using-declarations for POSIX functions/types.
2868 (_Dir_base, get_file_type): Qualify names to use declarations from
2869 __gnu_posix namespace.
2870 (_Dir_base::is_dor_or_dotdot): New helper functions.
2871 * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
2872 names to use declarations from __gnu_posix namespace.
2873 * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
2874 (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
2875 (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
2876 (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
2877 (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
2878 (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
2879 Define as adaptors for Windows functions/types or as
2880 using-declarations for POSIX functions/types.
2881 (stat_type, do_copy_file): Qualify names to use declarations from
2882 __gnu_posix namespace.
2883 (do_space): Declare new function.
2884 (make_file_type): Only use S_ISLNK if defined.
2885 * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
2886 path::value_type not char.
2887 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
2888 names to use declarations from __gnu_posix namespace.
2889 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
2890 add implementation for Windows.
2891 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
2892 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
2893 [!_PC_PATH_MAX]: Don't use pathconf.
2894 [PATH_MAX]: Use if defined.
2895 (filesystem::current_path(const path&, error_code&))
2896 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
2897 (filesystem::last_write_time, filesystem::permissions): Use names
2899 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
2900 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
2901 implementation for Windows.
2902 (filesystem::rename, filesystem::resize_file): Use names from
2904 (filesystem::space): Use do_space.
2905 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
2906 (filesystem::status, filesystem::symlink_status): Use names from
2908 (filesystem::temp_directory_path): Add implementation for Windows.
2909 * src/filesystem/path.cc (dot): Define constant.
2910 (path::replace_extension): Use dot.
2911 (path::_M_find_extension): Likewise. Use path::string_type not
2913 (path::_M_split_cmpts): Use dot.
2914 (filesystem_error::_M_get_what): Use u8string() not native().
2915 * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
2916 Qualify names to use declarations from __gnu_posix namespace.
2917 * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
2919 (filesystem::absolute(const path&, error_code&)): Add implementation
2921 (char_ptr, filesystem::canonical): Use path::value_type not char.
2922 (do_copy_file): Use names from __gnu_posix.
2923 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
2925 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
2926 names to use declarations from __gnu_posix namespace.
2927 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
2928 add implementation for Windows.
2929 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
2930 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
2931 [!_PC_PATH_MAX]: Don't use pathconf.
2932 [PATH_MAX]: Use if defined.
2933 (filesystem::current_path(const path&, error_code&))
2934 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
2935 (filesystem::last_write_time, filesystem::permissions): Use names
2937 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
2938 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
2939 implementation for Windows.
2940 (filesystem::rename, filesystem::resize_file): Use names from
2943 (filesystem::space): Use do_space.
2944 (filesystem::status, filesystem::symlink_status): Use names from
2946 (filesystem::temp_directory_path): Add implementation for Windows.
2947 * src/filesystem/std-path.cc
2948 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
2950 (dot): Define constant.
2951 (path::replace_extension, is_dot): Use dot.
2952 (path::lexically_normal): Check _M_type instead of calling
2953 non-existent function.
2954 (path::_M_find_extension): Use dot. Use path::string_type not
2956 (path::_M_split_cmpts): Use dot.
2957 (filesystem_error::_M_get_what): Use u8string() not native().
2958 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
2960 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
2962 * testsuite/27_io/filesystem/operations/absolute.cc: Use
2963 __gnu_test::root_path() instead of "/" and add Windows-specific tests.
2964 * testsuite/27_io/filesystem/operations/canonical.cc: Use
2965 path::string() to get narrow string, not path::native().
2966 * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
2967 with std::filesystem::path not std::basic_string.
2968 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
2969 * testsuite/27_io/filesystem/operations/exists.cc: Use
2970 __gnu_test::root_path() instead of "/".
2971 * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
2972 fstreams with std::filesystem::path not std::basic_string.
2973 * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
2974 path::string() to get narrow string.
2975 * testsuite/27_io/filesystem/operations/space.cc: Check results for
2976 errors, expect sensible values otherwise.
2977 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
2978 helpers for adjusting the environment on Windows.
2979 * testsuite/27_io/filesystem/path/append/path.cc: Test
2980 Windows-specific behaviour.
2981 * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
2982 of path::string_type objects.
2983 * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
2984 string to wide string on Windows.
2985 * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
2986 for backslash as root-directory.
2987 * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
2988 path::string() to get narrow string.
2989 * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
2991 * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
2993 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
2994 different definintion of absolute paths on Windows.
2995 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
2996 Do not use symlinks.
2997 * testsuite/experimental/filesystem/operations/absolute.cc: Test
2999 * testsuite/experimental/filesystem/operations/copy.cc: Construct
3000 fstreams with NTCTS not std::basic_string.
3001 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
3002 * testsuite/experimental/filesystem/operations/exists.cc: Use
3003 __gnu_test::root_path() instead of "/".
3004 * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
3005 fstreams with NTCTS not std::basic_string.
3006 * testsuite/experimental/filesystem/operations/last_write_time.cc:
3007 Use path::string() to get narrow string.
3008 * testsuite/experimental/filesystem/operations/space.cc: Use
3009 __gnu_test::root_path() instead of "/".
3010 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3011 Add helpers for adjusting the environment on Windows.
3012 * testsuite/experimental/filesystem/path/append/path.cc: Use
3013 path::string() to get narrow strings for comparisons.
3014 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
3015 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
3017 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
3018 * testsuite/experimental/filesystem/path/native/string.cc: Use
3019 string_type not std::string.
3020 * testsuite/experimental/filesystem/path/query/is_absolute.cc:
3021 Adjust for different definintion of absolute paths on Windows.
3022 * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
3024 (__gnu_test::scoped_file): Construct fstreams with NTCTS not
3027 2018-05-31 Jonathan Wakely <jwakely@redhat.com>
3030 * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
3031 uint_least16_t and uint_least32_t.
3032 (__make_unsigned<wchar_t>): Define unconditionally.
3033 (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
3035 (__make_unsigned_selector_base): New type to provide helper templates.
3036 (__make_unsigned_selector<_Tp, false, true>): Reimplement using
3037 __make_unsigned_selector_base helpers.
3038 (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
3039 (__make_signed_selector<_Tp, true, false>): Remove intermediate
3041 (__make_signed<wchar_t>, __make_signed<char16_t>)
3042 (__make_signed<char32_t>)): Define unconditionally.
3043 * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
3044 wchar_t, char16_t and char32_t are transformed correctly.
3045 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
3047 * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
3048 wchar_t, char16_t and char32_t are transformed correctly.
3049 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
3052 2018-05-29 Jonathan Wakely <jwakely@redhat.com>
3054 * include/std/variant (__erased_dtor): Qualify call to __get.
3056 2018-05-27 François Dumont <fdumont@gcc.gnu.org>
3058 * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
3059 (_Rb_tree(const allocator_type&)): Use latter.
3060 * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
3061 (map(initializer_list<value_type>, const allocator_type&)): Likewise.
3062 (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3063 * include/bits/stl_multimap.h
3064 (multimap(const allocator_type&)): Likewise.
3065 (multimap(initializer_list<value_type>, const allocator_type&)):
3067 (multimap(_InputIterator, _InputIterator, const allocator_type&)):
3069 * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
3070 (set(initializer_list<value_type>, const allocator_type&)): Likewise.
3071 (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3072 * include/bits/stl_multiset.h
3073 (multiset(const allocator_type&)): Likewise.
3074 (multiset(initializer_list<value_type>, const allocator_type&)):
3076 (multiset(_InputIterator, _InputIterator, const allocator_type&)):
3079 2018-05-25 François Dumont <fdumont@gcc.gnu.org>
3082 * src/c++11/debug.cc: Remove backtrace usage.
3084 2018-05-24 Maya Rashish <coypu@sdf.org>
3087 * crossconfig.m4: Test for aligned_alloc on netbsd.
3088 * configure: Regenerate.
3090 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
3094 * include/bits/atomic_base.h (__atomic_base::value_type)
3095 (__atomic_base::difference_type): Add new typedefs.
3096 * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
3097 (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
3098 (atomic<T*>::operator++, atomic<T*>::operator--)
3099 (atomic<T*>::operator+=, atomic<T*>::operator-=)
3100 (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
3101 to enforce C++17 requirement on pointer arithmetic.
3102 (__atomic_val_t, __atomic_diff_t): New alias templates.
3103 (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
3104 (atomic_compare_exchange_weak_explicit)
3105 (atomic_compare_exchange_strong_explicit, atomic_store)
3106 (atomic_exchange, atomic_compare_exchange_weak)
3107 (atomic_compare_exchange_strong): Use __atomic_val_t to make
3108 scalar parameters be non-deduced contexts.
3109 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
3110 (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
3111 atomic instead of __atomic_base, and use __atomic_diff_t for scalar
3113 (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
3114 (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
3115 (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
3116 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
3117 (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
3119 * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
3120 * testsuite/29_atomics/atomic/69769.cc: New test.
3121 * testsuite/29_atomics/atomic/nonmembers.cc: New test.
3122 * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
3123 Disable test for C++17 and later.
3124 * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
3125 * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
3126 * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
3129 2018-05-23 Jonathan Wakely <jwakely@redhat.com>
3131 * include/bits/fs_path.h (path::__is_encoded_char): Change from class
3132 template to alias template.
3133 (path::__value_type_is_char): Use remove_const_t.
3134 (path:_S_string_from_iter): New helper function.
3135 (path::_S_convert(InputIter, __null_terminated))
3136 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
3137 Use _S_string_from_iter.
3138 (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
3139 rep for COW strings.
3140 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
3141 Change from class template to alias template.
3142 (path::__value_type_is_char): Use remove_const.
3143 (path:_S_string_from_iter): New helper function.
3144 (path::_S_convert(InputIter, __null_terminated))
3145 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
3146 Use _S_string_from_iter.
3147 * testsuite/27_io/filesystem/path/append/source.cc: Test appending
3149 * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
3150 string equality, not path equivalence.
3151 * testsuite/27_io/filesystem/path/construct/format.cc: Check
3152 construction from std::string and std::wstring and input iterators.
3153 * testsuite/27_io/filesystem/path/construct/locale.cc: Check
3154 construction from iterators.
3155 * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
3156 exact string equality, not path equivalence.
3157 * testsuite/experimental/filesystem/path/construct/locale.cc: Check
3158 construction from iterators.
3160 * include/bits/fs_path.h (path::_M_type): Change default member
3161 initializer to _Filename.
3162 (path::begin): Create past-the-end iterator for empty path.
3163 * src/filesystem/std-path.cc (path::remove_filename()): Remove
3165 (path::has_relative_path()): Return false for empty filenames.
3166 (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
3167 Fix offset of empty final component.
3168 * testsuite/27_io/filesystem/path/itr/components.cc: New.
3169 * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
3171 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
3173 Add support for opening file streams from wide character strings.
3174 * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
3175 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
3176 Define new overload.
3177 * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
3178 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
3179 Declare new overload.
3180 * configure.ac: Check for _wfopen.
3181 * crossconfig.m4: Likewise.
3182 * configure: Regenerate.
3183 * config.h.in: Regenerate.
3184 * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
3185 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
3186 Define new overload.
3187 * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
3188 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
3189 Declare new overload.
3190 [_GLIBCXX_HAVE__WFOPEN]
3191 (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3192 (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
3193 (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3194 (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
3195 (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3196 (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
3198 * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
3199 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
3200 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
3201 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
3202 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
3203 * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
3204 * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
3206 2018-05-21 François Dumont <fdumont@gcc.gnu.org>
3209 * include/bits/stl_tree.h
3210 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
3213 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
3215 * src/filesystem/std-ops.cc (absolute): Report an error for empty
3217 (weakly_canonical(const path&)): Do not call canonical on empty path.
3218 (weakly_canonical(const path&, error_code&)): Likewise.
3219 * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
3222 * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
3223 dg-require-filesystem-ts.
3226 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
3227 initialize base class to avoid warnings.
3229 2018-05-19 Jonathan Wakely <jwakely@redhat.com>
3231 * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
3232 [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
3233 little_endian element in bitmask.
3234 * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
3235 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
3237 2018-05-18 François Dumont <fdumont@gcc.gnu.org>
3239 * include/bits/stl_tree.h
3240 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
3241 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
3242 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
3243 (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
3244 * include/debug/map.h
3245 (map(map&&, const_allocator_type&)): Add noexcept qualitication.
3246 * include/debug/multimap.h
3247 (multimap(multimap&&, const_allocator_type&)): Likewise.
3248 * include/debug/set.h
3249 (set(set&&, const_allocator_type&)): Likewise.
3250 * include/debug/multiset.h
3251 (multiset(multiset&&, const_allocator_type&)): Likewise.
3252 * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
3254 * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
3256 * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
3258 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
3260 * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
3262 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
3264 * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
3266 * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
3269 2018-05-18 Jason Merrill <jason@redhat.com>
3271 * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
3272 for conversion to const_iterator. Add defaulted copy ops.
3273 * libsupc++/new (bad_alloc): Add defaulted copy ops.
3274 * libsupc++/exception.h (exception): Add defaulted copy ops.
3275 * include/std/system_error (system_error): Add defaulted copy ops.
3276 * include/std/stdexcept (domain_error, invalid_argument)
3277 (length_error, out_of_range, range_error, overflow_error)
3278 (underflow_error): Add defaulted copy ops.
3279 * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
3281 * include/bits/allocator.h (allocator): Add defaulted copy assignment.
3282 * include/ext/throw_allocator.h (condition_base): Add defaulted
3283 default and copy ctor and copy assignment.
3285 2018-05-18 Jonathan Wakely <jwakely@redhat.com>
3288 * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
3289 (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
3290 (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
3291 (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
3293 * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
3295 * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
3296 braces around body of do-while.
3297 * testsuite/28_regex/basic_regex/85098.cc: New
3299 2018-05-17 Jonathan Wakely <jwakely@redhat.com>
3302 * src/filesystem/path.cc (path::preferred_separator): Add used
3304 * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
3307 * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
3308 * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
3309 Refactor to separate non-throwing and throwing implementations.
3310 [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
3311 if constructing the object throws.
3313 2018-05-15 Jonathan Wakely <jwakely@redhat.com>
3316 * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
3317 (linear_congruential_engine, mersenne_twister_engine)
3318 (subtract_with_carry_engine, discard_block_engine)
3319 (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
3320 constrain function templates taking seed sequences.
3321 * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
3322 (mersenne_twister_engine::seed(_Sseq&))
3323 (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
3325 * include/ext/random (simd_fast_mersenne_twister_engine): Use
3326 __is_seed_seq to constrain function templates taking seed sequences.
3327 * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
3328 Change return type to match declaration.
3329 * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
3331 * testsuite/26_numerics/random/independent_bits_engine/cons/
3333 * testsuite/26_numerics/random/linear_congruential_engine/cons/
3335 * testsuite/26_numerics/random/mersenne_twister_engine/cons/
3337 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
3338 * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
3340 * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
3342 * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
3346 * include/bits/fs_path.h (path::is_absolute()): Use same definition
3347 for all operating systems.
3348 * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
3349 * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
3350 * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
3351 * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
3353 * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
3354 unused <vector> header.
3355 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
3356 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
3357 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
3358 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
3359 * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
3361 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
3363 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
3364 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
3365 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
3366 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
3367 * testsuite/experimental/filesystem/path/decompose/extension.cc:
3369 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
3370 * testsuite/experimental/filesystem/path/query/has_extension.cc:
3372 * testsuite/experimental/filesystem/path/query/has_filename.cc:
3374 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
3376 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
3378 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
3380 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
3382 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
3384 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
3385 * testsuite/experimental/filesystem/path/query/is_relative.cc:
3389 * include/bits/fs_path.h (path::operator/=, path::append): Construct
3390 temporary path before calling _M_append.
3391 (path::_M_append): Change parameter to path and implement C++17
3393 * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
3394 and more examples from the standard.
3395 * testsuite/27_io/filesystem/path/append/source.cc: New.
3396 * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
3397 * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
3399 * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
3400 __invoke to prevent ADL.
3402 2018-05-14 Jonathan Wakely <jwakely@redhat.com>
3405 * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
3406 exceptions from _M_terminate_output().
3407 * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
3408 exceptions from close().
3409 * testsuite/27_io/basic_filebuf/close/81256.cc: New.
3411 * include/bits/valarray_array.h (__valarray_get_memory): Remove.
3412 (__valarray_get_storage): Call operator new directly. Remove ignored
3413 top-level restrict qualifier and add malloc attribute instead.
3414 (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
3417 * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
3418 (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
3421 * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
3423 * testsuite/23_containers/set/modifiers/node_swap.cc: New.
3425 2018-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
3428 * testsuite/20_util/variant/80165.cc: New.
3430 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
3432 * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
3433 * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
3434 of C++11 containers with Debug Mode support.
3435 * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
3436 * doc/html/*: Regenerate.
3438 2018-05-10 Jason Merrill <jason@redhat.com>
3440 * include/bits/regex_compiler.h (_S_cache_size): Change from
3441 function to variable.
3443 2018-05-10 Edward Smith-Rowland <3dw4rd@verizon.net>
3445 PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
3446 * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
3447 argument defaulted to +1. Doxy comments on same.
3448 * testsuite/special_functions/02_assoc_legendre/
3449 check_value.cc: Regen.
3450 * testsuite/tr1/5_numerical_facilities/special_functions/
3451 02_assoc_legendre/check_value.cc: Regen.
3453 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
3456 * include/bits/c++config.h (__replacement_assert): Add linkage
3458 * include/bits/std_abs.h: Add comment to closing brace of block.
3459 * include/c_global/cstddef: Add linkage specification.
3460 * include/c_global/cstring: Likewise.
3461 * include/c_global/cwchar: Likewise.
3463 2018-05-09 François Dumont <fdumont@gcc.gnu.org>
3465 * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
3467 (_Safe_iterator<>::_S_constant()): ...that.
3468 * include/debug/safe_local_iterator.h
3469 (_Safe_local_iterator<>::_M_constant()): Rename in...
3470 (_Safe_local_iterator<>::_S_constant()): ...that.
3471 * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
3472 (_Iterator_state::__rbegin): New.
3473 (_Iterator_state::__rmiddle): New.
3474 (_Iterator_state::__rend): New.
3475 (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
3476 _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
3478 (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
3479 _Is_iterator)): Likewise.
3480 (_Parameter::_S_reverse_state(_Iterator_state)): New.
3481 (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
3482 _Is_iterator)): New.
3483 (_Parameter(std::reverse_iterator<> const&, const char*,
3484 _Is_iterator)): New.
3485 (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
3486 const char*, _Is_iterator)): New.
3487 (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
3489 (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
3490 _Is_iterator)): New.
3491 * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
3492 * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
3493 * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
3495 2018-05-09 Jonathan Wakely <jwakely@redhat.com>
3497 * include/bits/std_function.h (_Base_manager::_M_get_pointer):
3498 Use constexpr if in C++17 mode.
3499 (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
3500 Copy from const object.
3501 * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
3503 2018-05-08 François Dumont <fdumont@gcc.gnu.org>
3505 * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
3506 [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
3509 * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
3510 * include/debug/functions.h (__check_valid_range): Use latter.
3511 * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
3513 * include/debug/deque
3514 (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
3515 * include/debug/forward_list
3516 (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
3518 * include/debug/list
3519 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3520 * include/debug/list
3521 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3522 * include/debug/map.h
3523 (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3524 (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
3526 * include/debug/multimap.h
3527 (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3528 (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
3529 const _Alloc&)): Likewise.
3530 * include/debug/set.h
3531 (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3532 (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
3534 * include/debug/multiset.h
3535 (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3536 (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
3537 const _Alloc&)): Likewise.
3538 * include/debug/string
3539 (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
3541 * include/debug/unordered_map
3542 (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
3544 (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
3545 const _Alloc&)): Likewise.
3546 * include/debug/unordered_set
3547 (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
3549 (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
3550 const _Alloc&)): Likewise.
3551 * include/debug/vector
3552 (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
3554 * include/debug/formatter.h (_Error_formatter::_M_function): New.
3555 (_Error_formatter(const char*, unsigned int)): Adapt.
3556 (_Error_formatter::_M_at): Rename in...
3557 (_Error_formatter::_S_at): ...that and adapt.
3558 * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
3559 (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
3560 * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
3563 2018-05-08 Jonathan Wakely <jwakely@redhat.com>
3565 * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
3566 Use normal std::vector even in Debug Mode.
3569 * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
3570 to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
3571 * include/Makefile.in: Regenerate.
3572 * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
3573 within conditional block.
3575 2018-05-07 Jonathan Wakely <jwakely@redhat.com>
3577 * doc/xml/manual/using.xml (table.cmd_options): Document that the
3578 C++17 Filesystem implementation also needs -lstdc++fs.
3581 * include/bits/fs_path.h (operator/): Permit copy elision.
3582 * include/experimental/bits/fs_path.h (operator/): Likewise.
3584 2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net>
3586 Moar PR libstdc++/80506
3587 * include/bits/random.tcc (gamma_distribution::__generate_impl()):
3588 Fix magic number used in loop condition.
3590 2018-05-04 Jonathan Wakely <jwakely@redhat.com>
3592 PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
3593 * include/std/optional (_Optional_payload): Add noexcept to default
3594 constructor. Re-indent.
3595 (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
3596 constructor for copying disengaged payloads.
3597 (_Optional_payload<_Tp, true, false, true>): Likewise.
3598 (_Optional_payload<_Tp, true, true, false>): Likewise.
3599 (_Optional_payload<_Tp, true, false, false>): Likewise.
3600 * testsuite/20_util/optional/cons/85642.cc: New.
3601 * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
3603 2018-05-03 Jonathan Wakely <jwakely@redhat.com>
3606 * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
3607 inline definitions instead of using-declarations.
3608 [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
3609 * testsuite/tr1/5_numerical_facilities/special_functions/
3610 07_conf_hyperg/compile_cxx17.cc: New.
3611 * testsuite/tr1/5_numerical_facilities/special_functions/
3612 17_hyperg/compile_cxx17.cc: New.
3615 * include/std/variant (visit): Qualify std::get call.
3617 PR libstdc++/85632 use uintmax_t for arithmetic
3618 * src/filesystem/ops.cc (experimental::filesystem::space): Perform
3619 arithmetic in result type.
3620 * src/filesystem/std-ops.cc (filesystem::space): Likewise.
3621 * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
3622 is greater than free space.
3623 * testsuite/experimental/filesystem/operations/space.cc: New.
3625 * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
3626 * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
3628 * testsuite/20_util/remove_cvref/value.cc: New.
3629 * testsuite/20_util/remove_cvref/value_ext.cc: New.
3631 PR libstdc++/84087 LWG DR 2268 basic_string default arguments
3632 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
3633 (append(const basic_string&, size_type, size_type)
3634 (assign(const basic_string&, size_type, size_type)
3635 (insert(size_type, const basic_string&, size_type, size_type)
3636 (replace(size_type,size_type,const basic_string&,size_type,size_type)
3637 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
3638 Add default arguments (LWG 2268).
3639 [_GLIBCXX_USE_CXX11_ABI=0]
3640 (append(const basic_string&, size_type, size_type)
3641 (assign(const basic_string&, size_type, size_type)
3642 (insert(size_type, const basic_string&, size_type, size_type)
3643 (replace(size_type,size_type,const basic_string&,size_type,size_type)
3644 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
3646 * testsuite/21_strings/basic_string/dr2268.cc: New test.
3649 * include/std/thread (thread::__not_same): New SFINAE helper.
3650 (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
3651 first argument is not a std::thread. Add static assertion to check
3652 INVOKE expression is valid.
3653 (thread::thread(thread&), thread::thread(const thread&&)): Remove.
3654 (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
3655 __invoke_result for return types and remove exception specifications.
3656 * testsuite/30_threads/thread/cons/84535.cc: New.
3658 * include/std/future (__async_result_of): Use __invoke_result instead
3661 * include/std/any (any_cast): Use __remove_cvref_t.
3662 * include/std/tuple (__make_tuple): Likewise.
3663 * include/std/type_traits (__remove_cvref_t): Define.
3664 (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
3665 [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
3666 * include/std/variant (__erased_hash): Use __remove_cvref_t.
3668 2018-05-02 François Dumont <fdumont@gcc.gnu.org>
3670 * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
3671 ensure overloaded comma not used.
3672 * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
3673 * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
3674 * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
3675 * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
3676 * testsuite/23_containers/list/modifiers/assign/1.cc: New.
3677 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
3678 * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
3680 2018-05-02 Jonathan Wakely <jwakely@redhat.com>
3683 * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
3684 indices to unsigned.
3685 * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
3686 as failure. Refactor error handling.
3687 * testsuite/27_io/ios_base/storage/68197.cc: New.
3691 * include/bits/gslice_array.h (gslice_array): Define default
3692 constructor as deleted, as per C++11 standard.
3693 * include/bits/mask_array.h (mask_array): Likewise.
3694 * include/bits/slice_array.h (slice_array): Likewise.
3695 * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
3696 to namespace __detail.
3697 (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
3699 * include/bits/valarray_before.h (_ValArrayRef): New helper for type
3700 of data members in closure objects.
3701 (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
3702 (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
3704 (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
3705 (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
3706 (_SBase::_M_expr): Use _ValArrayRef for type of data members.
3707 * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
3708 (_ValFunClos, _RefFunClos): Move to namespace __detail and add
3709 using-declarations to namespace std.
3710 * testsuite/26_numerics/valarray/83860.cc: New.
3712 * testsuite/backward/strstream_move.cc: Remove duplicate function
3716 * include/backward/strstream (strstreambuf): Define move constructor
3717 and move assignment operator.
3718 (istrstream, ostrstream, strstream): Likewise.
3719 * testsuite/backward/strstream_move.cc: New.
3721 2018-05-01 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
3724 * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
3725 * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
3726 * configure: Regenerate.
3727 * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
3728 based on ENABLE_FLOAT128.
3729 * include/Makefile.in: Regenerate.
3730 * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
3731 [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
3732 _GLIBCXX_USE_FLOAT128.
3734 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
3736 * configure: Regenerated.
3738 2018-04-19 Jakub Jelinek <jakub@redhat.com>
3740 * configure: Regenerated.
3742 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
3743 Jakub Jelinek <jakub@redhat.com>
3746 * src/c++11/Makefile.am: Don't generate debuginfo again for
3747 cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
3748 * src/c++11/Makefile.in: Regenerate.
3750 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
3753 * testsuite/30_threads/thread/cons/terminate.cc
3754 [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
3756 2018-04-18 David Malcolm <dmalcolm@redhat.com>
3759 * configure: Regenerate.
3761 2018-04-16 Jonathan Wakely <jwakely@redhat.com>
3763 * testsuite/experimental/filesystem/file_status/1.cc: Add
3764 -DUSE_FILESYSTEM_TS to dg-options.
3765 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3767 * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
3768 * testsuite/experimental/filesystem/iterators/
3769 recursive_directory_iterator.cc: Likewise.
3770 * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
3771 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
3772 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
3773 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
3774 * testsuite/experimental/filesystem/operations/create_directories.cc:
3776 * testsuite/experimental/filesystem/operations/create_directory.cc:
3778 * testsuite/experimental/filesystem/operations/create_symlink.cc:
3780 * testsuite/experimental/filesystem/operations/current_path.cc:
3782 * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
3783 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
3784 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
3785 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
3786 * testsuite/experimental/filesystem/operations/last_write_time.cc:
3788 * testsuite/experimental/filesystem/operations/permissions.cc:
3790 * testsuite/experimental/filesystem/operations/read_symlink.cc:
3792 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
3793 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
3794 * testsuite/experimental/filesystem/operations/status.cc: Likewise.
3795 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3797 * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
3798 * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
3799 * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
3800 * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
3801 * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
3802 * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
3803 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
3804 * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
3805 * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
3806 * testsuite/experimental/filesystem/path/construct/default.cc:
3808 * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
3809 * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
3810 * testsuite/experimental/filesystem/path/construct/string_view.cc:
3812 * testsuite/experimental/filesystem/path/decompose/extension.cc:
3814 * testsuite/experimental/filesystem/path/decompose/filename.cc:
3816 * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
3818 * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
3820 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
3822 * testsuite/experimental/filesystem/path/decompose/root_name.cc:
3824 * testsuite/experimental/filesystem/path/decompose/root_path.cc:
3826 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
3827 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
3829 * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
3830 * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
3831 * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
3833 * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
3835 * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
3837 * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
3839 * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
3840 * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
3841 * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
3843 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
3844 * testsuite/experimental/filesystem/path/query/has_extension.cc:
3846 * testsuite/experimental/filesystem/path/query/has_filename.cc:
3848 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
3850 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
3852 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
3854 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
3856 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
3858 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
3859 * testsuite/experimental/filesystem/path/query/is_relative.cc:
3862 2018-04-13 Jonathan Wakely <jwakely@redhat.com>
3864 * src/c++11/Makefile.am: Fix sed command.
3865 * src/c++11/Makefile.in: Regenerate.
3867 * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
3868 handle mangled names starting with double underscores on darwin.
3869 * src/c++11/Makefile.in: Regenerate.
3871 2018-04-12 Jonathan Wakely <jwakely@redhat.com>
3873 * src/c++11/Makefile.am: Fix comment.
3874 * src/c++11/Makefile.in: Regenerate.
3875 * src/c++11/cxx11-ios_failure.cc: Fix comment.
3876 * src/c++98/ios_failure.cc: Likewise.
3878 * src/c++11/ios.cc: Remove redundant macro definition.
3880 2018-04-11 Jonathan Wakely <jwakely@redhat.com>
3882 * doc/xml/manual/abi.xml: Document header locations in recent
3884 * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
3885 * doc/xml/manual/spine.xml: Update copyright years.
3886 * doc/xml/manual/strings.xml: Adjust tolower example to avoid
3887 undefined behaviour.
3888 * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
3889 * doc/html/*: Regenerate.
3891 2018-04-10 Jonathan Wakely <jwakely@redhat.com>
3893 * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
3894 * doc/xml/manual/backwards_compatibility.xml: Likewise.
3895 * doc/xml/manual/containers.xml: Likewise.
3896 * doc/xml/manual/debug_mode.xml: Likewise.
3897 * doc/xml/manual/extensions.xml: Likewise.
3898 * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
3899 * doc/xml/manual/using.xml: Likewise.
3900 * doc/xml/manual/utilities.xml: Likewise.
3903 * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
3904 cxx11-ios_failure.cc to rewrite type info for __ios_failure.
3905 * src/c++11/Makefile.in: Regenerate.
3906 * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
3908 [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
3909 * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
3910 * src/c++98/ios_failure.cc (__construct_ios_failure)
3911 (__destroy_ios_failure, is_ios_failure_handler): New functions.
3912 [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
3913 * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
3914 * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
3915 handler types, to always catch std::ios_base::failure.
3916 * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
3917 * testsuite/27_io/basic_istream/extractors_arithmetic/char/
3918 exceptions_failbit.cc: Likewise.
3919 * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
3920 exceptions_failbit.cc: Likewise.
3921 * testsuite/27_io/basic_istream/extractors_other/char/
3922 exceptions_null.cc: Likewise.
3923 * testsuite/27_io/basic_istream/extractors_other/wchar_t/
3924 exceptions_null.cc: Likewise.
3925 * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
3926 * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
3927 * testsuite/27_io/basic_ostream/inserters_other/char/
3928 exceptions_null.cc: Likewise.
3929 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
3930 exceptions_null.cc: Likewise.
3931 * testsuite/27_io/ios_base/storage/2.cc: Likewise.
3933 2018-04-05 Jonathan Wakely <jwakely@redhat.com>
3935 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
3936 __get calls to avoid ADL and avoid ambiguity due to Clang bug.
3938 2018-04-03 Jonathan Wakely <jwakely@redhat.com>
3941 * include/std/variant (_Move_assign_base::operator=): Fix incorrect
3943 * testsuite/20_util/variant/85183.cc: New.
3945 2018-03-26 Jonathan Wakely <jwakely@redhat.com>
3947 * include/std/variant (__get): Qualify calls to avoid ADL.
3948 (__select_index): Adjust whitespace.
3949 (variant): Add using-declaration to workaround Clang bug.
3951 2018-03-22 Jonathan Wakely <jwakely@redhat.com>
3954 * include/bits/stl_function.h (greater::__not_overloaded)
3955 (less::__not_overloaded, greater_equal::__not_overloaded)
3956 (less_equal::__not_overloaded): Fix ambiguous specializations.
3957 * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
3958 tests for type with overloaded operators.
3960 2018-03-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3963 * testsuite/experimental/memory_resource/resource_adaptor.cc:
3964 xfail execution on 32-bit Solaris/x86.
3966 2018-03-21 Jonathan Wakely <jwakely@redhat.com>
3968 * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
3969 VERIFY instead of assert.
3970 * testsuite/20_util/hash/84998.cc: New test.
3971 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
3972 copy of test adjusted for Debug Mode.
3973 * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
3976 2018-03-20 François Dumont <fdumont@gcc.gnu.org>
3979 * include/bits/stl_bvector.h: Fix std::hash friend declaration.
3980 * include/std/bitset: Likewise.
3981 * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
3983 * include/bits/stl_multimap.h (std::multimap<>): Likewise.
3984 * include/bits/stl_multiset.h (std::multiset<>): Likewise.
3985 * include/bits/stl_set.h (std::set<>): Likewise.
3986 * include/bits/unordered_map.h (std::unordered_map<>): Fix
3987 _Hash_merge_helper friend declaration.
3988 (std::unordered_multimap<>): Likewise.
3989 * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
3990 (std::unordered_multiset<>): Likewise.
3992 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
3994 * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
3995 trailing slash for domain level link.
3996 * doc/xml/faq.xml: Ditto.
3997 * doc/xml/manual/appendix_free.xml (software): Ditto.
3998 * doc/xml/manual/intro.xml: Ditto.
3999 * doc/xml/manual/spine.xml: Ditto.
4000 * doc/xml/spine.xml: Ditto.
4002 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
4004 * doc/xml/manual/documentation_hacking.xml: Adjust link to
4007 2018-03-17 Jonathan Wakely <jwakely@redhat.com>
4009 * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
4010 to compile as C++98.
4012 2018-03-14 Jonathan Wakely <jwakely@redhat.com>
4015 * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
4016 (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
4017 to ensure total order for pointers.
4018 (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
4019 Add operator() overloads for pointer arguments and make generic
4020 overloads dispatch to new _S_cmp functions when comparisons would
4021 use built-in operators for pointers.
4022 * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
4024 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
4028 * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
4029 * configure: Regenerate.
4030 * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
4031 (aligned_alloc): Add using-declaration.
4032 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
4034 2018-03-09 François Dumont <fdumont@gcc.gnu.org>
4036 * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
4037 Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
4040 2018-03-09 Jonathan Wakely <jwakely@redhat.com>
4043 * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
4044 Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
4046 src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
4047 src/filesystem/std-ops.cc (create_dir): Likewise.
4049 2018-03-08 François Dumont <fdumont@gcc.gnu.org>
4051 * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
4052 (StdListIteratorPrinter): Inherit from latter.
4053 (StdFwdListIteratorPrinter): New, inherit from latter.
4054 (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
4055 when iterator has no associated container.
4056 (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
4057 __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
4059 * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
4060 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
4062 2018-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
4065 * include/std/optional (_Optional_payload): Split into multiple
4066 specializations that can handle different cases of trivial or
4067 non-trivial assignment operators.
4068 * testsuite/20_util/optional/84601.cc: New.
4069 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
4071 2018-03-02 Jonathan Wakely <jwakely@redhat.com>
4074 * include/bits/parse_numbers.h (_Number_help): Add partial
4075 specialization to handle digit separators. Adjust partial
4076 specialization for recursion temrination to require _Pow == 1ULL.
4077 * testsuite/20_util/duration/literals/84671.cc: New
4079 2018-02-27 Ville Voutilainen <ville.voutilainen@gmail.com>
4081 Implement the missing bits of LWG 2769
4082 * include/std/any (any_cast(const any&)): Add static_assert.
4083 (any_cast(any&)): Likewise.
4084 (any_cast(any&&)): Likewise, and remove the handling
4085 for copyable-but-not-movable type.
4086 * testsuite/20_util/any/misc/any_cast.cc: Adjust.
4087 * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
4090 2018-02-23 Jonathan Wakely <jwakely@redhat.com>
4093 * include/std/thread (thread::__make_invoker): Construct tuple
4094 directly instead of using make_tuple.
4095 * testsuite/30_threads/async/84532.cc: New.
4096 * testsuite/30_threads/thread/84532.cc: New.
4098 2018-02-20 François Dumont <fdumont@gcc.gnu.org>
4100 * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
4101 (template<> __aligned_buffer): Define as __aligned_membuf alias.
4103 2018-02-19 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
4106 * configure: Regenerate.
4108 2018-02-15 Jonathan Wakely <jwakely@redhat.com>
4111 * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
4112 * configure: Regenerate.
4113 * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
4115 * include/Makefile.in: Regenerate.
4117 2018-01-29 Jonathan Wakely <jwakely@redhat.com>
4120 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
4121 Add -ffloat-store to options for m68k and ia32.
4123 * doc/xml/faq.xml: Update copyright years.
4124 * doc/html/*: Regenerate.
4127 * include/std/any (any::__do_emplace): Only set _M_manager after
4128 constructing the contained object.
4129 * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
4130 * testsuite/20_util/any/modifiers/83658.cc: New test.
4132 2018-01-25 Jonathan Wakely <jwakely@redhat.com>
4135 * include/c_global/cstddef (__byte_operand): Define primary template.
4136 * testsuite/18_support/byte/81076.cc: New test.
4138 2018-01-19 Christophe Lyon <christophe.lyon@linaro.org>
4140 * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
4141 dg-options and dg-add-options order.
4142 * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
4143 * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
4145 * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
4146 * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
4148 * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
4150 * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
4151 * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
4153 * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
4155 * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
4157 * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
4159 * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
4161 * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
4163 * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
4165 * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
4167 * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
4168 * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
4169 * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
4170 * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
4171 * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
4172 * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
4173 * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
4174 * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
4175 * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
4177 * testsuite/special_functions/19_sph_bessel/check_nan.cc:
4179 * testsuite/special_functions/20_sph_legendre/check_nan.cc:
4181 * testsuite/special_functions/21_sph_neumann/check_nan.cc:
4184 2018-01-18 Uros Bizjak <ubizjak@gmail.com>
4186 * configure.ac (AC_CHECK_HEADERS): Add linux/types.h. Conditionally
4187 include linux/types.h when checking linux/random.h header.
4188 * config.h.in: Regenerate.
4190 * src/c++11/random.cc: Conditionally include linux/types.h.
4192 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
4194 * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
4196 2018-01-16 Jonathan Wakely <jwakely@redhat.com>
4199 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
4200 pattern with exact match for std::cerr.
4202 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
4205 * include/bits/random.h (chi_squared_distribution::param): Update
4206 gamma distribution parameter.
4207 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
4211 * include/std/type_traits (has_unique_object_representations_v): Add
4213 * testsuite/20_util/has_unique_object_representations/value.cc: Check
4216 2018-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
4218 Make optional conditionally
4219 trivially_{copy,move}_{constructible,assignable}
4220 * include/std/optional (_Optional_payload): Fix the comment in
4221 the class head and turn into a primary and one specialization.
4222 (_Optional_payload::_M_engaged): Strike the NSDMI.
4223 (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
4225 (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
4227 (_Optional_payload<_Tp, false>::_M_get): Likewise.
4228 (_Optional_payload<_Tp, false>::_M_reset): Likewise.
4229 (_Optional_base_impl): Likewise.
4230 (_Optional_base): Turn into a primary and three specializations.
4231 (optional(nullopt)): Change the base init.
4232 * testsuite/20_util/optional/assignment/8.cc: New.
4233 * testsuite/20_util/optional/cons/trivial.cc: Likewise.
4234 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
4236 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
4239 * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
4240 (get_template_arg_list): New.
4241 (StdVariantPrinter._template_args): Remove, use get_template_arg_list
4243 (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
4244 of strings and regular expressions.
4245 (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
4246 (FilteringTypePrinter): Add docstring. Match using startswith. Use
4247 strip_inline_namespaces instead of strip_versioned_namespace.
4248 (add_one_type_printer): Prepend namespace to match argument.
4249 (register_type_printers): Add type printers for char16_t and char32_t
4250 string types and for types using cxx11 ABI. Update calls to
4251 add_one_template_type_printer to provide default argument dicts.
4252 * testsuite/libstdc++-prettyprinters/80276.cc: New test.
4253 * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
4254 basic_string<unsigned char> and basic_string<signed char>.
4255 * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
4256 to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
4258 2018-01-14 Andreas Schwab <schwab@linux-m68k.org>
4261 * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
4263 2018-01-13 Tim Shen <timshen@google.com>
4266 * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
4267 * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
4268 * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
4270 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4273 * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
4274 Remove dg-xfail-run-if.
4276 2018-01-10 François Dumont <fdumont@gcc.gnu.org>
4278 * include/bits/forward_list.h
4279 (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
4280 (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
4281 (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
4282 (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
4283 (_Fwd_list_impl()): Add noexcept qualification.
4284 (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
4285 (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
4286 (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
4287 (_Fwd_list_base()): Default.
4288 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
4289 (_Fwd_list_base(_Fwd_list_base&&)): Default.
4290 (forward_list<>()): Default.
4291 (forward_list<>(forward_list&&)): Default.
4292 (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
4293 (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
4294 (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
4295 * include/bits/forward_list.tcc
4296 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
4297 _M_impl._M_head move assignment.
4298 (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
4299 * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
4301 2018-01-09 Jonathan Wakely <jwakely@redhat.com>
4304 * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
4305 (UniquePointerPrinter): Print correct template argument, not type of
4307 (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
4309 * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
4311 * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
4312 weak_ptr of array types.
4314 2018-01-09 François Dumont <fdumont@gcc.gnu.org>
4317 * include/bits/hashtable_policy.h
4318 (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
4320 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
4321 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
4322 Add false_type parameter.
4323 (_Insert_base::insert): Adapt.
4324 * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
4326 (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
4327 Add __n_elt parameter, defaulted to 1.
4328 (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
4329 policy _M_need_rehash.
4330 (_Hashtable::_M_merge_unique): Pass target number of elements to add to
4331 produce only 1 rehash if necessary.
4332 * testsuite/23_containers/unordered_map/insert/83709.cc: New.
4333 * testsuite/23_containers/unordered_set/insert/83709.cc: New.
4335 2018-01-09 Juraj Oršulić <juraj.orsulic@fer.hr>
4336 Jonathan Wakely <jwakely@redhat.com>
4338 PR libstdc++/59253 (partial)
4339 * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
4340 type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
4341 (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
4343 * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
4344 of unique_ptr printer.
4345 * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
4346 output of shared_ptr printer.
4348 2018-01-05 Jonathan Wakely <jwakely@redhat.com>
4351 * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
4352 unnecessary symlink_status call.
4353 (remove_all(const path&, error_code&)): Use filesystem::remove.
4354 * src/filesystem/std-ops.cc: Likewise.
4357 * src/filesystem/std-ops.cc (do_copy_file): Use non-null offset with
4361 * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
4362 report an error for ENOENT.
4363 (remove_all(const path&)): Fix type of result variable.
4364 (remove_all(const path&, error_code&)): Use non-throwing increment
4365 for directory iterator. Call POSIX remove directly to avoid redundant
4366 calls to symlink_status. Do not report errors for ENOENT.
4367 * src/filesystem/std-ops.cc: Likewise.
4368 * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
4370 * testsuite/experimental/filesystem/operations/remove_all.cc:
4373 2018-01-04 Jonathan Wakely <jwakely@redhat.com>
4376 * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
4377 redundant call to ec.clear().
4378 (remove_all(const path&, error_code&))): Do not return an error for
4380 * src/filesystem/std-ops.cc: Likewise.
4381 * testsuite/27_io/filesystem/operations/remove.cc: New test.
4382 * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
4383 results for non-existent paths.
4384 * testsuite/experimental/filesystem/operations/remove.cc: New test.
4385 * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
4386 expected results for non-existent paths.
4388 * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
4389 check status_known once.
4390 * include/experimental/bits/fs_ops.h: Likewise.
4393 * include/std/functional (__is_byte_like): New trait.
4394 (__is_std_equal_to): Remove.
4395 (__boyer_moore_base_t): Use __is_byte_like instead of
4397 * include/experimental/functional (__is_std_equal_to): Remove.
4398 (__boyer_moore_base_t): Use __is_byte_like instead of
4400 * testsuite/20_util/function_objects/83607.cc: New test.
4402 2018-01-03 Ville Voutilainen <ville.voutilainen@gmail.com>
4404 Protect optional's deduction guide with the feature macro
4405 * include/std/optional: Use the feature macro.
4407 2018-01-03 Jakub Jelinek <jakub@redhat.com>
4409 Update copyright years.
4411 Copyright (C) 2018 Free Software Foundation, Inc.
4413 Copying and distribution of this file, with or without modification,
4414 are permitted in any medium without royalty provided the copyright
4415 notice and this notice are preserved.