C++: simplify output from suggest_alternatives_for
[official-gcc.git] / libstdc++-v3 / ChangeLog
bloba3a40568fcdbb40e65189f0daed98088a1c80bec
1 2018-10-29  David Malcolm  <dmalcolm@redhat.com>
3         * testsuite/17_intro/using_namespace_std_exp_neg.cc: Remove
4         "expected namespace-name before" error.
5         * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Likewise.
7 2018-10-28  François Dumont  <fdumont@gcc.gnu.org>
9         * testsuite/23_containers/deque/48101_neg.cc: Remove dg-prune-output
10         'std' from regex pattern for versioned namespace compatibility.
11         * testsuite/23_containers/vector/48101_neg.cc: Likewise.
12         * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
14 2018-10-25  Jonathan Wakely  <jwakely@redhat.com>
16         PR libstdc++/87749
17         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
18         (basic_string::operator=(basic_string&&)): For short strings copy the
19         buffer inline. Only fall back to using assign(const basic_string&) to
20         do a deep copy when reallocation is needed.
21         * testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
22         New test.
23         * testsuite/21_strings/basic_string/modifiers/assign/char/
24         move_assign_optim.cc: New test.
25         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
26         New test.
27         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
28         move_assign_optim.cc: New test.
30 2018-10-25  Marc Glisse  <marc.glisse@inria.fr>
32         PR libstdc++/87106
33         * include/bits/alloc_traits.h (_S_construct, _S_destroy, construct,
34         destroy): Add noexcept specification.
35         * include/bits/allocator.h (construct, destroy): Likewise.
36         * include/ext/alloc_traits.h (construct, destroy): Likewise.
37         * include/ext/malloc_allocator.h (construct, destroy): Likewise.
38         * include/ext/new_allocator.h (construct, destroy): Likewise.
39         * include/bits/stl_uninitialized.h (__relocate_object_a, __relocate_a,
40         __relocate_a_1): New functions.
41         (__is_trivially_relocatable): New class.
42         * include/bits/stl_vector.h (__use_relocate): New static member.
43         * include/bits/vector.tcc (reserve, _M_realloc_insert,
44         _M_default_append): Use __relocate_a.
45         (reserve, _M_assign_aux, _M_realloc_insert, _M_fill_insert,
46         _M_default_append, _M_range_insert): Move _GLIBCXX_ASAN_ANNOTATE_REINIT
47         after _Destroy.
48         * testsuite/23_containers/vector/modifiers/push_back/49836.cc:
49         Replace CopyConsOnlyType with DelAnyAssign.
51 2018-10-24  François Dumont  <fdumont@gcc.gnu.org>
53         * include/debug/safe_unordered_container.h
54         (_Safe_unordered_container<>::_M_invalidate_locals): Take lambda
55         parameter type from local end variable.
56         (_Safe_unordered_container<>::_M_invalidate_all): Likewise.
57         * include/debug/unordered_map
58         (unordered_map<>::begin()): Use C++11 direct initialization.
59         (unordered_map<>::end()): Likewise.
60         (unordered_map<>::cbegin()): Likewise.
61         (unordered_map<>::cend()): Likewise.
62         (unordered_map<>::begin(size_type)): Likewise.
63         (unordered_map<>::end(size_type)): Likewise.
64         (unordered_map<>::cbegin(size_type)): Likewise.
65         (unordered_map<>::cend(size_type)): Likewise.
66         (unordered_map<>::emplace<>(_Args&&...)): Likewise.
67         (unordered_map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
68         (unordered_map<>::insert(const value_type&)): Likewise.
69         (unordered_map<>::insert(value_type&&)): Likewise.
70         (unordered_map<>::insert<>(_Pair&&)): Likewise.
71         (unordered_map<>::insert(const_iterator, const value_type&)): Likewise.
72         (unordered_map<>::insert(const_iterator, value_type&&)): Likewise.
73         (unordered_map<>::insert<>(const_iterator, _Pair&&)): Likewise.
74         (unordered_map<>::try_emplace<>(const key_type&, _Args&&...)): Likewise.
75         (unordered_map<>::try_emplace<>(key_type&&, _Args&&...)): Likewise.
76         (unordered_map<>::try_emplace<>(const_iterator, const key_type&,
77         _Args&&...)): Likewise.
78         (unordered_map<>::try_emplace<>(const_iterator, key_type&&,
79         _Args&&...)): Likewise.
80         (unordered_map<>::insert_or_assign<>(const key_type&, _Obj&&)): Likewise.
81         (unordered_map<>::insert_or_assign<>(key_type&&, _Obj&&)): Likewise.
82         (unordered_map<>::insert_or_assign<>(const_iterator, const key_type&,
83         _Obj&&)): Likewise.
84         (unordered_map<>::insert_or_assign<>(const_iterator, key_type&&,
85         _Obj&&)): Likewise.
86         (unordered_map<>::insert(note_type&&)): Likewise.
87         (unordered_map<>::find(const key_type&)): Likewise.
88         (unordered_map<>::equal_range(const key_type&)): Likewise.
89         (unordered_map<>::_M_extract): New.
90         (unordered_map<>::extract(const_iterator)): Use latter.
91         (unordered_map<>::extract(const key_type&)): Likewise.
92         (unordered_map<>::_M_erase): New.
93         (unordered_map<>::erase(const key_type&)): Use latter.
94         (unordered_map<>::erase(const_iterator)): Likewise.
95         (unordered_map<>::erase(iterator)): Likewise.
96         (unordered_map<>::_M_invalidate): New.
97         (unordered_map<>::erase(const_iterator, const_iterator)): Use latter.
98         (unordered_multimap<>::begin()): Use C++11 direct initialization.
99         (unordered_multimap<>::end()): Likewise.
100         (unordered_multimap<>::cbegin()): Likewise.
101         (unordered_multimap<>::cend()): Likewise.
102         (unordered_multimap<>::begin(size_type)): Likewise.
103         (unordered_multimap<>::end(size_type)): Likewise.
104         (unordered_multimap<>::cbegin(size_type)): Likewise.
105         (unordered_multimap<>::cend(size_type)): Likewise.
106         (unordered_multimap<>::emplace<>(_Args&&...)): Likewise.
107         (unordered_multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
108         (unordered_multimap<>::insert(const value_type&)): Likewise.
109         (unordered_multimap<>::insert(const_iterator, const value_type&)): Likewise.
110         (unordered_multimap<>::insert(const_iterator, value_type&&)): Likewise.
111         (unordered_multimap<>::insert<>(_Pair&&)): Likewise.
112         (unordered_multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
113         (unordered_multimap<>::insert(note_type&&)): Likewise.
114         (unordered_multimap<>::insert(const_iterator, note_type&&)): Likewise.
115         (unordered_multimap<>::find(const key_type&)): Likewise.
116         (unordered_multimap<>::equal_range(const key_type&)): Likewise.
117         (unordered_multimap<>::_M_extract): New.
118         (unordered_multimap<>::extract(const_iterator)): Use latter.
119         (unordered_multimap<>::extract(const key_type&)): Likewise.
120         (unordered_multimap<>::_M_erase): New.
121         (unordered_multimap<>::erase(const_iterator)): Likewise.
122         (unordered_multimap<>::erase(iterator)): Likewise.
123         (unordered_multimap<>::_M_invalidate): New.
124         (unordered_multimap<>::erase(const key_type&)): Use latter.
125         (unordered_multimap<>::erase(const_iterator, const_iterator)): Likewise.
126         * include/debug/unordered_set
127         (unordered_set<>::begin()): Use C++11 direct initialization.
128         (unordered_set<>::end()): Likewise.
129         (unordered_set<>::cbegin()): Likewise.
130         (unordered_set<>::cend()): Likewise.
131         (unordered_set<>::begin(size_type)): Likewise.
132         (unordered_set<>::end(size_type)): Likewise.
133         (unordered_set<>::cbegin(size_type)): Likewise.
134         (unordered_set<>::cend(size_type)): Likewise.
135         (unordered_set<>::emplace<>(_Args&&...)): Likewise.
136         (unordered_set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
137         (unordered_set<>::insert(const value_type&)): Likewise.
138         (unordered_set<>::insert(value_type&&)): Likewise.
139         (unordered_set<>::insert(const_iterator, const value_type&)): Likewise.
140         (unordered_set<>::insert(const_iterator, value_type&&)): Likewise.
141         (unordered_set<>::insert(note_type&&)): Likewise.
142         (unordered_set<>::insert(const_iterator, note_type&&)): Likewise.
143         (unordered_set<>::find(const key_type&)): Likewise.
144         (unordered_set<>::equal_range(const key_type&)): Likewise.
145         (unordered_set<>::_M_extract): New.
146         (unordered_set<>::extract(const_iterator)): Use latter.
147         (unordered_set<>::extract(const key_type&)): Likewise.
148         (unordered_set<>::_M_erase): New.
149         (unordered_set<>::erase(const key_type&)): Use latter.
150         (unordered_set<>::erase(const_iterator)): Likewise.
151         (unordered_set<>::erase(iterator)): Likewise.
152         (unordered_set<>::_M_invalidate): New.
153         (unordered_set<>::erase(const_iterator, const_iterator)): Use latter.
154         (unordered_multiset<>::begin()): Use C++11 direct initialization.
155         (unordered_multiset<>::end()): Likewise.
156         (unordered_multiset<>::cbegin()): Likewise.
157         (unordered_multiset<>::cend()): Likewise.
158         (unordered_multiset<>::begin(size_type)): Likewise.
159         (unordered_multiset<>::end(size_type)): Likewise.
160         (unordered_multiset<>::cbegin(size_type)): Likewise.
161         (unordered_multiset<>::cend(size_type)): Likewise.
162         (unordered_multiset<>::emplace<>(_Args&&...)): Likewise.
163         (unordered_multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
164         (unordered_multiset<>::insert(const value_type&)): Likewise.
165         (unordered_multiset<>::insert(const_iterator, const value_type&)): Likewise.
166         (unordered_multiset<>::insert(value_type&&)): Likewise.
167         (unordered_multiset<>::insert(const_iterator, value_type&&)): Likewise.
168         (unordered_multiset<>::insert(node_type&&)): Likewise.
169         (unordered_multiset<>::insert(const_iterator, node_type&&)): Likewise.
170         (unordered_multiset<>::find(const key_type&)): Likewise.
171         (unordered_multiset<>::equal_range(const key_type&)): Likewise.
172         (unordered_multiset<>::_M_extract): New.
173         (unordered_multiset<>::extract(const_iterator)): Use latter.
174         (unordered_multiset<>::extract(const key_type&)): Likewise.
175         (unordered_multiset<>::_M_erase): New.
176         (unordered_multiset<>::erase(const_iterator)): Likewise.
177         (unordered_multiset<>::erase(iterator)): Likewise.
178         (unordered_multiset<>::_M_invalidate): New.
179         (unordered_multiset<>::erase(const key_type&)): Use latter.
180         (unordered_multiset<>::erase(const_iterator, const_iterator)): Likewise.
182         * include/c_global/cstddef: Add versioned namespace.
184 2018-10-23  Jonathan Wakely  <jwakely@redhat.com>
186         PR libstdc++/87704
187         * include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
188         not delegate to default constructor.
189         (unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
190         * testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.
192 2018-10-20  François Dumont  <fdumont@gcc.gnu.org>
194         * testsuite/util/testsuite_containers.h
195         (forward_members_unordered<>::forward_members_unordered
196         (const value_type&)): Add local_iterator pre and post increment checks.
197         * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 new symbol.
199 2018-10-19  Jonathan Wakely  <jwakely@redhat.com>
201         * testsuite/23_containers/array/requirements/explicit_instantiation/
202         3.cc: Skip test when compiled with a -std=c++NN strict mode.
203         * testsuite/23_containers/deque/requirements/explicit_instantiation/
204         3.cc: Likewise.
205         * testsuite/23_containers/forward_list/requirements/
206         explicit_instantiation/3.cc: Likewise.
207         * testsuite/23_containers/list/requirements/explicit_instantiation/
208         3.cc: Likewise.
209         * testsuite/23_containers/map/requirements/explicit_instantiation/
210         3.cc: Likewise.
211         * testsuite/23_containers/multimap/requirements/explicit_instantiation/
212         3.cc: Likewise.
213         * testsuite/23_containers/multiset/requirements/explicit_instantiation/
214         3.cc: Likewise.
215         * testsuite/23_containers/set/requirements/explicit_instantiation/
216         3.cc: Likewise.
217         * testsuite/23_containers/unordered_map/requirements/
218         explicit_instantiation/3.cc: Likewise.
219         * testsuite/23_containers/unordered_multimap/requirements/
220         explicit_instantiation/3.cc: Likewise.
221         * testsuite/23_containers/unordered_multiset/requirements/
222         explicit_instantiation/3.cc: Likewise.
223         * testsuite/23_containers/unordered_set/requirements/
224         explicit_instantiation/3.cc: Likewise.
225         * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
226         3.cc: Likewise.
227         * testsuite/23_containers/vector/requirements/explicit_instantiation/
228         3.cc: Likewise.
230         * testsuite/23_containers/deque/48101_neg.cc: Prune additional errors
231         printed when __STRICT_ANSI__ is defined.
232         * testsuite/23_containers/forward_list/48101_neg.cc: Likewise.
233         * testsuite/23_containers/list/48101_neg.cc: Likewise.
234         * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
235         * testsuite/23_containers/set/48101_neg.cc: Likewise.
236         * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
237         * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
238         * testsuite/23_containers/vector/48101_neg.cc: Likewise.
240         * testsuite/23_containers/forward_list/requirements/
241         explicit_instantiation/5.cc [__STRICT_ANSI__]: Don't test non-standard
242         extension.
243         * testsuite/23_containers/list/requirements/explicit_instantiation/
244         5.cc [__STRICT_ANSI__]: Likewise.
245         * testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
246         [__STRICT_ANSI__]: Likewise.
247         * testsuite/23_containers/multimap/requirements/explicit_instantiation/
248         5.cc [__STRICT_ANSI__]: Likewise.
249         * testsuite/23_containers/multiset/requirements/explicit_instantiation/
250         5.cc [__STRICT_ANSI__]: Likewise.
251         * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
252         [__STRICT_ANSI__]: Likewise.
253         * testsuite/23_containers/unordered_map/requirements/debug_container.cc
254         [__STRICT_ANSI__]: Likewise.
255         * testsuite/23_containers/unordered_map/requirements/
256         explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
257         * testsuite/23_containers/unordered_multimap/requirements/
258         explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
259         * testsuite/23_containers/unordered_multiset/requirements/
260         explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
261         * testsuite/23_containers/unordered_set/requirements/
262         explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
264         * testsuite/20_util/scoped_allocator/1.cc: Use allocator with correct
265         value type for the container.
266         * testsuite/23_containers/forward_list/cons/14.cc: Likewise.
267         * testsuite/23_containers/map/56613.cc: Likewise.
268         * testsuite/23_containers/unordered_map/55043.cc: Likewise.
269         * testsuite/23_containers/unordered_map/allocator/copy.cc: Likewise.
270         * testsuite/23_containers/unordered_map/allocator/copy_assign.cc:
271         Likewise.
272         * testsuite/23_containers/unordered_map/allocator/minimal.cc:
273         Likewise.
274         * testsuite/23_containers/unordered_map/allocator/move.cc: Likewise.
275         * testsuite/23_containers/unordered_map/allocator/move_assign.cc:
276         Likewise.
277         * testsuite/23_containers/unordered_map/allocator/noexcept.cc:
278         Likewise.
279         * testsuite/23_containers/unordered_map/cons/81891.cc: Likewise.
280         * testsuite/23_containers/unordered_map/requirements/exception/
281         basic.cc: Likewise.
282         * testsuite/23_containers/unordered_map/requirements/exception/
283         generation_prohibited.cc: Likewise.
284         * testsuite/23_containers/unordered_map/requirements/exception/
285         propagation_consistent.cc: Likewise.
286         * testsuite/23_containers/unordered_multimap/55043.cc: Likewise.
287         * testsuite/23_containers/unordered_multimap/allocator/copy.cc:
288         Likewise.
289         * testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc:
290         Likewise.
291         * testsuite/23_containers/unordered_multimap/allocator/minimal.cc:
292         Likewise.
293         * testsuite/23_containers/unordered_multimap/allocator/move.cc:
294         Likewise.
295         * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc:
296         Likewise.
297         * testsuite/23_containers/unordered_multimap/allocator/noexcept.cc:
298         Likewise.
299         * testsuite/23_containers/unordered_multimap/requirements/exception/
300         basic.cc: Likewise.
301         * testsuite/23_containers/unordered_multimap/requirements/exception/
302         generation_prohibited.cc: Likewise.
303         * testsuite/23_containers/unordered_multimap/requirements/exception/
304         propagation_consistent.cc: Likewise.
305         * testsuite/23_containers/unordered_multimap/requirements/
306         explicit_instantiation/5.cc: Likewise.
307         * testsuite/ext/malloc_allocator/sanity.cc: Likewise.
309         * ext/special_functions/airy_ai/check_nan.cc: Skip test for
310         non-standard extension when a strict -std=c++NN dialect is used.
311         * ext/special_functions/airy_ai/check_value.cc: Likewise.
312         * ext/special_functions/airy_ai/compile.cc: Likewise.
313         * ext/special_functions/airy_bi/check_nan.cc: Likewise.
314         * ext/special_functions/airy_bi/check_value.cc: Likewise.
315         * ext/special_functions/airy_bi/compile.cc: Likewise.
316         * ext/special_functions/conf_hyperg/check_nan.cc: Likewise.
317         * ext/special_functions/conf_hyperg/check_value.cc: Likewise.
318         * ext/special_functions/conf_hyperg/compile.cc: Likewise.
319         * ext/special_functions/hyperg/check_nan.cc: Likewise.
320         * ext/special_functions/hyperg/check_value.cc: Likewise.
321         * ext/special_functions/hyperg/compile.cc: Likewise.
323         * testsuite/23_containers/list/requirements/explicit_instantiation/
324         5_c++0x.cc: Remove redundant test that is functionally identical to
325         the 5.cc test.
326         * testsuite/23_containers/map/requirements/explicit_instantiation/
327         5_c++0x.cc: Likewise.
328         * testsuite/23_containers/multimap/requirements/explicit_instantiation/
329         5_c++0x.cc: Likewise.
330         * testsuite/23_containers/multiset/requirements/explicit_instantiation/
331         5_c++0x.cc: Likewise.
332         * testsuite/23_containers/set/requirements/explicit_instantiation/
333         5_c++0x.cc: Likewise.
335         * include/bits/regex_executor.tcc (_Backref_matcher::_M_apply): Use
336         _GLIBCXX_STD_A to refer to normal mode algorithms.
337         * testsuite/28_regex/headers/regex/parallel_mode.cc: New test.
338         * testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Remove empty
339         whitespace.
341         * include/debug/map.h (map::erase(iterator)): Add abi-tag so that
342         C++11 version mangles differently from incompatible C++98 version.
343         * include/debug/multimap.h (multimap::erase(iterator)): Likewise.
344         * include/debug/multiset.h (multiset::erase(iterator))
345         (multiset::erase(const_iterator, const_iterator)): Likewise.
346         * include/debug/set.h (set::erase(iterator))
347         (multiset::erase(const_iterator, const_iterator)): Likewise.
349 2018-10-18  Jonathan Wakely  <jwakely@redhat.com>
351         * testsuite/20_util/duration/cons/2.cc: Add -ffloat-store to fix
352         failure when compiled without optimisation.
353         * testsuite/ext/profile/mutex_extensions_neg.cc: Prune additional
354         errors caused by C++17 std::pmr alias templates.
356         PR libstdc++/87642
357         * config/locale/gnu/monetary_members.cc
358         (moneypunct<char, true>::_M_initialize_moneypunct): Use
359         __narrow_multibyte_chars to convert multibyte thousands separators
360         to a single char.
361         * config/locale/gnu/numeric_members.cc
362         (numpunct<char>::_M_initialize_numpunct): Likewise.
363         (__narrow_multibyte_chars): New function.
365         PR libstdc++/87641
366         * include/bits/valarray_array.h (__valarray_sum): Use first element
367         to initialize accumulator instead of value-initializing it.
368         (__valarray_product<_Tp>): Move to ...
369         * src/c++98/valarray.cc (__valarray_product<_Tp>): Here. Use first
370         element to initialize accumulator.
371         (__valarray_product(const valarray<size_t>&)): Remove const_cast made
372         unnecessary by LWG 389.
373         * testsuite/26_numerics/valarray/87641.cc: New test.
375 2018-10-18  François Dumont  <fdumont@gcc.gnu.org>
377         Partial revert.
378         2018-10-08  François Dumont  <fdumont@gcc.gnu.org>
380         * include/debug/list (list<>::cbegin()): Use C++11 direct
381         initialization.
382         (list<>::cend()): Likewise.
383         (list<>::erase(const_iterator, const_iterator)): Ensure consistent
384         iterator comparisons.
385         (list<>::splice(const_iterator, list&&, const_iterator,
386         const_iterator)): Likewise.
388         Partial revert.
389         2018-10-15  François Dumont  <fdumont@gcc.gnu.org>
391         * include/debug/vector (vector<>::cbegin()): Use C++11 direct
392         initialization.
393         (vector<>::cend()): Likewise.
394         (vector<>::insert(const_iterator, const _Tp&)): Use consistent
395         iterator comparison.
396         (vector<>::erase(const_iterator)): Likewise.
397         (vector<>::erase(const_iterator, const_iterator)): Likewise.
399 2018-10-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
401         PR libstdc++/87619
402         * include/std/variant (__select_index): Fix an off-by-one.
403         * testsuite/20_util/variant/87619.cc: New.
405 2018-10-16  Jonathan Wakely  <jwakely@redhat.com>
407         * include/bits/random.h (random_device) [!_GLIBCXX_USE_DEV_RANDOM]:
408         Fix default constructor to call correct function.
410         * testsuite/experimental/net/internet/address/v4/creation.cc: Do not
411         declare ip in global namespace, to avoid collision with struct ip
412         defined in <netinet/ip.h>.
414         * include/experimental/bits/net.h: Move versioned namespace macros
415         to correct location.
416         * include/experimental/buffer: Likewise.
417         * include/experimental/executor: Likewise.
418         * include/experimental/internet: Likewise.
419         * include/experimental/io_context: Likewise.
420         * include/experimental/netfwd: Likewise.
421         * include/experimental/socket: Likewise.
422         * include/experimental/timer: Likewise.
424         * config.h.in: Regenerate.
425         * configure: Regenerate.
426         * configure.ac: Check for headers used by Networking TS.
427         * include/experimental/executor: Include <condition_variable>
428         instead of <mutex>.
429         * include/experimental/internet: Use autoconf macros for available
430         headers.  Include <sys/socket.h> for.  Remove <cstring> and use
431         __builtin_memcpy and __builtin_strchr.
432         (resolver_errc) [!_GLIBCXX_HAVE_NETDB_H]: Do not define.
433         (address_v4::to_string, address_v6::to_string)
434         [!_GLIBCXX_HAVE_ARPA_INET_H]: Likewise.
435         (basic_resolver_results) [!_GLIBCXX_HAVE_NETDB_H]: Make private
436         constructors report errors.
437         [!_GLIBCXX_HAVE_NETINET_TCP_H] (tcp::no_delay): Do not define.
438         * include/experimental/io_context: Likewise.
439         * include/experimental/socket: Likewise.
440         [!_GLIBCXX_HAVE_SYS_SOCKET_H, !_GLIBCXX_HAVE_POLL_H] (socket_base): Do
441         not define nested types when relevant header not available.
442         (__socket_impl::native_non_blocking) [!_GLIBCXX_HAVE_FCNTL_H]: Report
443         an error.
444         (__basic_socket_impl::open, __basic_socket_impl::local_endpoint)
445         (__basic_socket_impl::bind) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
446         (__basic_socket_impl::io_control) [!_GLIBCXX_HAVE_SYS_IOCTL_H]:
447         Likewise.
448         (basic_socket::at_mark, basic_socket::shutdown)
449         (basic_socket::remote_endpoint, basic_socket::connect)
450         (basic_socket::async_connect) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
451         (basic_socket::available) [_GLIBCXX_HAVE_SYS_IOCTL_H]: Check macro
452         for <sys/ioctl.h> availability.
453         (basic_socket::wait) [!_GLIBCXX_HAVE_POLL_H]: Likewise.
454         (basic_datagram_socket::receive, basic_datagram_socket::async_receive)
455         (basic_datagram_socket::receive_from)
456         (basic_datagram_socket::async_receive_from)
457         (basic_datagram_socket::send, basic_datagram_socket::async_send)
458         (basic_datagram_socket::send_to, basic_datagram_socket::async_send_to)
459         [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
460         (basic_stream_socket::receive, basic_stream_socket::async_receive)
461         (basic_stream_socket::send, basic_stream_socket::async_send)
462         [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
463         (basic_socket_acceptor::listen, basic_socket_acceptor::accept)
464         (basic_socket_acceptor::async_accept) [!_GLIBCXX_HAVE_SYS_SOCKET_H]:
465         Likewise.
466         (basic_socket_acceptor::wait) [!_GLIBCXX_HAVE_POLL_H]: Likewise.
468         * testsuite/experimental/net/headers.cc: Remove dg-options.
469         * testsuite/experimental/net/buffer/arithmetic.cc: Replace dg-options
470         with dg-do using effective target.
471         * testsuite/experimental/net/buffer/const.cc: Likewise.
472         * testsuite/experimental/net/buffer/creation.cc: Likewise.
473         * testsuite/experimental/net/buffer/mutable.cc: Likewise.
474         * testsuite/experimental/net/buffer/size.cc: Likewise.
475         * testsuite/experimental/net/buffer/traits.cc: Likewise.
476         * testsuite/experimental/net/execution_context/use_service.cc:
477         Likewise.
478         * testsuite/experimental/net/internet/address/v4/comparisons.cc:
479         Likewise.
480         * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
481         * testsuite/experimental/net/internet/address/v4/creation.cc:
482         Likewise.
483         * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
484         * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
485         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
486         Likewise.
487         * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
488         Likewise.
489         * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
490         * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
491         * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
493         * include/experimental/socket (basic_socket::at_mark): Add missing
494         return.
496         * acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Replace with ...
497         (GLIBCXX_CHECK_DEV_RANDOM): New macro with more descriptive name.
498         Define _GLIBCXX_USE_DEV_RANDOM as well as _GLIBCXX_USE_RANDOM_TR1.
499         * config.h.in: Regenerate.
500         * configure: Regenerate.
501         * configure.ac: Use GLIBCXX_CHECK_DEV_RANDOM instead of
502         GLIBCXX_CHECK_RANDOM_TR1.
503         crossconfig.m4: Likewise.
504         * include/bits/random.h (random_device): Use _GLIBCXX_USE_DEV_RANDOM
505         instead of _GLIBCXX_USE_RANDOM_TR1.
506         * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
508 2018-10-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
510         * testsuite/lib/dg-options.exp (add_options_for_net_ts): New proc.
511         * testsuite/experimental/net/internet/address/v4/comparisons.cc:
512         Add dg-add-options net_ts.
513         * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
514         * testsuite/experimental/net/internet/address/v4/creation.cc: Likewise.
515         * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
516         * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
517         * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise.
518         * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise.
520 2018-10-16  Jonathan Wakely  <jwakely@redhat.com>
522         * testsuite/20_util/duration/literals/range_neg.cc: Adjust pruned
523         diagnostic to account for quotes around 'constexpr'.
524         * testsuite/23_containers/deque/capacity/max_size.cc: Define static
525         variable.
526         * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
528         PR libstdc++/87618
529         * config/abi/pre/gnu.ver: Fix typos in patterns for basic_stringbuf.
530         * testsuite/27_io/basic_stringbuf/cons/char/default.cc: Disable
531         optimisation to check constructor definition can be linked to.
532         * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: Likewise.
534 2018-10-15  Jonathan Wakely  <jwakely@redhat.com>
536         * testsuite/22_locale/numpunct/members/char/3.cc: Adjust test to
537         account for change to glibc it_IT localedata (glibc bz#10797).
539         PR libstdc++/87587
540         * src/c++11/cxx11-shim_facets.cc: Suppress -Wabi warnings.
542 2018-10-15  François Dumont  <fdumont@gcc.gnu.org>
544         * include/debug/vector (vector<>::cbegin()): Use C++11 direct
545         initialization.
546         (vector<>::cend()): Likewise.
547         (vector<>::emplace(const_iterator, _Args&&...)): Likewise and use
548         consistent iterator comparison.
549         (vector<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
550         (vector<>::insert(const_iterator, _InputIterator, _InputIterator)):
551         Likewise.
552         (vector<>::erase(const_iterator)): Likewise.
553         (vector<>::erase(const_iterator, const_iterator)): Likewise.
555 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
557         Initial commit of Networking TS implementation.
558         * include/Makefile.am: Add new headers.
559         * include/Makefile.in: Regenerate.
560         * include/experimental/bits/net.h: New header for common
561         implementation details of Networking TS.
562         * include/experimental/buffer: New header.
563         * include/experimental/executor: New header.
564         * include/experimental/internet: New header.
565         * include/experimental/io_context: New header.
566         * include/experimental/net: New header.
567         * include/experimental/netfwd: New header.
568         * include/experimental/socket: New header.
569         * include/experimental/timer: New header.
570         * testsuite/experimental/net/buffer/arithmetic.cc: New test.
571         * testsuite/experimental/net/buffer/const.cc: New test.
572         * testsuite/experimental/net/buffer/creation.cc: New test.
573         * testsuite/experimental/net/buffer/mutable.cc: New test.
574         * testsuite/experimental/net/buffer/size.cc: New test.
575         * testsuite/experimental/net/buffer/traits.cc: New test.
576         * testsuite/experimental/net/execution_context/use_service.cc: New
577         test.
578         * testsuite/experimental/net/headers.cc: New test.
579         * testsuite/experimental/net/internet/address/v4/comparisons.cc: New
580         test.
581         * testsuite/experimental/net/internet/address/v4/cons.cc: New test.
582         * testsuite/experimental/net/internet/address/v4/creation.cc: New
583         test.
584         * testsuite/experimental/net/internet/address/v4/members.cc: New
585         test.
586         * testsuite/experimental/net/internet/resolver/base.cc: New test.
587         * testsuite/experimental/net/internet/resolver/ops/lookup.cc: New
588         test.
589         * testsuite/experimental/net/internet/resolver/ops/reverse.cc: New
590         test.
591         * testsuite/experimental/net/timer/waitable/cons.cc: New test.
592         * testsuite/experimental/net/timer/waitable/dest.cc: New test.
593         * testsuite/experimental/net/timer/waitable/ops.cc: New test.
595         PR libstdc++/77691
596         * include/experimental/memory_resource (__resource_adaptor_imp): Do
597         not allocate sizes smaller than alignment when relying on guaranteed
598         alignment.
599         * testsuite/experimental/memory_resource/new_delete_resource.cc:
600         Adjust expected number of bytes allocated for alignof(max_align_t).
602 2018-10-11  François Dumont  <fdumont@gcc.gnu.org>
604         * include/debug/forward_list
605         (forward_list<>::before_begin()): Use C++11 direct initialization.
606         (forward_list<>::begin()): Likewise.
607         (forward_list<>::end()): Likewise.
608         (forward_list<>::cbefore_begin()): Likewise.
609         (forward_list<>::cbegin()): Likewise.
610         (forward_list<>::cend()): Likewise.
611         (forward_list<>::emplace_after<>(const_iterator, _Args&&...)): Likewise.
612         (forward_list<>::insert_after(const_iterator, const _Tp&)): Likewise.
613         (forward_list<>::insert_after(const_iterator, _Tp&&)): Likewise.
614         (forward_list<>::insert_after(const_iterator, size_type, const _Tp&)):
615         Likewise.
616         (forward_list<>::insert_after(const_iterator, initializer_list<>)):
617         Likewise.
618         (forward_list<>::erase_after(const_iterator)): Likewise.
619         (forward_list<>::erase_after(const_iterator, const_iterator)): Likewise
620         and ensure consistent iterator comparison.
622         * include/bits/forward_list.h
623         (_Fwd_list_iterator<>::operator==): Replace member function with inline
624         friend.
625         (_Fwd_list_iterator<>::operator!=): Likewise.
626         (_Fwd_list_const_iterator<>::operator==): Likewise.
627         (_Fwd_list_const_iterator<>::operator!=): Likewise.
628         (operator==(const _Fwd_list_iterator<>&,
629         const _Fwd_list_const_iterator<>&)): Remove.
630         (operator!=(const _Fwd_list_iterator<>&,
631         const _Fwd_list_const_iterator<>&)): Remove.
632         (forward_list<>::_Node): Take typedef from base type.
633         (forward_list<>::iterator): Likewise.
634         (forward_list<>::const_iterator): Likewise.
636 2018-10-11  Jonathan Wakely  <jwakely@redhat.com>
638         PR libstdc++/80538
639         * src/c++11/thread.cc (this_thread::__sleep_for)
640         [_GLIBCXX_HAVE_SLEEP]: Only call sleep for non-zero values.
641         Loop while sleep call is interrupted and until steady_clock
642         shows requested duration has elapsed.
643         (!_GLIBCXX_HAVE_USLEEP]: Use the _GLIBCXX_HAVE_SLEEP code path, but
644         avoiding the usleep call.
645         * testsuite/30_threads/this_thread/60421.cc: Test repeated
646         signal interruptions.
648         * include/bits/allocator.h
649         (operator==(const allocator<_Tp>&, const allocator<_Tp>))
650         (operator!=(const allocator<_Tp>&, const allocator<_Tp>)): Replace
651         with inline friends.
652         * include/ext/debug_allocator.h (operator==, operator!=): Replace
653         with inline friend functions that compare to rebound allocators.
654         * include/ext/malloc_allocator.h (operator==, operator!=): Likewise.
655         * include/ext/new_allocator.h (operator==, operator!=): Likewise.
656         * testsuite/ext/debug_allocator/eq.cc: New test.
657         * testsuite/ext/ext_pointer/alloc_eq.cc: New test.
658         * testsuite/ext/malloc_allocator/eq.cc: New test.
659         * testsuite/ext/new_allocator/eq.cc: New test.
661 2018-10-10  Jonathan Wakely  <jwakely@redhat.com>
663         PR libstdc++/87544
664         * include/bits/stl_vector.h (vector::_S_max_size): Limit size to
665         PTRDIFF_MAX / sizeof(value_type).
666         * include/ext/malloc_allocator.h (malloc_allocator::max_size):
667         Likewise.
668         * include/ext/new_allocator.h (new_allocator::max_size): Likewise.
669         * testsuite/23_containers/vector/allocator/minimal.cc: Adjust
670         expected value for max_size().
671         * testsuite/23_containers/vector/capacity/87544.cc: New test.
673 2018-10-09  François Dumont  <fdumont@gcc.gnu.org>
675         * include/bits/stl_list.h
676         (_List_operator<>::operator==): Replace member function with inline
677         friend.
678         (_List_operator<>::operator!=): Likewise.
679         (_List_const_operator<>::operator==): Likewise.
680         (_List_const_operator<>::operator!=): Likewise.
681         (operator==(const _List_iterator<>&, const _List_const_iterator<>&)):
682         Remove.
683         (operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
684         Remove.
686 2018-10-09  Jonathan Wakely  <jwakely@redhat.com>
688         * include/bits/stringfwd.h (string, wstring, u16string, u32string):
689         Define typedefs outside of __cxx11 inline namespace.
690         * python/libstdcxx/v6/printers.py (register_type_printers): Also
691         register printers for typedefs in new location.
693 2018-10-08  Jonathan Wakely  <jwakely@redhat.com>
695         PR libstdc++/87538
696         * testsuite/experimental/functional/87538.cc: New test.
698         PR libstdc++/87538
699         * include/std/functional (_Not_fn::operator()): Check value of
700         __is_nothrow_invocable as well.
701         * testsuite/20_util/function_objects/not_fn/87538.cc: New test.
703 2018-10-08  François Dumont  <fdumont@gcc.gnu.org>
705         * include/debug/list (list<>::cbegin()): Use C++11 direct
706         initialization.
707         (list<>::cend()): Likewise.
708         (list<>::emplace<>(const_iterator, _Args&&...)): Likewise.
709         (list<>::insert(const_iterator, initializer_list<>)): Likewise.
710         (list<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
711         (list<>::erase(const_iterator, const_iterator)): Ensure consistent
712         iterator comparisons.
713         (list<>::splice(const_iterator, list&&, const_iterator,
714         const_iterator)): Likewise.
716 2018-10-05  François Dumont  <fdumont@gcc.gnu.org>
718         * include/bits/stl_tree.h
719         (_Rb_tree_iterator<>::operator==): Make inline friend.
720         (_Rb_tree_iterator<>::operator!=): Likewise.
721         (_Rb_tree_const_iterator<>::operator==): Likewise.
722         (_Rb_tree_const_iterator<>::operator!=): Likewise.
723         (operator==(const _Rb_tree_iterator<>&,
724         const _Rb_tree_const_iterator&)): Remove.
725         (operator!=(const _Rb_tree_iterator<>&,
726         const _Rb_tree_const_iterator&)): Remove.
727         (operator==(const _Rb_tree<>&, const _Rb_tree<>&)): Make inline friend.
728         (operator<(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
729         (operator!=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise and
730         deprecate.
731         (operator>(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
732         (operator<=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
733         (operator>=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
734         * include/debug/map.h (map<>::erase(const_iterator, const_iterator)):
735         Compare __victim with _Base::cend().
736         * include/debug/multimap.h
737         (multimap<>::erase(const_iterator, const_iterator)): Likewise.
738         * include/debug/set.h (set<>::erase(const_iterator, const_iterator)):
739         Compare __victim with _Base::cend().
740         * include/debug/multiset.h
741         (multiset<>::erase(const_iterator, const_iterator)): Likewise.
743 2018-10-03  Jonathan Wakely  <jwakely@redhat.com>
745         PR libstdc++/59439
746         * src/c++98/locale.cc (locale::locale(const locale&)): Bypass
747         reference count updates for the classic locale.
748         (locale::~locale()): Likewise.
749         (locale::operator=(const locale&)): Likewise.
750         * src/c++98/locale_init.cc (locale::locale()): Likewise.
751         (locale::global(const locale&)): Likewise.
753 2018-10-03  François Dumont  <fdumont@gcc.gnu.org>
755         * include/debug/map.h
756         (map<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
757         (map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
758         (map<>::insert(value_type&&)): Likewise.
759         (map<>::insert<>(_Pair&&)): Likewise.
760         (map<>::insert<>(const_iterator, _Pair&&)): Likewise.
761         (map<>::try_emplace): Likewise.
762         (map<>::insert_or_assign): Likewise.
763         (map<>::insert(node_type&&)): Likewise.
764         (map<>::insert(const_iterator, node_type&&)): Likewise.
765         (map<>::erase(const_iterator)): Likewise.
766         (map<>::erase(const_iterator, const_iterator)): Likewise.
767         * include/debug/multimap.h
768         (multimap<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
769         (multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
770         (multimap<>::insert<>(_Pair&&)): Likewise.
771         (multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
772         (multimap<>::insert(node_type&&)): Likewise.
773         (multimap<>::insert(const_iterator, node_type&&)): Likewise.
774         (multimap<>::erase(const_iterator)): Likewise.
775         (multimap<>::erase(const_iterator, const_iterator)): Likewise.
776         * include/debug/set.h
777         (set<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
778         (set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
779         (set<>::insert(value_type&&)): Likewise.
780         (set<>::insert<>(const_iterator, value_type&&)): Likewise.
781         (set<>::insert(const_iterator, node_type&&)): Likewise.
782         (set<>::erase(const_iterator)): Likewise.
783         (set<>::erase(const_iterator, const_iterator)): Likewise.
784         * include/debug/multiset.h
785         (multiset<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
786         (multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
787         (multiset<>::insert<>(value_type&&)): Likewise.
788         (multiset<>::insert<>(const_iterator, value_type&&)): Likewise.
789         (multiset<>::insert(node_type&&)): Likewise.
790         (multiset<>::insert(const_iterator, node_type&&)): Likewise.
791         (multiset<>::erase(const_iterator)): Likewise.
792         (multiset<>::erase(const_iterator, const_iterator)): Likewise.
794 2018-10-02  Marc Glisse  <marc.glisse@inria.fr>
796         PR libstdc++/87258
797         * include/bits/stl_bvector.h (vector::begin(), vector::cbegin()):
798         Rebuild _M_start with an explicit 0 offset.
800 2018-10-02  Jonathan Wakely  <jwakely@redhat.com>
802         * include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
803         directly instead of get, as caller ensures correct index is used.
804         (holds_alternative, get, get_if): Remove redundant inline specifiers.
805         (_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.
807 2018-10-02  Joseph Myers  <joseph@codesourcery.com>
809         * testsuite/lib/libstdc++.exp (libstdc++_init): Use
810         -fno-show-column in default cxxflags.
812 2018-10-01  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
814         * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.
816 2018-10-01  Gerald Pfeifer  <gerald@pfeifer.com>
818         * doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
819         Custom Memory Allocation".
821 2018-10-01  Jonathan Wakely  <jwakely@redhat.com>
823         * doc/html/*: Regenerate.
825 2018-09-30  Gerald Pfeifer  <gerald@pfeifer.com>
827         * doc/xml/manual/messages.xml: Switch link to www.oracle.com
828         to https.
830 2018-09-30  Gerald Pfeifer  <gerald@pfeifer.com>
832         * doc/xml/manual/policy_data_structures_biblio.xml: Update
833         link to Microsoft Component Model Object Technologies.
835 2018-09-29  Gerald Pfeifer  <gerald@pfeifer.com>
837         * doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
838         site now uses https. Also omit the unnecessary trailing slash.
839         * doc/xml/gnu/gpl-3.0.xml: Ditto.
841 2018-09-28  François Dumont  <fdumont@gcc.gnu.org>
843         * include/debug/functions.h
844         (__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
845         const _InputIter&, __true_type)): Use empty() rather than begin() ==
846         end().
848 2018-09-25  Mike Crowe  <mac@mcrowe.com>
850         * include/std/condition_variable (condition_variable::wait_for): Use
851         steady clock in overload that uses a predicate.
853 2018-09-25  Jonathan Wakely  <jwakely@redhat.com>
855         PR libstdc++/87431
856         * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
857         Avoid runtime test when all alternatives are scalars and so cannot
858         throw during initialization.
860 2018-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
862         * doc/xml/manual/codecvt.xml: Move link to "UTF-8 and Unicode FAQ"
863         to https.
865 2018-09-24  Gerald Pfeifer  <gerald@pfeifer.com>
867         * doc/xml/manual/policy_data_structures_biblio.xml: Update link
868         to "Priority Queues and the STL".
870 2018-09-23  Gerald Pfeifer  <gerald@pfeifer.com>
872         * doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
873         https.
875 2018-09-21  François Dumont  <fdumont@gcc.gnu.org>
877         PR libstdc++/87135
878         * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
879         Use __builtin_floor to compute _M_next_resize.
880         * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt.
881         * testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc:
882         Adapt.
884 2018-09-21  Jonathan Wakely  <jwakely@redhat.com>
886         * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Remove.
887         * testsuite/26_numerics/headers/cmath/hypot.cc: Restore test for
888         long double unconditionally, but use lower tolerance when
889         sizeof(long double) == sizeof(double).
891 2018-09-20  Christophe Lyon  <christophe.lyon@linaro.org>
893         * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
894         on arm*.
896 2018-09-19  Jonathan Wakely  <jwakely@redhat.com>
898         * include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
899         Remove __glibcxx_assert statements and use map::find instead of
900         map::operator[].
902 2018-09-18  François Dumont  <fdumont@gcc.gnu.org>
904         PR libstdc++/87135
905         * src/c++11/hashtable_c++0x.cc:
906         (_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
907         requested size, but not necessarily greater.
908         (_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
909         strictly greater than next resize threshold.
910         * testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
911         to validate that there is no rehash as long as number of insertion is
912         lower or equal to the reserved number of elements.
914 2018-09-18  Jonathan Wakely  <jwakely@redhat.com>
916         * include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
917         checking invocable condition.
918         (unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
919         here, where types must be complete. Pass pointer to deleter as an
920         rvalue.
921         * testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
923 2018-09-13  Jonathan Wakely  <jwakely@redhat.com>
925         * include/std/variant (variant) [__clang__]: Limit workaround to
926         Clang 7 and older.
928 2018-09-11  Jonathan Wakely  <jwakely@redhat.com>
930         PR libstdc++/87278
931         * include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
932         remove_const.
933         * testsuite/20_util/shared_ptr/creation/87278.cc: New test.
935         Implement LWG 2905 changes to constrain unique_ptr constructors
936         * include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
937         check deleter type.
938         (unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
939         constructible constraint.
940         (unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
941         deleters of reference type and add move constructible constraint.
942         (unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
943         Disable for deleters of non-reference type. Define as deleted.
944         (unique_ptr<T[], D>): Likewise.
945         * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
946         directives with unstable line numbers with dg-prune-output.
947         * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
948         * testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
949         * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
950         Make deleter types invocable.
952 2018-09-05  Jonathan Wakely  <jwakely@redhat.com>
954         * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
956 2018-09-03  Jonathan Wakely  <jwakely@redhat.com>
958         PR libstdc++/78179
959         * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test
960         that runs the long double part of hypot.cc.
961         * testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double
962         tests unless TEST_HYPOT_LONG_DOUBLE is defined.
964         * include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
965         Return raw pointer not allocator's pointer type.
966         (vector::_Temporary_value::_M_val): Use _M_ptr.
968         PR libstdc++/87194
969         * include/bits/stl_map.h
970         (map::map(initializer_list<value_type>, const Compare&, const Alloc&))
971         (map::map(initializer_list<value_type>, const Alloc&))
972         (map::map(InputIterator, InputIterator, const Alloc&))
973         (map::map(InputIterator, InputIterator))
974         (map::map(InputIterator, InputIterator, const Compare&, const Alloc&))
975         (map::insert(InputIterator, InputIterator)):
976         Call _M_insert_range_unique instead of _M_insert_unique.
977         * include/bits/stl_multimap.h
978         (multimap::multimap(initializer_list<value_type>, const C&, const A&))
979         (multimap::multimap(initializer_list<value_type>, const A&))
980         (multimap::multimap(InputIterator, InputIterator, const A&))
981         (multimap::multimap(InputIterator, InputIterator))
982         (multimap::multimap(InputIterator, InputIterator, const C&, const A&))
983         (multimap::insert(InputIterator, InputIterator)): Call
984         _M_insert_range_equal instead of _M_insert_equal.
985         * include/bits/stl_multiset.h
986         (multiset::multiset(InputIterator, InputIterator))
987         (multiset::multiset(InputIterator, InputIterator, const C&, const A&))
988         (multiset::multiset(initializer_list<value_type>, const C&, const A&))
989         (multiset::multiset(initializer_list<value_type>, const A&))
990         (multiset::multiset(InputIterator, InputIterator, const A&))
991         (multiset::insert(InputIterator, InputIterator)): Call
992         _M_insert_range_equal instead of _M_insert_equal.
993         * include/bits/stl_set.h
994         (set::set(InputIterator, InputIterator))
995         (set::set(InputIterator, InputIterator, const Compare&, const Alloc&))
996         (set::set(initializer_list<value_type>, const Compare&, const Alloc&))
997         (set::set(initializer_list<value_type>, const Alloc&))
998         (set::set(InputIterator, InputIterator, const Alloc&))
999         (set::insert(InputIterator, InputIterator)):
1000         Call _M_insert_range_unique instead of _M_insert_unique.
1001         * include/bits/stl_tree.h
1002         [__cplusplus >= 201103L] (_Rb_tree::__same_value_type): New alias
1003         template for SFINAE constraints.
1004         [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_unique): Pair of
1005         constrained overloads that either insert or emplace, depending on
1006         iterator's value_type.
1007         [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_equal): Likewise.
1008         [__cplusplus < 201103L] (_Rb_tree::_M_insert_range_unique)
1009         (_Rb_tree::_M_insert_range_equal): New functions replacing range
1010         versions of _M_insert_unique and _M_insert_equal.
1011         (_Rb_tree::_M_insert_unique(_InputIterator, _InputIterator))
1012         (_Rb_tree::_M_insert_equal(_InputIterator, _InputIterator)): Remove.
1013         * testsuite/23_containers/map/modifiers/insert/87194.cc: New test.
1014         * testsuite/23_containers/multimap/modifiers/insert/87194.cc: New test.
1015         * testsuite/23_containers/multiset/modifiers/insert/87194.cc: New test.
1016         * testsuite/23_containers/set/modifiers/insert/87194.cc: New test.
1018         PR libstdc++/78595
1019         * include/bits/stl_map.h (map::insert(_Pair&&))
1020         (map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
1021         * include/bits/stl_multimap.h (multimap::insert(_Pair&&))
1022         (multimap::insert(const_iterator, _Pair&&)): Likewise.
1023         * include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
1024         (unordered_map::insert(const_iterator, _Pair&&))
1025         (unordered_multimap::insert(_Pair&&))
1026         (unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
1027         * testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
1028         * testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
1029         * testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
1030         * testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
1031         test.
1033 2018-09-02  François Dumont  <fdumont@gcc.gnu.org>
1035         * include/debug/safe_iterator.h
1036         (_Safe_iterator<_It, _Seq, _Cat>::_Self): New.
1037         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>::_Self):
1038         New.
1039         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1040         ::_OtherSelf): New.
1041         (_GLIBCXX_DEBUG_VERIFY_OPERANDS, _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS)
1042         (_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS)
1043         (_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS): Define macros.
1044         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1045         ::operator+(difference_type)): Use latters, inline as friend.
1046         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1047         ::operator-(difference_type)): Likewise.
1048         (operator==(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1049         Likewise.
1050         (operator!=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1051         Likewise.
1052         (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1053         (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1054         Likewise.
1055         (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1056         (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1057         Likewise.
1058         (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1059         (operator+(difference_type, const _Safe_iterator<>&)): Likewise.
1060         (operator-(const _Safe_iterator<>&, difference_type)): Likewise.
1061         * include/debug/safe_iterator.tcc
1062         (_Safe_iterator<>::_M_can_advance(difference_type)): Take parameter by
1063         copy.
1064         * include/debug/safe_local_iterator.h
1065         (_Safe_local_iterator<_It, _Seq>::_Self): New.
1066         (_Safe_local_iterator<_It, _Seq>::_OtherSelf): New.
1067         (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Define macro.
1068         (operator==(const _Safe_local_iterator<>&,
1069         const _Safe_local_iterator<>&)): Use latter, inline as friend.
1070         (operator!=(const _Safe_local_iterator<>&,
1071         const _Safe_local_iterator<>&)): Likewise.
1072         * testsuite/util/testsuite_containers.h: Include utility.
1073         (struct forward_members_unordered<_Tp, bool>): Remove 2nd template
1074         parameter.
1075         (forward_members_unordered<>::forward_members_unordered(value_type&)):
1076         Add using namespace std::rel_ops.
1077         Add iterator_concept_checks on local_iterator and const_local_iterator.
1078         Add asserts on comparison between const_local_iterator and
1079         local_iterator.
1080         (struct forward_members_unordered<_Tp, false>): Remove partial
1081         specialization.
1082         * testsuite/23_containers/forward_list/types/1.cc: New.
1083         * testsuite/23_containers/list/types/1.cc: New.
1085 2018-09-01  Gerald Pfeifer  <gerald@pfeifer.com>
1087         * doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
1088         references.
1090 2018-08-31  Sandra Loosemore  <sandra@codesourcery.com>
1092         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
1093         Add dg-require-fileio.
1094         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
1095         Likewise.
1096         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
1097         Likewise.
1098         * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
1099         Likewise.
1100         * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
1101         Likewise.
1102         * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
1103         Likewise.
1104         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
1105         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
1106         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
1107         * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
1108         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
1109         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc:
1110         Likewise.
1111         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
1112         Likewise.
1113         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
1114         Likewise.
1115         * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
1116         Likewise.
1117         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
1118         Likewise.
1119         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
1120         Likewise.
1121         * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
1122         Likewise.
1123         * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
1124         * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
1125         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: Likewise.
1126         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
1127         * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
1128         Likewise.
1129         * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
1130         Likewise.
1131         * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
1132         * testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
1133         * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
1134         * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
1135         * testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
1136         * testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
1137         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: Likewise.
1138         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: Likewise.
1139         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
1140         Likewise.
1141         * testsuite/27_io/objects/wchar_t/10.cc: Likewise.
1142         * testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
1143         * testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
1144         * testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
1145         * testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
1146         * testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
1147         * testsuite/experimental/string_view/inserters/wchar_t/2.cc:
1148         Likewise.
1149         * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
1151 2018-08-30  Sandra Loosemore  <sandra@codesourcery.com>
1153         * testsuite/experimental/propagate_const/observers/1.cc: Make
1154         dependence on -fdelete-null-pointer-checks explicit.
1156 2018-08-30  Jonathan Wakely  <jwakely@redhat.com>
1158         * include/bits/hashtable_policy.h (__clp2): Fix calculation for LLP64
1159         targets where sizeof(size_t) > sizeof(long). Avoid undefined shifts
1160         of the number of bits in the type.
1161         * include/std/bit (__ceil2): Avoid undefined shifts.
1162         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Test values with
1163         the most signifiant bit set.
1165         * config/abi/pre/gnu.ver: Add missing exports for mingw.
1167         * include/ext/pointer.h (_Pointer_adapter): Define operators for
1168         pointer arithmetic using long long offsets.
1169         * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
1170         long long values.
1172 2018-08-29  Jonathan Wakely  <jwakely@redhat.com>
1174         PR libstdc++/31413
1175         * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT
1176         string for alternative format.
1178 2018-08-28  Jonathan Wakely  <jwakely@redhat.com>
1180         PR libstdc++/87116
1181         * src/filesystem/std-path.cc (path::lexically_normal): When handling
1182         a dot-dot filename, preserve an empty final component in the iteration
1183         sequence.
1184         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
1185         root-directory.
1186         * testsuite/27_io/filesystem/path/generation/normal.cc: Add new tests
1187         for more than two adjacent dot-dot filenames.
1188         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Replace slashes with
1189         preferred-separator in expected normalized strings.
1191 2018-08-25  Iain Sandoe  <iain@sandoe.co.uk>
1193         PR libstdc++/70694
1194         * configure.host (OPT_LDFLAGS): Don't append
1195         -fvisibility-inlines-hidden for newer Darwin.
1197 2018-08-24  Marc Glisse  <marc.glisse@inria.fr>
1199         PR libstdc++/86822
1200         * libsupc++/new (operator new(size_t, nothrow_t), operator
1201         new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
1202         operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
1204 2018-08-24  Jonathan Wakely  <jwakely@redhat.com>
1206         * include/debug/deque (std::__debug::deque): Declare.
1207         * include/debug/forward_list (std::__debug::forward_list): Declare.
1208         * include/debug/list (std::__debug::list): Declare.
1209         * include/debug/map (std::__debug::map): Declare.
1210         * include/debug/set (std::__debug::set): Declare.
1211         * include/debug/unordered_map (std::__debug::unordered_map): Declare.
1212         * include/debug/unordered_set (std::__debug::unordered_set): Declare.
1213         * include/debug/vector (std::__debug::vector): Declare.
1214         * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
1215         * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
1216         test.
1217         * testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
1218         * testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
1219         * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
1220         * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
1221         * testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
1222         * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
1223         test.
1224         * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
1225         New test.
1226         * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
1227         New test.
1228         * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
1229         test.
1230         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
1231         Adjust dg-error lineno.
1232         * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
1233         test.
1235 2018-08-23  Jonathan Wakely  <jwakely@redhat.com>
1237         * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
1238         Only define when RTTI is enabled.
1240         * include/debug/vector (__niter_base): Define for C++98.
1242         * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
1243         Fix C++98 test to not use C++11 features.
1244         * testsuite/25_algorithms/fill_n/2.cc: Likewise.
1246         * scripts/check_compile: Fix comments.
1248         * include/debug/string (insert(__const_iterator, _InIter, _InIter)):
1249         [!_GLIBCXX_USE_CXX11_ABI]: Replace use of C++11-only cbegin() with
1250         begin(), for C++98 compatibility.
1252         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
1253         (basic_string::__const_iterator): Change access to protected.
1254         [!_GLIBCXX_USE_CXX11_ABI] (basic_string::__const_iterator): Define
1255         as typedef for iterator.
1256         * include/debug/string (__const_iterator): Use typedef from base.
1257         (insert(const_iterator, _CharT))
1258         (replace(const_iterator, const_iterator, const basic_string&))
1259         (replace(const_iterator, const_iterator, const _CharT*, size_type))
1260         (replace(const_iterator, const_iterator, const CharT*))
1261         (replace(const_iterator, const_iterator, size_type, _CharT))
1262         (replace(const_iterator, const_iterator, _InputIter, _InputIter))
1263         (replace(const_iterator, const_iterator, initializer_list<_CharT>)):
1264         Change const_iterator parameters to __const_iterator.
1265         (insert(iterator, size_type, _CharT)): Add C++98 overload.
1266         (insert(const_iterator, _InputIterator, _InputIterator)): Change
1267         const_iterator parameter to __const_iterator.
1268         [!_GLIBCXX_USE_CXX11_ABI]: Add workaround for incorrect return type
1269         of base's member function.
1270         (insert(const_iterator, size_type, _CharT)) [!_GLIBCXX_USE_CXX11_ABI]:
1271         Likewise.
1272         (insert(const_iterator, initializer_list<_CharT>))
1273         [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
1274         * testsuite/21_strings/basic_string/init-list.cc: Remove effective
1275         target directive.
1277         * testsuite/20_util/reference_wrapper/lwg2993.cc: Fix C++11 test to
1278         not use C++14 feature.
1279         * testsuite/23_containers/list/68222_neg.cc: Likewise.
1281         * testsuite/21_strings/basic_string/init-list.cc:
1282         Require cxx11-abi.
1283         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
1284         Likewise.
1285         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1286         Likewise.
1288         * testsuite/23_containers/deque/capacity/max_size.cc: Fix test for
1289         C++98 mode.
1290         * testsuite/23_containers/deque/modifiers/assign/1.cc: Likewise.
1291         * testsuite/23_containers/list/modifiers/assign/1.cc: Likewise.
1292         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: Likewise.
1293         * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
1294         * testsuite/23_containers/vector/modifiers/assign/1.cc: Likewise.
1296 2018-08-22  Jonathan Wakely  <jwakely@redhat.com>
1298         PR libstdc++/87061
1299         * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
1300         (experimental::pmr::match_results, experimental::pmr::cmatch)
1301         (experimental::pmr::smatch, experimental::pmr::wcmatch)
1302         (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
1303         because COW strings don't support C++11 allocator model.
1304         * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
1305         (experimental::pmr::basic_string, experimental::pmr::string)
1306         (experimental::pmr::u16string, experimental::pmr::u32string)
1307         (experimental::pmr::wstring): Likewise.
1308         * include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results)
1309         (pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise.
1310         * include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string)
1311         (pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise.
1312         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require
1313         cxx11-abi.
1314         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
1316         PR libstdc++/78448
1317         * include/bits/deque.tcc (deque::_M_range_initialize): Use
1318         _S_check_init_len to check size.
1319         (deque::_M_push_back_aux, deque::_M_push_front_aux): Throw length
1320         error if size would exceed max_size().
1321         * include/bits/stl_deque.h (_Deque_base::size_type): Remove typedef.
1322         (_Deque_base(_Deque_base&&, const allocator_type&, size_t)): Use
1323         size_t instead of size_type.
1324         (deq(size_type, const allocator_type&)
1325         (deq(size_type, const value_type&, const allocator_type&)
1326         (deque::_M_initialize_dispatch): Use _S_check_init_len to check size.
1327         (deque::max_size): Call _S_max_size.
1328         (deque::_S_check_init_len, deque::_S_max_size): New functions.
1329         * include/bits/stl_vector.h (vector(size_type, const allocator_type&))
1330         (vector(size_type, const value_type&, const allocator_type&))
1331         (vector::_M_initialize_dispatch, vector::_M_range_initialize): Use
1332         _S_check_init_len to check size.
1333         (vector::max_size): Call _S_max_size.
1334         (vector::_M_check_len): Prevent max from being expanded as a
1335         function-like macro.
1336         (vector::_S_check_init_len, vector::_S_max_size): New functions.
1337         * include/bits/vector.tcc (vector::_M_assign_aux): Use
1338         _S_check_init_len to check size.
1339         * testsuite/23_containers/deque/capacity/max_size.cc: New test.
1340         * testsuite/23_containers/vector/capacity/max_size.cc: New test.
1342 2018-08-22  François Dumont  <fdumont@gcc.gnu.org>
1344         PR libstdc++/68222
1345         * include/debug/safe_iterator.h
1346         (_Safe_iterator<_It, _Sq, _Cat>): Add category template parameter.
1347         (_Safe_iterator<>::_Const_iterator): Remove.
1348         (_Safe_iterator<>::_IsConstant): New.
1349         (_Safe_iterator<>::_OtherIterator): New.
1350         (_Safe_iterator<_It, _Sq, _Cat>::_Safe_iterator<_MutIte>(
1351         const _Safe_iterator<_MutIte, _Sq, _Cat>&)): Add _IsConstant::__value in
1352         __gnu_cxx::__enable_if condition.
1353         (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to): New.
1354         (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_from_begin): New.
1355         (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to_end): New.
1356         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>): New.
1357         (_Safe_iterator<_It, _Sq, _Cat>::operator--()): Move...
1358         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
1359         ::operator--()): ...here.
1360         (_Safe_iterator<_It, _Sq, _Cat>::operator--(int)): Move...
1361         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
1362         ::operator--(int)): ...here.
1363         (_Safe_iterator<_It, _Sq, _Cat>::_M_decrementable()): Move...
1364         (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
1365         ::_M_decrementable()): ...here.
1366         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>): New.
1367         (_Safe_iterator<_It, _Sq, _Cat>::operator[](const difference_type&)):
1368         Move...
1369         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1370         ::operator[](const difference_type&)): ...here.
1371         (_Safe_iterator<_It, _Sq, _Cat>::operator+=(const difference_type&)):
1372         Move...
1373         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1374         ::operator+=(const difference_type&)): ...here.
1375         (_Safe_iterator<_It, _Sq, _Cat>::operator+(const difference_type&)):
1376         Move...
1377         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1378         ::operator+(const difference_type&)): ...here.
1379         (_Safe_iterator<_It, _Sq, _Cat>::operator-=(const difference_type&)):
1380         Move...
1381         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1382         ::operator-=(const difference_type&)): ...here.
1383         (_Safe_iterator<_It, _Sq, _Cat>::operator-(const difference_type&)):
1384         Move...
1385         (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1386         ::operator-(const difference_type&)): ...here.
1387         (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1388         Constraint to random access iterators.
1389         (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1390         Likewise.
1391         (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1392         (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1393         Likewise.
1394         (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1395         (operator+(const difference_type&, const _Safe_iterator<>&)): Likewise.
1396         (__check_dereferenceable(const _Safe_iterator<>&)): Remove.
1397         (__get_distance): Remove.
1398         (__get_distance_from_begin): Remove.
1399         (__get_distance_to_end): Remove.
1400         (struct __is_safe_random_iterator<_Safe_iterator<>>): Remove partial
1401         specialization.
1402         (__base(const _Safe_iterator<>&, std::input_iterator_tag)): Remove.
1403         (__base(const _Safe_iterator<>&, std::random_access_iterator_tag)): Remove.
1404         (__base(const _Safe_iterator<>&)): Constraint to random access iterator.
1405         * include/debug/safe_iterator.tcc
1406         (_Safe_iterator<>::_M_get_distance_from_begin()): New.
1407         (_Safe_iterator<>::_M_get_distance_to_end()): New.
1408         (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator<>&)): New.
1409         (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1410         ::_M_valid_range): New.
1411         * include/debug/safe_local_iterator.h
1412         (_Safe_local_iterator<>::_Const_local_iterator): Remove.
1413         (_Safe_local_iterator<>::_IsConstant): New.
1414         (_Safe_local_iterator<>::_OtherIterator): New.
1415         (_Safe_local_iterator<_It, _Cont>::_Safe_local_iterator<_MutIte, _Cont>(
1416         const _Safe_local_iterator<_MutIte, _Seq>&)): Add _IsConstant::__value
1417         in __gnu_cxx::__enable_if condition. If singular compare base iterator
1418         with _MutIte rather than _It.
1419         (_Safe_local_iterator<>::_S_constant): Make constexpr.
1420         (_Safe_local_iterator<>::_M_get_distance_to): New.
1421         (__check_dereferenceable(const _Safe_local_iterator<>&)): Remove.
1422         (__get_distance(const _Safe_local_iterator<>&,
1423         const _Safe_local_iterator<>&, std::input_iterator_tag)): Remove.
1424         (__valid_range(const _Safe_local_iterator<>&,
1425         const _Safe_local_iterator<>&)): New.
1426         * include/debug/safe_local_iterator.tcc
1427         (_Safe_local_iterator<>::_M_get_distance_to): New.
1428         * include/debug/deque (std::__debug::deque<>): Add
1429         ::__gnu_debug::_Safe_iterator<> friend declaration.
1430         * include/debug/forward_list (std::__debug::forward_list<>): Likewise.
1431         * include/debug/list (std::__debug::list<>): Likewise.
1432         * include/debug/map.h (std::__debug::map<>): Likewise.
1433         * include/debug/multimap.h (std::__debug::multimap<>): Likewise.
1434         * include/debug/set.h (std::__debug::set<>): Likewise.
1435         * include/debug/multiset.h (std::__debug::multiset<>): Likewise.
1436         * include/debug/string (std::__debug::basic_string<>): Likewise.
1437         * include/debug/unordered_map (std::__debug::unordered_map<>): Likewise
1438         and add ::__gnu_debug::_Safe_local_iterator<> friend declaration.
1439         (std::__debug::unordered_multimap<>): Likewise.
1440         * include/debug/unordered_set (std::__debug::unordered_set<>): Likewise.
1441         (std::__debug::unordered_multiset<>): Likewise.
1442         * include/debug/formatter.h: Adapt.
1443         * include/debug/helper_functions.h
1444         (__gnu_debug::_Safe_local_iterator<>): Add declaration.
1445         (__get_distance<_Ite>(_Ite, _Ite, std::random_access_iterator_tag):
1446         Pass parameter by copy.
1447         (__get_distance<_Ite>(_Ite, _Ite, std::input_iterator_tag): Likewise.
1448         (__get_distance<_Ite>(_Ite, _Ite): Likewise.
1449         (__valid_range_aux<_Integral>): Pass _Integral by copy.
1450         (__valid_range<_InputIterator>): Pass _InputIterator by copy.
1451         (__valid_range<>(const _Safe_iterator<>&,
1452         const _Safe_iterator<>&, typename _Distance_traits<>::__type&)):
1453         Declare.
1454         (__valid_range(const _Safe_local_iterator<>&,
1455         const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)):
1456         Declare.
1457         (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1458         Declare.
1459         (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)):
1460         Declare.
1461         (__can_advance): Adapt.
1462         (struct __is_safe_random_iterator<>): Remove.
1463         (struct _SIter_base<>): Remove.
1464         * include/debug/functions.h: Include <bits/stl_iterator.h>.
1465         (__check_dereferenceable): Remove.
1466         (__foreign_iterator_aux4, __foreign_iterator_aux3): Adapt.
1467         (__foreign_iterator_aux2, __foreign_iterator_aux): Adapt.
1468         (__foreign_iterator): Adapt.
1469         * include/debug/stl_iterator.h
1470         (__is_safe_random_iterator<std::reverse_iterator<>>): Remove.
1471         (__base(const std::reverse_iterator<_Safe_iterator<_It, _Sq>)):
1472         Constraint for random access iterators.
1473         (__niter_base): Adapt.
1474         * testsuite/util/testsuite_containers.h:
1475         Include <bits/boost_concept_check.h>.
1476         (iterator_concept_checks<_It, _Mutable, _Category>): New.
1477         (citerator<_Cont>::forward_members::forward_members()): Instantiate
1478         latter for container iterator and const_iterator.
1479         * testsuite/23_containers/list/68222_neg.cc: New.
1480         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adapt
1481         line number.
1482         * testsuite/23_containers/unordered_set/debug/debug_functions.cc:
1483         (test01): Remove.
1484         * testsuite/23_containers/vector/debug/debug_functions.cc (test01):
1485         Remove.
1487 2018-08-22  Jonathan Wakely  <jwakely@redhat.com>
1489         PR libstdc++/77854
1490         * doc/xml/manual/status_cxx1998.xml: Document size_type and
1491         difference_type for containers.
1492         * doc/html/*: Regenerate.
1494 2018-08-21  François Dumont  <fdumont@gcc.gnu.org>
1496         P0646R1 Improving the Return Value of Erase-Like Algorithms I
1497         * include/debug/forward_list (forward_list::__remove_return_type):
1498         Define typedef as size_type or void, according to __cplusplus value.
1499         (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1500         empty, according to __cplusplus value.
1501         (_GLIBCXX20_ONLY): Define macro.
1502         (forward_list::remove, forward_list::unique): Use typedef and macro
1503         to change return type and add abi-tag for C++2a. Return number of
1504         removed elements for C++2a.
1505         (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
1506         typedef to change return type for C++2a. Return number of removed
1507         elements for C++2a.
1508         * include/debug/list (list::__remove_return_type): Define typedef as
1509         size_type or void, according to __cplusplus value.
1510         (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1511         empty, according to __cplusplus value.
1512         (_GLIBCXX20_ONLY): Define macro.
1513         (list::remove, list::unique): Use typedef and macro to change return
1514         type and add abi-tag for C++2a. Return number of removed elements for
1515         C++2a.
1516         (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
1517         to change return type for C++2a. Return number of removed elements for
1518         C++2a.
1520 2018-08-21  David Edelsohn  <dje.gcc@gmail.com>
1522         * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
1524 2018-08-21  Jonathan Wakely  <jwakely@redhat.com>
1526         * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
1527         redundant dg-do directive.
1528         * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
1529         * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
1530         * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
1531         * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
1533 2018-08-20  Jonathan Wakely  <jwakely@redhat.com>
1535         PR libstdc++/86963
1536         * include/std/tuple (_Tuple_impl::operator=): Define as deleted.
1537         (_Tuple_impl::_M_assign): New functions to perform assignment instead
1538         of assignment operators.
1539         (_Tuple_impl::_M_swap): Remove exception specification.
1540         (_Tuple_impl<_Idx, _Head>): Likewise.
1541         (_TC::_NonNestedTuple, _TC::_NotSameTuple): Use __remove_cvref_t.
1542         (__tuple_base): Remove.
1543         (tuple, tuple<_T1, _T2>): Remove inheritance from __tuple_base.
1544         (tuple::operator=, tuple<_T1, _T2>::operator=): Call _M_assign.
1545         (tuple::swap, tuple<_T1, _T2>::swap): Define exception specification
1546         using __is_nothrow_swappable.
1547         (tuple<_T1, _T2>::tuple(_U1&&, _U2&&)): Use __remove_cvref_t.
1549         * include/std/optional (_Optional_payload): Use variable templates
1550         for conditions in default template arguments and exception
1551         specifications.
1552         (optional): Likewise. Adjust indentation.
1553         (optional::__not_self, optional::__not_tag, optional::_Requires): New
1554         SFINAE helpers.
1555         (optional::optional): Use new helpers in constructor constraints.
1556         * include/std/type_traits (__or_v, __and_v): New variable templates.
1557         * testsuite/20_util/optional/cons/value_neg.cc: Change dg-error to
1558         dg-prune-output. Remove unused header.
1560 2018-08-18  François Dumont  <fdumont@gcc.gnu.org>
1562         * testsuite/25_algorithms/copy/86658.cc: Use dg-options to define
1563         _GLIBCXX_DEBUG.
1565 2018-08-17  Jonathan Wakely  <jwakely@redhat.com>
1567         PR libstdc++/86963
1568         * include/std/tuple (__tuple_base): New class template with deleted
1569         copy assignment operator.
1570         (tuple, tuple<_T1, _T2>): Derive from __tuple_base<tuple> so that
1571         implicit copy/move assignment operator will be deleted/suppressed.
1572         (tuple::__assignable, tuple<_T1, _T2>::__assignable): New helper
1573         functions for SFINAE constraints on assignment operators.
1574         (tuple::__nothrow_assignable, tuple<_T1, _T2>::__nothrow_assignable):
1575         New helper functions for exception specifications.
1576         (tuple::operator=(const tuple&), tuple::operator=(tuple&&))
1577         (tuple<_T1, _T2>::operator=(const tuple&))
1578         (tuple<_T1, _T2>::operator=(tuple&&)): Change parameter types to
1579         __nonesuch_no_braces when the operator should be defined implicitly.
1580         Use __nothrow_assignable for exception specifications.
1581         (tuple::operator=(const tuple<_UElements...>&))
1582         (tuple::operator=(tuple<_UElements...>&&))
1583         (tuple<_T1, _T2>::operator=(const tuple<_U1, _U2>&))
1584         (tuple<_T1, _T2>::operator=(tuple<_U1, _U2>&&))
1585         (tuple<_T1, _T2>::operator=(const pair<_U1, _U2>&))
1586         (tuple<_T1, _T2>::operator=(pair<_U1, _U2>&&)): Constrain using
1587         __assignable and use __nothrow_assignable for exception
1588         specifications.
1589         * python/libstdcxx/v6/printers.py (is_specialization_of): Accept
1590         gdb.Type as first argument, instead of a string.
1591         (StdTuplePrinter._iterator._is_nonempty_tuple): New method to check
1592         tuple for expected structure.
1593         (StdTuplePrinter._iterator.__init__): Use _is_nonempty_tuple.
1594         * testsuite/20_util/tuple/dr2729.cc: New test.
1595         * testsuite/20_util/tuple/element_access/get_neg.cc: Change dg-error
1596         to dg-prune-output.
1598 2018-08-16  Jonathan Wakely  <jwakely@redhat.com>
1600         * include/tr1/legendre_function.tcc (__sph_legendre): Avoid warning
1601         about signed/unsigned comparison.
1603         * include/std/ostream (basic_ostream::sentry::~sentry): Suppress
1604         deprecation warnings for using uncaught_exception().
1606         PR libstdc++/86447
1607         * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
1608         (logic_error::logic_error(logic_error&&))
1609         (logic_error::operator=(logic_error&&))
1610         (runtime_error::runtime_error(runtime_error&&))
1611         (runtime_error::operator=(runtime_error&&)): Copy strings instead of
1612         moving, to avoid allocating empty reps for moved-from strings.
1614 2018-08-15  Jonathan Wakely  <jwakely@redhat.com>
1616         * include/experimental/regex: Remove begin/end macros for namespace.
1617         * include/experimental/string: Likewise.
1618         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
1619         New test.
1620         * testsuite/experimental/polymorphic_allocator/
1621         pmr_typedefs_forward_list.cc: New test.
1622         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
1623         New test.
1624         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
1625         New test.
1626         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
1627         New test.
1628         * testsuite/experimental/polymorphic_allocator/
1629         pmr_typedefs_multimap.cc: New test.
1630         * testsuite/experimental/polymorphic_allocator/
1631         pmr_typedefs_multiset.cc: New test.
1632         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
1633         New test.
1634         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1635         New test.
1636         * testsuite/experimental/polymorphic_allocator/
1637         pmr_typedefs_unordered_map.cc: New test.
1638         * testsuite/experimental/polymorphic_allocator/
1639         pmr_typedefs_unordered_multimap.cc: New test.
1640         * testsuite/experimental/polymorphic_allocator/
1641         pmr_typedefs_unordered_multiset.cc: New test.
1642         * testsuite/experimental/polymorphic_allocator/
1643         pmr_typedefs_unordered_set.cc: New test.
1644         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
1645         New test.
1647         * include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
1648         calls to __uses_allocator_construct_impl and __use_alloc.
1649         * include/experimental/memory_resource
1650         (polymorphic_allocator::_M_construct): Remove.
1651         (polymorphic_allocator::construct): Call __uses_allocator_construct.
1652         Qualify calls to __use_alloc.
1653         * include/std/memory_resource (polymorphic_allocator::construct): Fix
1654         type in SFINAE constraint. Use constexpr if instead of tag dispatching
1655         to _S_construct overloads.
1656         (polymorphic_allocator::construct(pair<T1, T2>*, ...)): Fix order of
1657         arguments to _S_construct_p.
1658         (polymorphic_allocator::_S_construct): Remove.
1659         (polymorphic_allocator::_S_construct_p): Return allocators by value
1660         not by reference.
1661         * include/std/scoped_allocator (scoped_allocator_adaptor::construct):
1662         Qualify calls to __use_alloc.
1663         * testsuite/20_util/polymorphic_allocator/construct_pair.cc: New test,
1664         copied from testsuite/20_util/scoped_allocator/construct_pair.cc.
1665         * testsuite/experimental/polymorphic_allocator/1.cc: New test.
1666         * testsuite/experimental/polymorphic_allocator/construct_pair.cc:
1667         New test.
1669         * src/c++17/memory_resource.cc [!_GLIBCXX_HAS_GTHREADS]
1670         (atomic_mem_res): Add unsynchronized definition for single-threaded.
1672 2018-08-14  Jonathan Wakely  <jwakely@redhat.com>
1674         PR libstdc++/86954
1675         * include/bits/stl_tempbuf.h (return_temporary_buffer): Use
1676         non-placement delete.
1678         * include/std/chrono (__check_overflow): Simplify definition.
1679         (_Checked_integral_constant): Remove.
1681         PR libstdc++/86846
1682         * src/c++17/default_resource.h: New file, defining default_res.
1683         * src/c++17/memory_resource.cc [ATOMIC_POINTER_LOCK_FREE != 2]
1684         (atomic_mem_res): Define alternative for atomic<memory_resource*>
1685         using a mutex instead of atomics.
1687         PR libstdc++/85343
1688         * config/abi/pre/gnu.ver: Export new symbol.
1689         * doc/xml/manual/abi.xml: Document new versions.
1690         * include/bits/fstream.tcc (basic_filebuf<C, T>::underflow)
1691         (basic_filebuf<C, T>::xsgetn): Pass errno to __throw_ios_failure.
1692         * include/bits/functexcept.h (__throw_ios_failure(const char*, int)):
1693         Declare new overload.
1694         * src/c++11/cxx11-ios_failure.cc (__ios_failure): Add new constructor
1695         and static member function.
1696         (__throw_ios_failure(const char*, int)): Define.
1697         * src/c++98/ios_failure.cc [!_GLIBCXX_USE_DUAL_ABI]
1698         (__throw_ios_failure(const char*, int)): Define.
1700 2018-08-14  Jeremy Sawicki  <jeremy-gcc@sawicki.us>
1702         * include/ext/rope (_Rope_iterator_base(const _Rope_iterator_base&))
1703         (_Rope_const_iterator::operator=(const _Rope_const_iterator&))
1704         (_Rope_iterator::operator=(const _Rope_iterator&)): Ensure
1705         copied/assigned rope iterators don't retain pointers to the iterator
1706         they were copied/assigned from.
1707         * testsuite/ext/rope/7.cc: New.
1709 2018-08-13  Jonathan Wakely  <jwakely@redhat.com>
1711         PR libstdc++/45093
1712         * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
1713         Combine definitions to avoid --detect-odr-violations warning.
1715         * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Use
1716         __is_pow2 to check for valid alignment. Avoid branching when rounding
1717         size to multiple of alignment.
1719         * include/Makefile.am: Install <bit> and <version> for freestanding.
1720         * include/Makefile.in: Regenerate.
1721         * testsuite/17_intro/freestanding.cc: Check for <bit> and <version>.
1723         Revert
1724         2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1726         PR target/85904
1727         * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
1728         Newlib.
1729         * configure: Regenerate.
1731 2018-08-10  Jonathan Wakely  <jwakely@redhat.com>
1733         PR libstdc++/68210
1734         * doc/xml/manual/intro.xml: Document LWG 206 change.
1735         * libsupc++/del_op.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1736         * libsupc++/del_opa.cc: Likewise.
1737         * libsupc++/del_opant.cc: Likewise.
1738         * libsupc++/del_opnt.cc: Likewise. Call operator delete(ptr) instead
1739         of free(ptr).
1740         * libsupc++/del_ops.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1741         * libsupc++/del_opsa.cc: Likewise.
1742         * libsupc++/del_opva.cc: Likewise.
1743         * libsupc++/del_opvant.cc: Likewise.
1744         * libsupc++/del_opvnt.cc: Likewise. Call operator delete[](ptr)
1745         instead of operator delete(ptr).
1746         * libsupc++/del_opvs.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1747         * libsupc++/del_opvsa.cc: Likewise.
1748         * libsupc++/new_op.cc: Use __builtin_expect in check for zero size.
1749         * libsupc++/new_opa.cc: Use nullptr instead of literal 0.
1750         * libsupc++/new_opant.cc: Likewise. Replace _GLIBCXX_USE_NOEXCEPT
1751         with noexcept.
1752         * libsupc++/new_opnt.cc: Likewise. Call operator new(sz) instead of
1753         malloc(sz).
1754         * libsupc++/new_opvant.cc: Use nullptr and noexcept.
1755         * libsupc++/new_opvnt.cc: Likewise. Call operator new[](sz) instead of
1756         operator new(sz, nothrow).
1757         * testsuite/18_support/new_nothrow.cc: New test.
1759 2018-08-10  Martin Liska  <mliska@suse.cz>
1761         * libsupc++/new_op.cc (new): Remove __builtin_expect as malloc
1762         predictor can handle that.
1763         * libsupc++/new_opa.cc: Likewise.
1764         * libsupc++/new_opnt.cc (new): Likewise.
1766 2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1768         PR target/85904
1769         * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
1770         Newlib.
1771         * configure: Regenerate.
1773 2018-08-10  Jonathan Wakely  <jwakely@redhat.com>
1775         * include/std/deque (std::pmr::deque): Declare alias.
1776         * include/std/forward_list (std::pmr::forward_list): Likewise.
1777         * include/std/list (std::pmr::list): Likewise.
1778         * include/std/map (std::pmr::map, std::pmr::multimap): Likewise.
1779         * include/std/regex (std::pmr::match_results, std::pmr::cmatch)
1780         (std::pmr::smatch, std::pmr::wcmatch, std::pmr::wsmatch): Likewise.
1781         * include/std/set (std::pmr::set, std::pmr::multiset): Likewise.
1782         * include/std/string (std::pmr::basic_string, std::pmr::string)
1783         (std::pmr::u16string, std::pmr::u32string, std::pmr::wstring):
1784         Likewise.
1785         * include/std/unordered_map (std::pmr::unordered_map)
1786         (std::pmr::unordered_multimap): Likewise.
1787         * include/std/unordered_set (std::pmr::unordered_set)
1788         (std::pmr::unordered_multiset): Likewise.
1789         * include/std/vector (std::pmr::vector): Likewise.
1790         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: New test.
1791         * testsuite/23_containers/deque/types/pmr_typedefs.cc: New test.
1792         * testsuite/23_containers/forward_list/pmr_typedefs.cc: New test.
1793         * testsuite/23_containers/list/pmr_typedefs.cc: New test.
1794         * testsuite/23_containers/map/pmr_typedefs.cc: New test.
1795         * testsuite/23_containers/multimap/pmr_typedefs.cc: New test.
1796         * testsuite/23_containers/multiset/pmr_typedefs.cc: New test.
1797         * testsuite/23_containers/set/pmr_typedefs.cc: New test.
1798         * testsuite/23_containers/unordered_map/pmr_typedefs.cc: New test.
1799         * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: New
1800         test.
1801         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
1802         test.
1803         * testsuite/23_containers/unordered_set/pmr_typedefs.cc: New test.
1804         * testsuite/23_containers/vector/pmr_typedefs.cc: New test.
1805         * testsuite/28_regex/match_results/pmr_typedefs.cc: New test.
1807 2018-08-08  François Dumont  <fdumont@gcc.gnu.org>
1809         * include/bits/stl_algo.h
1810         (__rotate(_Ite, _Ite, _Ite, forward_iterator_tag))
1811         (__rotate(_Ite, _Ite, _Ite, bidirectional_iterator_tag))
1812         (__rotate(_Ite, _Ite, _Ite, random_access_iterator_tag)): Move code
1813         duplication...
1814         (rotate(_Ite, _Ite, _Ite)): ...here.
1815         (__stable_partition_adaptive(_FIt, _FIt, _Pred, _Dist, _Pointer, _Dist)):
1816         Simplify rotate call.
1817         (__rotate_adaptive(_BIt1, _BIt1, _BIt1, _Dist, _Dist, _Bit2, _Dist)):
1818         Likewise.
1819         (__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
1820         Likewise.
1822 2018-08-08  Jonathan Wakely  <jwakely@redhat.com>
1824         * libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
1825         avoid clashing with an ::aligned_alloc function that was not detected
1826         by configure.
1828         * doc/xml/manual/using.xml: Fix markup for empty table entry.
1829         * doc/html/*: Regenerate.
1831         * doc/xml/manual/using.xml: Add missing header to table and fix typo.
1832         * doc/html/*: Regenerate.
1834         PR libstdc++/86597
1835         * include/bits/fs_dir.h (directory_entry::_M_file_type(error_code&)):
1836         Clear error_code when cached type is used.
1837         * testsuite/27_io/filesystem/directory_entry/86597.cc: New test.
1839 2018-08-07  Jonathan Wakely  <jwakely@redhat.com>
1841         PR libstdc++/86874
1842         * include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
1843         here instead of in _Move_assign_base.
1844         (_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
1845         (_Copy_assign_base::operator=): Use _M_destructive_move when changing
1846         the contained value to another alternative.
1847         (_Move_assign_base::operator=): Likewise.
1848         (_Move_assign_base::_M_destructive_move): Remove.
1849         * testsuite/20_util/variant/86874.cc: New test.
1851         PR libstdc++/86861
1852         * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
1853         Replace macro with inline function.
1854         [__sun]: Increase alignment to meet memalign precondition.
1855         [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
1856         (aligned_alloc): Move check for valid alignment to operator new.
1857         Remove redundant check for non-zero size, it's enforced by the caller.
1858         (operator new): Move check for valid alignment here. Use
1859         __builtin_expect on check for zero size.
1861         * config/abi/pre/gnu.ver: Export monotonic_buffer_resource members.
1862         * include/std/memory_resource (monotonic_buffer_resource::release):
1863         Call _M_release_buffers to free buffers.
1864         (monotonic_buffer_resource::do_allocate): Call _M_new_buffer to
1865         allocate a new buffer from upstream.
1866         (monotonic_buffer_resource::_M_new_buffer): Declare.
1867         (monotonic_buffer_resource::_M_release_buffers): Declare.
1868         (monotonic_buffer_resource::_Chunk): Replace definition with
1869         declaration as opaque type.
1870         * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk):
1871         Define.
1872         (monotonic_buffer_resource::_M_new_buffer): Define.
1873         (monotonic_buffer_resource::_M_release_buffers): Define.
1875 2018-08-05  François Dumont  <fdumont@gcc.gnu.org>
1877         * include/bits/stl_iterator.h: Fix comment.
1879 2018-08-03  Jonathan Wakely  <jwakely@redhat.com>
1881         * src/c++11/system_error.cc
1882         (system_error_category::default_error_condition): Add workaround for
1883         ENOTEMPTY and EEXIST having the same value on AIX.
1884         * testsuite/19_diagnostics/error_category/system_category.cc: Add
1885         extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
1887 2018-08-01  Jonathan Wakely  <jwakely@redhat.com>
1889         * configure: Regenerate.
1890         * configure.ac: Add -D_GLIBCXX_ASSERTIONS to default DEBUG_FLAGS.
1891         * src/c++11/futex.cc: Use __glibcxx_assert instead of
1892         _GLIBCXX_DEBUG_ASSERT.
1894 2018-08-01  Mike Crowe  <mac@mcrowe.com>
1896         * include/std/condition_variable (wait_for): Use steady_clock.
1898 2018-08-01  Mike Crowe  <mac@mcrowe.com>
1900         * include/std/condition_variable (wait_until): Only report timeout
1901         if we really have timed out when measured against the
1902         caller-supplied clock.
1903         * testsuite/30_threads/condition_variable/members/2.cc: Add test
1904         case to confirm above behaviour.
1906 2018-08-01  Jonathan Wakely  <jwakely@redhat.com>
1908         PR libstdc++/60555
1909         * src/c++11/system_error.cc
1910         (system_error_category::default_error_condition): New override to
1911         check for POSIX errno values.
1912         * testsuite/19_diagnostics/error_category/generic_category.cc: New
1913         * testsuite/19_diagnostics/error_category/system_category.cc: New
1914         test.
1916 2018-07-31  Jonathan Wakely  <jwakely@redhat.com>
1918         PR libstdc++/86751
1919         * include/bits/stl_pair.h (__pair_base): New class with deleted copy
1920         assignment operator.
1921         (pair): Derive from __pair_base.
1922         (pair::operator=): Remove deleted overload.
1923         * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
1924         so that new base class isn't shown in GDB.
1925         * testsuite/20_util/pair/86751.cc: New test.
1926         * testsuite/20_util/pair/ref_assign.cc: New test.
1928         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1929         (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Move definitions here.
1930         (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Likewise. Use !__is_identifier
1931         instead of __has_builtin.
1932         * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1933         (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Remove definitions from here.
1934         * include/std/version [!_GLIBCXX_HAS_GTHREADS]
1935         (__cpp_lib_shared_timed_mutex, __cpp_lib_scoped_lock)
1936         (__cpp_lib_shared_mutex): Don't define when Gthreads not in use.
1937         [!_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP]
1938         (__cpp_lib_has_unique_object_representations): Don't define when
1939         builtin not available.
1940         [!_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE] (__cpp_lib_is_aggregate):
1941         Likewise.
1942         [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
1943         * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
1944         from here.
1946         * doc/xml/manual/test.xml: Improve documentation on writing tests for
1947         newer standards.
1948         * doc/xml/manual/using.xml: Document all headers for C++11 and later.
1949         * doc/html/*: Regenerate.
1951         * include/ext/pointer.h [__cplusplus >= 201103L]
1952         (_Pointer_adapter::operator bool): Add explicit conversion operator
1953         to replace safe bool idiom.
1955 2018-07-30  Jonathan Wakely  <jwakely@redhat.com>
1957         PR libstdc++/86734
1958         * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
1959         _S_to_pointer (LWG 1052, LWG 2118).
1960         (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
1961         * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
1962         * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
1964         * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
1965         workaround for aligned_alloc bug on AIX.
1966         * testsuite/18_support/new_aligned.cc: New test.
1968 2018-07-26  Marek Polacek  <polacek@redhat.com>
1970         * testsuite/30_threads/condition_variable_any/cond.cc: New.
1972 2018-07-26  Marek Polacek  <polacek@redhat.com>
1974         * src/c++98/locale_init.cc: Fix #ifdef condition.
1976 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
1978         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
1979         dg-require-cstdint directive.
1980         * testsuite/20_util/allocator/overaligned.cc: Likewise.
1981         * testsuite/20_util/any/cons/aligned.cc: Likewise.
1982         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
1983         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
1984         * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
1985         Likewise.
1986         * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
1987         * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
1988         * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
1989         * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
1990         * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
1991         random_device effective-target.
1992         * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
1993         * testsuite/25_algorithms/sample/1.cc: Require cstdint.
1994         * testsuite/25_algorithms/sample/2.cc: Likewise.
1995         * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
1996         and random_device.
1997         * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
1998         cstdint.
1999         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
2000         Likewise.
2001         * testsuite/26_numerics/random/discard_block_engine/requirements/
2002         constexpr_data.cc: Likewise.
2003         * testsuite/26_numerics/random/discard_block_engine/requirements/
2004         constexpr_functions.cc: Likewise.
2005         * testsuite/26_numerics/random/independent_bits_engine/requirements/
2006         constexpr_functions.cc: Likewise.
2007         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
2008         constexpr_data.cc: Likewise.
2009         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
2010         constexpr_functions.cc: Likewise.
2011         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
2012         constexpr_data.cc: Likewise.
2013         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
2014         constexpr_functions.cc: Likewise.
2015         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
2016         * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
2017         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
2018         constexpr_data.cc: Add dg-require-cstdint directive.
2019         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
2020         constexpr_functions.cc: Likewise.
2021         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
2022         constexpr_data.cc: Likewise.
2023         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
2024         constexpr_functions.cc: Likewise.
2025         * testsuite/26_numerics/random/uniform_real_distribution/operators/
2026         64351.cc: Likewise.
2027         * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
2028         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
2029         * testsuite/experimental/algorithm/sample.cc: Likewise.
2030         * testsuite/experimental/algorithm/search.cc: Likewise.
2031         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2032         * testsuite/experimental/any/cons/aligned.cc: Likewise.
2033         * testsuite/experimental/memory_resource/new_delete_resource.cc:
2034         Likewise.
2035         * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
2036         * testsuite/experimental/random/randint.cc: Likewise.
2037         * testsuite/experimental/source_location/1.cc: Likewise.
2038         * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
2039         * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
2040         * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
2041         * testsuite/ext/new_allocator/overaligned.cc: Likewise.
2042         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
2043         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
2044         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
2045         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
2046         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
2047         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
2048         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
2049         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
2050         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
2051         * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
2052         * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
2053         * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
2054         * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
2055         * testsuite/ext/throw_allocator/check_new.cc: Likewise.
2056         * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
2057         * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
2058         * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
2059         * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
2060         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
2062         * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
2063         * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
2064         * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
2065         * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
2066         Likewise.
2067         * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
2068         * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
2069         * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
2070         Likewise.
2071         * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
2072         Likewise.
2073         * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
2074         Likewise.
2075         * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
2076         * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
2077         * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
2078         * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
2079         * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
2080         * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
2081         Likewise.
2082         * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
2083         Likewise.
2084         * testsuite/30_threads/recursive_timed_mutex/dest/
2085         destructor_locked.cc: Likewise.
2086         * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
2087         * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
2088         * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
2089         Likewise.
2090         * testsuite/30_threads/recursive_timed_mutex/native_handle/
2091         typesizes.cc: Likewise.
2092         * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
2093         Likewise.
2094         * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
2095         Likewise.
2096         * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
2097         Likewise.
2098         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
2099         Likewise.
2100         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
2101         Likewise.
2102         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
2103         Likewise.
2104         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
2105         Likewise.
2106         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
2107         Likewise.
2108         * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
2109         * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
2110         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
2111         * testsuite/30_threads/scoped_lock/requirements/
2112         explicit_instantiation.cc: Likewise.
2113         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
2114         * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
2115         * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
2116         * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
2117         * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
2118         * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
2119         * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
2120         * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
2121         * testsuite/30_threads/shared_future/members/get.cc: Likewise.
2122         * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
2123         * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
2124         * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
2125         * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
2126         * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
2127         * testsuite/30_threads/shared_future/requirements/
2128         explicit_instantiation.cc: Likewise.
2129         * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
2130         * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
2131         * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
2132         * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
2133         * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
2134         * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
2135         * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
2136         * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
2137         * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
2138         * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
2139         * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
2140         * testsuite/30_threads/shared_lock/requirements/
2141         explicit_instantiation.cc: Likewise.
2142         * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
2143         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
2144         * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
2145         * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
2146         * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
2147         Likewise.
2148         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
2149         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
2150         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
2151         * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
2152         * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
2153         * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
2154         * testsuite/30_threads/shared_timed_mutex/requirements/
2155         standard_layout.cc: Likewise.
2156         * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
2157         * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
2158         * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
2159         * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
2160         * testsuite/30_threads/this_thread/1.cc: Likewise.
2161         * testsuite/30_threads/this_thread/2.cc: Likewise.
2162         * testsuite/30_threads/this_thread/3.cc: Likewise.
2163         * testsuite/30_threads/this_thread/4.cc: Likewise.
2164         * testsuite/30_threads/this_thread/58038.cc: Likewise.
2165         * testsuite/30_threads/thread/70503.cc: Likewise.
2166         * testsuite/30_threads/thread/84532.cc: Likewise.
2167         * testsuite/30_threads/thread/adl.cc: Likewise.
2168         * testsuite/30_threads/thread/cons/1.cc: Likewise.
2169         * testsuite/30_threads/thread/cons/2.cc: Likewise.
2170         * testsuite/30_threads/thread/cons/3.cc: Likewise.
2171         * testsuite/30_threads/thread/cons/4.cc: Likewise.
2172         * testsuite/30_threads/thread/cons/49668.cc: Likewise.
2173         * testsuite/30_threads/thread/cons/5.cc: Likewise.
2174         * testsuite/30_threads/thread/cons/6.cc: Likewise.
2175         * testsuite/30_threads/thread/cons/7.cc: Likewise.
2176         * testsuite/30_threads/thread/cons/8.cc: Likewise.
2177         * testsuite/30_threads/thread/cons/84535.cc: Likewise.
2178         * testsuite/30_threads/thread/cons/9.cc: Likewise.
2179         * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
2180         * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
2181         * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
2182         * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
2183         * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
2184         * testsuite/30_threads/thread/id/operators.cc: Likewise.
2185         * testsuite/30_threads/thread/members/1.cc: Likewise.
2186         * testsuite/30_threads/thread/members/2.cc: Likewise.
2187         * testsuite/30_threads/thread/members/3.cc: Likewise.
2188         * testsuite/30_threads/thread/members/4.cc: Likewise.
2189         * testsuite/30_threads/thread/members/5.cc: Likewise.
2190         * testsuite/30_threads/thread/members/hardware_concurrency.cc:
2191         Likewise.
2192         * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
2193         * testsuite/30_threads/thread/swap/1.cc: Likewise.
2194         * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
2195         * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
2196         * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
2197         * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
2198         * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
2199         * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
2200         * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
2201         Likewise.
2202         * testsuite/30_threads/timed_mutex/requirements/
2203         standard_layout.cc: Likewise.
2204         * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
2205         * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
2206         * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
2207         * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
2208         * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
2209         * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
2210         * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
2211         * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
2212         * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
2213         * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
2214         * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
2215         * testsuite/30_threads/try_lock/1.cc: Likewise.
2216         * testsuite/30_threads/try_lock/2.cc: Likewise.
2217         * testsuite/30_threads/try_lock/3.cc: Likewise.
2218         * testsuite/30_threads/try_lock/4.cc: Likewise.
2219         * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
2220         * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
2221         * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
2222         * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
2223         * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
2224         * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
2225         * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
2226         * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
2227         * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
2228         * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
2229         * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
2230         * testsuite/30_threads/unique_lock/requirements/
2231         explicit_instantiation.cc: Likewise.
2232         * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
2234         * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
2235         directive.
2236         * testsuite/30_threads/async/49668.cc: Likewise.
2237         * testsuite/30_threads/async/54297.cc: Likewise.
2238         * testsuite/30_threads/async/84532.cc: Likewise.
2239         * testsuite/30_threads/async/any.cc: Likewise.
2240         * testsuite/30_threads/async/async.cc: Likewise.
2241         * testsuite/30_threads/async/except.cc: Likewise.
2242         * testsuite/30_threads/async/forced_unwind.cc: Likewise.
2243         * testsuite/30_threads/async/launch.cc: Likewise.
2244         * testsuite/30_threads/async/lwg2021.cc: Likewise.
2245         * testsuite/30_threads/async/sync.cc: Likewise.
2246         * testsuite/30_threads/call_once/39909.cc: Likewise.
2247         * testsuite/30_threads/call_once/49668.cc: Likewise.
2248         * testsuite/30_threads/call_once/60497.cc: Likewise.
2249         * testsuite/30_threads/call_once/call_once1.cc: Likewise.
2250         * testsuite/30_threads/call_once/constexpr.cc: Likewise.
2251         * testsuite/30_threads/call_once/dr2442.cc: Likewise.
2252         * testsuite/30_threads/call_once/once_flag.cc: Likewise.
2253         * testsuite/30_threads/condition_variable/54185.cc: Likewise.
2254         * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
2255         * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
2256         Likewise.
2257         * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
2258         * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
2259         * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
2260         * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
2261         * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
2262         * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
2263         * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
2264         Likewise.
2265         * testsuite/30_threads/condition_variable/requirements/
2266         standard_layout.cc: Likewise.
2267         * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
2268         * Likewise.
2269         * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
2270         * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
2271         * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
2272         * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
2273         Likewise.
2274         * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
2275         Likewise.
2276         * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
2277         * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
2278         * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
2279         * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
2280         * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
2281         * testsuite/30_threads/future/cons/default.cc: Likewise.
2282         * testsuite/30_threads/future/cons/move.cc: Likewise.
2283         * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
2284         * testsuite/30_threads/future/members/45133.cc: Likewise.
2285         * testsuite/30_threads/future/members/get.cc: Likewise.
2286         * testsuite/30_threads/future/members/get2.cc: Likewise.
2287         * testsuite/30_threads/future/members/share.cc: Likewise.
2288         * testsuite/30_threads/future/members/valid.cc: Likewise.
2289         * testsuite/30_threads/future/members/wait.cc: Likewise.
2290         * testsuite/30_threads/future/members/wait_for.cc: Likewise.
2291         * testsuite/30_threads/future/members/wait_until.cc: Likewise.
2292         * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
2293         Likewise.
2294         * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
2295         Likewise.
2296         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
2297         * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
2298         * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
2299         * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
2300         * testsuite/30_threads/lock/1.cc: Likewise.
2301         * testsuite/30_threads/lock/2.cc: Likewise.
2302         * testsuite/30_threads/lock/3.cc: Likewise.
2303         * testsuite/30_threads/lock/4.cc: Likewise.
2304         * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
2305         * testsuite/30_threads/lock_guard/requirements/
2306         explicit_instantiation.cc: Likewise.
2307         * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
2308         * testsuite/30_threads/mutex/cons/1.cc: Likewise.
2309         * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
2310         * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
2311         * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
2312         * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
2313         * testsuite/30_threads/mutex/lock/1.cc: Likewise.
2314         * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
2315         * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
2316         * testsuite/30_threads/mutex/requirements/standard_layout.cc::
2317         Likewise.
2318         * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
2319         * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
2320         * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
2321         * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
2322         * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
2323         * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
2324         * testsuite/30_threads/packaged_task/49668.cc: Likewise.
2325         * testsuite/30_threads/packaged_task/60564.cc: Likewise.
2326         * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
2327         * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
2328         * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
2329         * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
2330         * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
2331         * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
2332         * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
2333         * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
2334         * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
2335         * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
2336         * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
2337         * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
2338         Likewise.
2339         * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
2340         * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
2341         * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
2342         * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
2343         * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
2344         * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
2345         * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
2346         * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
2347         * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
2348         * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
2349         * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
2350         * testsuite/30_threads/packaged_task/requirements/
2351         explicit_instantiation.cc: Likewise.
2352         * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
2353         * testsuite/30_threads/promise/60966.cc: Likewise.
2354         * testsuite/30_threads/promise/69106.cc: Likewise.
2355         * testsuite/30_threads/promise/cons/1.cc: Likewise.
2356         * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
2357         * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
2358         * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
2359         * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
2360         * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
2361         * testsuite/30_threads/promise/cons/move.cc: Likewise.
2362         * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
2363         * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
2364         * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
2365         * testsuite/30_threads/promise/members/get_future.cc: Likewise.
2366         * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
2367         * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
2368         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
2369         * testsuite/30_threads/promise/members/set_value.cc: Likewise.
2370         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
2371         * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
2372         * testsuite/30_threads/promise/members/swap.cc: Likewise.
2373         * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
2374         * Likewise.
2375         * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
2377         * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
2378         from namespace std.
2379         * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
2380         * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
2381         * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
2382         * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
2383         * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
2384         * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
2385         * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
2386         * testsuite/20_util/duration/cons/1.cc: Likewise.
2387         * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
2388         * testsuite/20_util/duration/cons/2.cc: Likewise.
2389         * testsuite/20_util/duration/cons/54025.cc: Likewise.
2390         * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
2391         * testsuite/20_util/duration/requirements/explicit_instantiation/
2392         explicit_instantiation.cc: Likewise.
2393         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
2394         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
2395         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
2396         * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
2397         * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
2398         * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
2399         * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
2400         * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
2401         * testsuite/20_util/ratio/operations/45866.cc: Likewise.
2402         * testsuite/20_util/ratio/operations/47913.cc: Likewise.
2403         * testsuite/20_util/ratio/operations/53840.cc: Likewise.
2404         * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
2405         * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
2406         * testsuite/20_util/system_clock/1.cc: Likewise.
2407         * testsuite/20_util/time_point/1.cc: Likewise.
2408         * testsuite/20_util/time_point/2.cc: Likewise.
2409         * testsuite/20_util/time_point/3.cc: Likewise.
2410         * testsuite/20_util/time_point/requirements/explicit_instantiation/
2411         explicit_instantiation.cc: Likewise.
2412         * testsuite/21_strings/basic_string/requirements/
2413         explicit_instantiation/char16_t/1.cc: Likewise.
2414         * testsuite/21_strings/basic_string/requirements/
2415         explicit_instantiation/char32_t/1.cc: Likewise.
2416         * testsuite/21_strings/basic_string_view/requirements/
2417         explicit_instantiation/char16_t/1.cc: Likewise.
2418         * testsuite/21_strings/basic_string_view/requirements/
2419         explicit_instantiation/char32_t/1.cc: Likewise.
2420         * testsuite/21_strings/char_traits/requirements/
2421         explicit_instantiation/char16_t/1.cc: Likewise.
2422         * testsuite/21_strings/char_traits/requirements/
2423         explicit_instantiation/char32_t/1.cc: Likewise.
2424         * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
2425         * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
2426         * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
2427         * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
2428         Likewise.
2429         * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
2430         Likewise.
2431         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
2432         Likewise.
2433         * testsuite/22_locale/codecvt/utf8.cc: Likewise.
2434         * testsuite/23_containers/vector/bool/72847.cc: Likewise.
2435         * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
2436         Likewise.
2437         * testsuite/experimental/string_view/requirements/
2438         explicit_instantiation/char16_t/1.cc: Likewise.
2439         * testsuite/experimental/string_view/requirements/
2440         explicit_instantiation/char32_t/1.cc: Likewise.
2441         * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
2442         1.cc: Likewise.
2443         * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
2444         1.cc: Likewise.
2446         * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2447         (random_condition, throw_value_random, throw_allocator_random)
2448         (std::hash<throw_value_random>): Do not define when <tr1/random> is
2449         not usable.
2450         * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
2451         define transactional memory support when <stdint.h> is not usable.
2453         * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
2454         implementation that doesn't depend on <stdint.h> types.
2455         * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
2456         std::size_t when std::uintptr_t is not usable.
2457         [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
2458         (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
2459         Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
2461         * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2462         (hash<u16string>, hash<u32string>): Remove dependency on
2463         _GLIBCXX_USE_C99_STDINT_TR1.
2464         * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2465         (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
2466         _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
2467         __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
2468         * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2469         (codecvt<char16_t, char, mbstate_t>)
2470         (codecvt<char32_t, char, mbstate_t>)
2471         (codecvt_byname<char16_t, char, mbstate_t>)
2472         (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
2473         on _GLIBCXX_USE_C99_STDINT_TR1.
2474         * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2475         (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
2476         * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2477         (char_traits<char16_t>, char_traits<char32_t>)
2478         (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
2479         on _GLIBCXX_USE_C99_STDINT_TR1.
2480         * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
2481         (u16string_view, u32string_view, hash<u16string_view>)
2482         (hash<u32string_view>, operator""sv(const char16_t, size_t))
2483         (operator""sv(const char32_t, size_t)): Likewise.
2484         * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2485         (hash<__u16vstring>, hash<__u32vstring>): Likewise.
2486         * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2487         (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
2488         (__u32sso_string, __u32rc_string): Likewise.
2489         * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
2490         (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
2491         * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
2492         (u16string_view, u32string_view, hash<u16string_view>)
2493         (hash<u32string_view>, operator""sv(const char16_t, size_t))
2494         (operator""sv(const char32_t, size_t)): Likewise.
2495         * src/c++11/codecvt.cc: Likewise.
2496         * src/c++98/locale_init.cc: Likewise.
2497         * src/c++98/localename.cc: Likewise.
2499         * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2500         (__atomic_futex_unsigned_base): Remove dependency on
2501         _GLIBCXX_USE_C99_STDINT_TR1 macro.
2502         * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2503         (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
2504         * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
2505         (uintmax_t): Define using predefined macros.
2506         * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
2507         (time_point, system_clock, high_resolution_clock, steady_clock): Remove
2508         dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
2509         (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
2510         [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
2511         long long when <stdint.h> is not usable.
2512         * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
2513         (condition_variable, condition_variable_any): Remove dependency on
2514         _GLIBCXX_USE_C99_STDINT_TR1.
2515         * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
2516         (packaged_task, async): Likewise.
2517         * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
2518         (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
2519         (once_flag, call_once): Likewise.
2520         * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
2521         * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
2522         (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
2523         * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
2524         (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
2525         (this_thread::sleep_until): Likewise.
2526         * src/c++11/chrono.cc: Remove dependency on
2527         _GLIBCXX_USE_C99_STDINT_TR1 macro.
2528         * src/c++11/condition_variable.cc: Likewise.
2529         * src/c++11/futex.cc: Likewise.
2530         * src/c++11/future.cc: Likewise.
2531         * src/c++11/mutex.cc: Likewise.
2532         * src/c++11/thread.cc: Likewise.
2533         * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
2534         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
2535         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
2536         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
2537         * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
2538         * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
2540 2018-07-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2542         PR libstdc++/77691
2543         * testsuite/experimental/memory_resource/new_delete_resource.cc:
2544         xfail execution on 32-bit Solaris/x86.
2546 2018-07-26  Marc Glisse  <marc.glisse@inria.fr>
2548         * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
2549         (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
2550         (vector::_M_move_assign): Reorder the swaps.
2552 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
2554         PR libstdc++/86676
2555         * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
2556         same alignment for post-release allocation.
2558 2018-07-25  Jonathan Wakely  <jwakely@redhat.com>
2560         PR libstdc++/86676
2561         * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
2562         buffer being misaligned and so returned pointer not being at start.
2564         * include/experimental/memory_resource: Include <cstddef> header.
2566         * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
2567         * src/Makefile.am: Add comment.
2568         * src/c++17/Makefile.in: Regenerate.
2570         * include/Makefile.am: Add new <bits/unique_lock.h> header.
2571         * include/Makefile.in: Regenerate.
2572         * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
2573         (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
2574         (unique_lock): Move definition to ...
2575         * include/bits/unique_lock.h: New header.
2576         [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
2577         [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
2578         (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
2579         (unique_lock::try_lock_for): Define only when <chrono> is usable.
2580         * include/std/condition_variable: Include <bits/unique_lock.h>.
2581         * include/std/mutex: Likewise.
2583 2018-07-24  Jonathan Wakely  <jwakely@redhat.com>
2585         * config/abi/pre/gnu.ver: Export new symbols.
2586         * configure: Regenerate.
2587         * include/Makefile.am: Add new <memory_resource> header.
2588         * include/Makefile.in: Regenerate.
2589         * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
2590         * include/std/memory_resource: New header.
2591         (memory_resource, polymorphic_allocator, new_delete_resource)
2592         (null_memory_resource, set_default_resource, get_default_resource)
2593         (pool_options, monotonic_buffer_resource): Define.
2594         * src/Makefile.am: Add c++17 directory.
2595         * src/Makefile.in: Regenerate.
2596         * src/c++11/Makefile.am: Fix comment.
2597         * src/c++17/Makefile.am: Add makefile for new sub-directory.
2598         * src/c++17/Makefile.in: Generate.
2599         * src/c++17/memory_resource.cc: New.
2600         (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
2601         (default_res, new_delete_resource, null_memory_resource)
2602         (set_default_resource, get_default_resource): Define.
2603         * testsuite/20_util/memory_resource/1.cc: New test.
2604         * testsuite/20_util/memory_resource/2.cc: New test.
2605         * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
2606         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
2607         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
2608         * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
2609         * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
2610         New test.
2611         * testsuite/20_util/polymorphic_allocator/1.cc: New test.
2612         * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
2613         * testsuite/20_util/polymorphic_allocator/select.cc: New test.
2614         * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
2615         Define concrete memory resource for testing.
2616         (__gnu_test::default_resource_mgr): Define RAII helper for changing
2617         default resource.
2619         PR libstdc++/86658
2620         * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
2621         parameter by reference, to avoid copying invalid iterators.
2622         * testsuite/25_algorithms/copy/86658.cc: New test.
2624         * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
2625         local variables for number of digits instead of type aliases.
2626         (__log2p1): Remove redundant branch also checked in __countl_zero.
2628         * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
2629         conditions. Add comments.
2630         * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
2631         * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
2632         * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
2634         * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
2635         (__uses_allocator_helper): Check conditions directly instead of
2636         using __is_erased_or_convertible.
2638         * include/experimental/memory_resource: Adjust comments and
2639         whitespace.
2640         (__resource_adaptor_imp): Add second template parameter for type of
2641         memory resource base class.
2642         (memory_resource): Define default constructor, destructor, copy
2643         constructor and copy assignment operator as defaulted.
2645         PR libstdc++/70966
2646         * include/experimental/memory_resource (__get_default_resource): Use
2647         placement new to create an object with dynamic storage duration.
2649 2018-07-23  Jonathan Wakely  <jwakely@redhat.com>
2651         PR libstdc++/70940
2652         * include/experimental/memory_resource
2653         (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
2654         (__resource_adaptor_common::__guaranteed_alignment): New helper to
2655         give maximum alignment an allocator guarantees. Specialize for known
2656         allocators using new and malloc.
2657         (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
2658         (__resource_adaptor_imp::do_deallocate): Likewise.
2659         * testsuite/experimental/memory_resource/new_delete_resource.cc:
2660         Check that new and delete are called with expected sizes.
2662 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
2664         PR libstdc++/86595
2665         * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
2666         noexcept.
2668 2018-07-20  Fangrui Song  <maskray@google.com>
2670         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
2671         _GLIBCXX_VISIBILITY(default).
2673 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
2675         PR libstdc++/86603
2676         * include/std/version: Move __cpp_lib_list_remove_return_type macro.
2678 2018-07-19  Jonathan Wakely  <jwakely@redhat.com>
2680         * include/std/type_traits (__is_member_object_pointer_helper): Use
2681         __not_<is_function<_Tp>>::type instead of integral_constant.
2682         (__is_member_function_pointer_helper): Likewise for
2683         is_function<_Tp>::type.
2684         (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
2685         (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
2686         (is_trivially_constructible): Remove redundant use of
2687         is_constructible.
2688         (__is_trivially_copy_assignable_impl): Remove redundant use of
2689         is_copy_assignable.
2690         (__is_trivially_move_assignable_impl): Remove redundant use of
2691         is_move_assignable.
2692         (is_trivially_destructible): Use __bool_constant.
2693         * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
2694         tests for scalar types.
2696 2018-07-19  Glen Joseph Fernandes  <glenjofe@gmail.com>
2698         * include/bits/stl_algobase.h (__copy_move_a): Used
2699         __is_trivially_copyable.
2700         (__copy_move_backward_a): Likewise.
2701         * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
2702         New test.
2704 2018-07-17  Jonathan Wakely  <jwakely@redhat.com>
2706         PR libstdc++/86450
2707         * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
2708         (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
2709         * configure: Regenerate.
2710         * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
2711         * doc/Makefile.in: Regenerate.
2712         * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
2713         * include/Makefile.in: Regenerate.
2714         * libsupc++/Makefile.in: Regenerate.
2715         * po/Makefile.in: Regenerate.
2716         * python/Makefile.in: Regenerate.
2717         * src/Makefile.in: Regenerate.
2718         * src/c++11/Makefile.in: Regenerate.
2719         * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
2720         from -Wabi=2 that don't affect exported symbols.
2721         * src/c++98/Makefile.in: Regenerate.
2722         * src/filesystem/Makefile.in: Regenerate.
2723         * testsuite/Makefile.in: Regenerate.
2725         * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
2726         (_Async_state_common::_M_join): Simplify use of std::call_once and
2727         corresponding explicit instantiation.
2728         (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
2729         (__bind_simple): Remove definitions and explicit instantiation that
2730         are not required by exported symbols.
2732 2018-07-16  Jonathan Wakely  <jwakely@redhat.com>
2734         * scripts/create_testsuite_files: Fix typo in comment.
2736         PR libstdc++/86537
2737         * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
2738         non-standard partial specialization.
2739         * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
2740         (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
2741         * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
2743 2018-07-16  Andreas Krebbel  <krebbel@linux.ibm.com>
2745         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
2746         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
2747         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
2749 2018-07-06  François Dumont  <fdumont@gcc.gnu.org>
2751         * include/debug/functions.h (__gnu_debug::__check_string): Move...
2752         * include/debug/string (__gnu_debug::__check_string): ... here.
2753         (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
2754         (__glibcxx_check_string_n_constructor): New.
2755         (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
2756         Use latter.
2757         (__glibcxx_check_string_constructor): New.
2758         (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
2759         Use latter.
2760         * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
2761         * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
2763 2018-07-06  Jonathan Wakely  <jwakely@redhat.com>
2765         PR libstdc++/84928 use std::move in <numeric> algorithms
2766         * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
2767         conditionally move, according to __cplusplus value.
2768         (accumulate, inner_product, partial_sum, adjacent_difference): Use
2769         _GLIBCXX_MOVE_IF_20.
2770         * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
2771         * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
2772         * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
2773         * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
2775         * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
2777         P0935R0 Eradicating unnecessarily explicit default constructors
2778         * config/abi/pre/gnu.ver: Tighten existing patterns and export new
2779         default constructor symbols.
2780         * include/std/sstream (basic_stringbuf, basic_istringstream)
2781         (basic_ostringstream, basic_stringstream): Remove default arguments
2782         from explicit constructors taking ios_base::openmode and add separate
2783         non-explicit default constructors.
2784         * testsuite/27_io/basic_istringstream/cons/default.cc: New.
2785         * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
2786         * testsuite/27_io/basic_stringstream/cons/default.cc: New.
2787         * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
2788         * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
2790         * include/std/variant (__accepted_index): Use void_t.
2792 2018-07-05  Jonathan Wakely  <jwakely@redhat.com>
2794         PR libstdc++/85831
2795         * config/abi/pre/gnu.ver: Export move constructors and move
2796         assignment operators for std::logic_error and std::runtime_error.
2797         * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
2798         _GLIBCXX_USE_NOEXCEPT.
2799         (logic_error, runtime_error): Declare move constructors and move
2800         assignment operators. When not declared already, define copy
2801         constructors and copy assignment operators as explicit-defaulted.
2802         (domain_error, invalid_argument, length_error, out_of_range)
2803         (overflow_error, underflow_error): Define move constructors and move
2804         assignment operators as explicitly-defaulted.
2805         * libsupc++/exception.h (exception): Likewise.
2806         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
2807         move constructors and move assignment operators as defaulted.
2808         * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
2809         assignment operators are defined.
2811         * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
2812         COW strings.
2813         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2814         Likewise.
2815         * testsuite/21_strings/basic_string/requirements/
2816         explicit_instantiation/debug.cc: Likewise.
2818         PR libstdc++/58265
2819         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2820         (basic_string::assign(basic_string&&)): Add conditional noexcept
2821         depending on the allocator's is_always_equal property (LWG 2063).
2822         * testsuite/21_strings/basic_string/modifiers/assign/char/
2823         move_assign.cc: Check for non-throwing exception specification.
2824         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
2825         move_assign.cc: Likewise.
2827         PR libstdc++/58265
2828         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2829         [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
2830         Add GLIBCXX_NOEXCEPT.
2831         (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
2832         to depend on the allocator's is_always_equal property (LWG 2063).
2833         (basic_string::swap(basic_string&)): Likewise.
2834         * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
2835         (basic_string::swap(basic_string&)): Likewise.
2836         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
2837         Check is_nothrow_move_assignable.
2838         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
2839         Check is_nothrow_move_assignable.
2840         * testsuite/21_strings/basic_string/cons/char/
2841         noexcept_move_construct.cc: Likewise.
2842         * testsuite/21_strings/basic_string/cons/wchar_t/
2843         noexcept_move_construct.cc: Likewise.
2845 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2847         P0646R1 Improving the Return Value of Erase-Like Algorithms I
2848         * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
2849         Define.
2850         (forward_list::__remove_return_type): Define typedef as size_type or
2851         void, according to __cplusplus value.
2852         (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2853         empty, according to __cplusplus value.
2854         (forward_list::remove, forward_list::unique): Use typedef and macro
2855         to change return type and add abi-tag for C++2a.
2856         (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
2857         typedef to change return type for C++2a.
2858         * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
2859         (forward_list::remove, forward_list::remove_if<Pred>)
2860         (forward_list::unique<BinPred>): Return number of removed elements
2861         for C++2a.
2862         * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
2863         (list::remove, list::unique, list::remove_if<Predicate>)
2864         (list::unique<BinaryPredicate>): Return number of removed elements
2865         for C++2a.
2866         * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
2867         (list::__remove_return_type): Define typedef as size_type or
2868         void, according to __cplusplus value.
2869         (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2870         empty, according to __cplusplus value.
2871         (list::remove, list::unique): Use typedef and macro to change return
2872         type and add abi-tag for C++2a.
2873         (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
2874         typedef to change return type for C++2a.
2875         * include/std/version (__cpp_lib_list_remove_return_type): Define.
2876         * testsuite/23_containers/forward_list/operations/
2877         remove_cxx20_return.cc: New.
2878         * testsuite/23_containers/forward_list/operations/
2879         unique_cxx20_return.cc: New.
2881         P0458R2 Checking for Existence of an Element in Associative Containers
2882         * include/bits/stl_map.h (map::contains): Add for C++2a.
2883         * include/bits/stl_multimap.h (multimap::contains): Likewise.
2884         * include/bits/stl_multiset.h (multiset::contains): Likewise.
2885         * include/bits/stl_set.h (set::contains): Likewise.
2886         * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
2887         (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
2888         (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
2889         (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
2890         * include/bits/unordered_map.h (unordered_map::contains)
2891         (unordered_multimap::contains): Add for C++2a.
2892         * include/bits/unordered_set.h (unordered_set::contains)
2893         (unordered_multiset::contains): Likewise.
2894         * testsuite/23_containers/map/operations/contains.cc: New.
2895         * testsuite/23_containers/multimap/operations/contains.cc: New.
2896         * testsuite/23_containers/multiset/operations/contains.cc: New.
2897         * testsuite/23_containers/set/operations/contains.cc: New.
2898         * testsuite/23_containers/unordered_map/operations/contains.cc: New.
2899         * testsuite/23_containers/unordered_multimap/operations/contains.cc:
2900         New.
2901         * testsuite/23_containers/unordered_multiset/operations/contains.cc:
2902         New.
2903         * testsuite/23_containers/unordered_set/operations/contains.cc: New.
2905 2018-07-04  François Dumont  <fdumont@gcc.gnu.org>
2907         PR libstdc++/86272
2908         * include/debug/string
2909         (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
2910         Use __glibcxx_check_insert_range.
2911         * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
2912         __gnu_debug::string when _GLIBCXX_DEBUG.
2913         * 21_strings/basic_string/init-list.cc: Likewise.
2914         * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
2915         * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
2916         * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
2917         * 21_strings/basic_string/types/1.cc: Likewise.
2919 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2921         * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
2922         target for std::random_device.
2923         * testsuite/26_numerics/random/random_device/cons/default.cc:
2924         Likewise.
2925         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
2926         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2927         * testsuite/experimental/random/randint.cc: Likewise.
2928         * testsuite/lib/libstdc++.exp
2929         (check_effective_target_random_device): New proc.
2931 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2932             Jakub Jelinek  <jakub@redhat.com>
2934         * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
2936 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
2938         PR libstdc++/86398
2939         * include/std/type_traits (is_trivially_constructible): Check
2940         is_constructible before __is_trivially_constructible.
2941         * testsuite/20_util/is_trivially_constructible/value.cc: Add more
2942         tests, including negative cases.
2943         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
2944         zero for dg-error lineno.
2945         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
2946         Likewise.
2948         * include/std/bit (__rotl, __rotr): Avoid branch.
2949         (_If_is_unsigned_integer): Use remove_cv_t.
2950         * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
2952 2018-07-03  Jonathan Wakely  <jwakely@redhat.com>
2954         P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
2955         * include/Makefile.am: Add new header.
2956         * include/Makefile.in: Regenerate.
2957         * include/precompiled/stdc++.h: Include new header.
2958         * include/std/bit: New header.
2959         (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
2960         (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
2961         Define for C++14.
2962         [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
2963         (countr_one, popcount): Define for C++2a. Also overload for std::byte.
2964         (ispow2, ceil2, floor2, log2p1): Define for C++2a.
2965         [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
2966         std::byte.
2967         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
2968         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
2969         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
2970         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
2971         * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
2972         * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
2973         * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
2974         * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
2975         * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
2976         * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
2978         * include/bits/alloc_traits.h: Remove redundant preprocessor
2979         condition.
2981 2018-07-03  François Dumont  <fdumont@gcc.gnu.org>
2983         * include/bits/stl_algobase.h (__niter_wrap): New.
2984         (__copy_move_a2(_II, _II, _OI)): Use latter.
2985         (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
2986         (fill_n(_OI, _Size, const _Tp&)): Likewise.
2987         (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
2988         * include/debug/stl_iterator.h
2989         (std::__niter_base(const __gnu_cxx::_Safe_iterator<
2990         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
2991         * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
2992         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
2994 2018-07-02  Jonathan Wakely  <jwakely@redhat.com>
2996         P0758R1 Implicit conversion traits
2997         * include/std/type_traits [__cplusplus > 201703]
2998         (__is_convertible_helper::__is_nothrow_type): Define new member.
2999         (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
3000         noexcept.
3001         (__is_convertible_helper<_From, _To, false>::__test_nothrow)
3002         (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
3003         new members.
3004         (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
3005         * testsuite/20_util/is_nothrow_convertible/value.cc: New.
3006         * testsuite/20_util/is_nothrow_convertible/requirements/
3007         explicit_instantiation.cc: New.
3008         * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
3009         New.
3011         P0887R1 The identity metafunction
3012         * include/std/type_traits (type_identity, type_identity_t): Define
3013         for C++2a.
3014         * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
3015         * testsuite/20_util/type_identity/requirements/
3016         explicit_instantiation.cc:New.
3017         * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
3019         * include/bits/regex.h (sub_match::operator string_type): Call str().
3020         (sub_match::compare): Use _M_str() instead of str().
3021         (sub_match::_M_compare): New public function.
3022         (sub_match::__string_view): New helper type.
3023         (sub_match::_M_str): New overloaded functions to avoid creating a
3024         string_type object when not needed.
3025         (operator==, operator!=, operator<, operator>, operator<=, operator>=):
3026         Use sub_match::_M_compare instead of creating string_type objects.
3027         Fix Doxygen comments.
3028         * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
3029         (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
3030         simplify.
3031         (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
3032         __enable_if_t.
3033         * include/std/type_traits (__enable_if_t): Define for C++11.
3034         * testsuite/28_regex/sub_match/compare.cc: New.
3035         * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
3036         trait.
3037         (input_iterator_wrapper): Use remove_cv for value_type argument of
3038         std::iterator base class.
3040 2018-06-29  Jonathan Wakely  <jwakely@redhat.com>
3042         * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
3043         Add whitespace to dejagnu directive.
3044         * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
3046 2018-06-27  François Dumont  <fdumont@gcc.gnu.org>
3048         * include/bits/stl_vector.h
3049         (struct _Vector_base<>::_Vector_impl_data): New.
3050         (struct _Vector_base<>::_Vector_impl): Inherit from latter.
3051         (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
3052         (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
3053         (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
3054         (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
3055         (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
3056         (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
3057         (_Vector_base()): Default.
3058         (_Vector_base(_Vector_base&&)): Default.
3059         (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
3060         (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
3061         (_Vector_base::_M_create_storage(size_t)): Make protected.
3062         (vector()): Default.
3063         (vector(vector&&)): Default.
3064         (vector(vector&&, const allocator_type&, true_type)): New.
3065         (vector(vector&&, const allocator_type&, false_type)): New.
3066         (vector(vector&&, const allocator_type&)): Use latters.
3067         (vector(_InputIte, _InputIte, const allocator_type&)): Call
3068         _M_range_initialize directly.
3069         * include/debug/vector
3070         (vector(vector&&, const allocator_type&)): Add noexcept qualification.
3071         * testsuite/23_containers/vector/allocator/default_init.cc: New.
3072         * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
3073         static assertions.
3075 2018-06-27  Jonathan Wakely  <jwakely@redhat.com>
3077         * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
3078         (__is_byte<byte>): Define specialization for std::byte.
3080         PR libstdc++/86138
3081         * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
3082         Declare explicit instantiations of COW empty reps and I/O functions.
3084 2018-06-26  David Edelsohn  <dje.gcc@gmail.com>
3086         * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
3087         directives.
3088         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
3090 2018-06-26  Jonathan Wakely  <jwakely@redhat.com>
3092         * include/bits/regex.tcc (regex_iterator::operator==): Add missing
3093         noexcept.
3095 2018-06-25  Jonathan Wakely  <jwakely@redhat.com>
3097         PR libstdc++/86112
3098         * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
3099         Replace dict comprehension.
3101         PR libstdc++/81092
3102         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3104         PR libstdc++/86292
3105         * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
3106         Add try-catch block.
3107         * testsuite/23_containers/vector/cons/86292.cc: New.
3109         * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
3111         * include/experimental/algorithm (sample, shuffle): Add new overloads
3112         using per-thread random number engine.
3113         * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
3114         dependencies by using __gnu_test::test_container.
3115         * testsuite/experimental/algorithm/sample-2.cc: New.
3116         * testsuite/experimental/algorithm/shuffle.cc: New.
3118 2018-06-22  Jonathan Wakely  <jwakely@redhat.com>
3120         * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
3121         different size_t mangling on 32-bit targets.
3123         PR libstdc++/86280
3124         * include/experimental/memory_resource
3125         (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
3126         enough for result of left shift.
3128         PR libstdc++/86138
3129         * include/bits/basic_string.tcc:
3130         [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
3131         (basic_string<char>::_Rep::_S_empty_rep_storage)
3132         (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
3133         instantiation declarations.
3134         [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
3135         explicit instantiation declarations.
3136         * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
3137         * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
3139 2018-06-21  Jonathan Wakely  <jwakely@redhat.com>
3141         PR libstdc++/83328
3142         * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
3143         * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
3144         * configure: Regenerate.
3145         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3146         (basic_string::insert(const_iterator, initializer_list<C>)): Add.
3147         [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
3148         (basic_string::insert(iterator, initializer_list<C>)): Suppress
3149         definition.
3150         * include/debug/string (basic_string::insert(iterator, C)): Change
3151         first parameter to const_iterator.
3152         (basic_string::insert(iterator, size_type, C)): Likewise. Change
3153         return type to iterator.
3154         (basic_string::insert(iterator, InputIterator, InputIterator)):
3155         Likewise.
3156         (basic_string::insert(iterator, initializer_list<C>)): Change first
3157         parameter to const_iterator and return type to iterator.
3158         * src/c++11/string-inst.cc: Extend comment.
3159         * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
3160         New.
3161         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
3162         New.
3163         * testsuite/util/testsuite_abi.cc: Add new symbol version.
3165         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3167         PR libstdc++/70940
3168         * include/experimental/memory_resource
3169         (__resource_adaptor_imp::do_deallocate): Add missing return.
3170         * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
3171         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
3172         resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
3173         __gnu_cxx::malloc_allocator.
3175         PR libstdc++/70940
3176         * include/experimental/memory_resource (__resource_adaptor_common):
3177         New base class.
3178         (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
3179         pointer from unaligned, and vice versa.
3180         (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
3181         allocated pointer to meet alignment request.
3182         (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
3183         original pointer for deallocation.
3184         (__resource_adaptor_imp::do_is_equal): Reformat.
3185         (__resource_adaptor_imp::_S_aligned_size): Remove.
3186         (__resource_adaptor_imp::_S_supported): Remove.
3187         (new_delete_resource): Use __gnu_cxx::new_allocator.
3188         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
3189         extended alignments and use debug_allocator to check for matching
3190         allocate/deallocate pairs.
3192 2018-06-21  François Dumont  <fdumont@gcc.gnu.org>
3194         * include/debug/safe_iterator.h
3195         (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
3196         Compare __x base iterator with a value-initialized iterator of the
3197         same type.
3199 2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
3201         PR libstdc++/70966
3202         * include/experimental/memory_resource (__resource_adaptor_imp): Add
3203         static assertions to enforce requirements on pointer types.
3204         (__resource_adaptor_imp::get_allocator()): Add noexcept.
3205         (new_delete_resource, null_memory_resource): Return address of an
3206         object with dynamic storage duration.
3207         (__null_memory_resource): Remove.
3208         * testsuite/experimental/memory_resource/70966.cc: New.
3210         * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
3211         missed from recent commit.
3213 2018-06-19  Jonathan Wakely  <jwakely@redhat.com>
3215         * include/std/utility: Remove unused <exception> header.
3217 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
3219         LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
3220         * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
3221         (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
3222         a specialization of std::pair.
3223         * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
3224         pair elements are constructed correctly.
3226         LWG 2989 hide path iostream operators from normal lookup
3227         * include/bits/fs_path.h (operator<<, operator>>): Define inline as
3228         friends.
3229         * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
3231         LWG 3050 Fix cv-qualification of convertibility constraints
3232         * include/std/chrono (duration, operator*, operator/, operator%): Use
3233         const-qualified type as source type in is_convertible constraints.
3234         * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
3235         * testsuite/20_util/duration/cons/dr3050.cc: New.
3236         * testsuite/20_util/duration/literals/range.cc: Rename to...
3237         * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
3238         dg-error lineno.
3240 2018-06-18  Maya Rashish  <coypu@sdf.org>
3242         * crossconfig.m4: Handle OpenBSD just like NetBSD.
3243         * configure: Rebuilt.
3245 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
3247         P0754R2 <version> header
3248         * include/Makefile.am: Add new header.
3249         * include/Makefile.in: Regenerate.
3250         * include/bits/c++config: Change doxygen comment to suggest <version>
3251         instead of <iosfwd>.
3252         * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
3253         unconditionally.  Add C++17 and C++20 headers.
3254         * include/std/version: New header.
3255         * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
3256         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
3257         * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
3258         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
3259         * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
3260         * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
3261         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
3262         New.
3263         * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
3264         * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
3265         * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
3266         * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
3267         * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
3268         * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
3269         * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
3270         New.
3271         * testsuite/18_support/headers/version/macros.cc: New.
3272         * testsuite/18_support/headers/version/macros.cc: New.
3274         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
3275         enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
3276         symlink.
3277         * config.h.in: Regenerate.
3278         * configure: Regenerate.
3279         * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
3281         LWG 3035. std::allocator's constructors should be constexpr
3282         * include/bits/allocator.h (allocator): Add constexpr to constructors
3283         for C++2a. Replace dynamic exception specifications with NOTHROW
3284         macro.
3285         (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
3286         NOTHROW.
3287         * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
3288         * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
3289         to constructors for C++2a.
3290         * include/ext/new_allocator.h (new_allocator): Likewise.
3292 2018-06-16  Jonathan Wakely  <jwakely@redhat.com>
3294         LWG 3076 basic_string CTAD ambiguity
3295         * doc/xml/manual/intro.xml: Document LWG 3076 change.
3296         * include/bits/basic_string.h
3297         [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
3298         (basic_string(const _CharT*, const _Alloc&)): Turn into a function
3299         template constrained by _RequireAllocator.
3300         (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
3301         * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
3302         Define.
3303         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
3304         deduction
3305         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3306         Likewise.
3308 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
3310         PR libstdc++/86169
3311         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3312         (basic_string::data()): Unshare string.
3313         * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
3314         New.
3316         * include/std/string_view (basic_string_view(const CharT*)): Remove
3317         check for null pointer and add nonnull attribute.
3318         (compare(const CharT*), compare(size_type, size_type, const CharT*))
3319         (find(const CharT*, size_type), rfind(const CharT*, size_type))
3320         (find_first_of(const CharT*, size_type))
3321         (find_last_of(const CharT*, size_type))
3322         (find_first_not_of(const CharT*, size_type))
3323         (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
3324         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
3325         * testsuite/21_strings/basic_string_view/operations/compare/char/
3326         nonnull.cc: New.
3327         * testsuite/21_strings/basic_string_view/operations/find/char/
3328         nonnull.cc: New.
3329         * testsuite/21_strings/basic_string_view/operations/rfind/char/
3330         nonnull.cc: New.
3332         PR libstdc++/86168
3333         * include/bits/random.h (random_device(const string&)): Remove
3334         default argument.
3336         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
3337         define for C++17 and above.
3339         LWG 2993 reference_wrapper<T> conversion from T&&
3340         * doc/xml/manual/intro.xml: Document LWG 2993 change.
3341         * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
3342         (reference_wrapper(_Tp&&)): Remove.
3343         (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
3344         template.
3345         (reference_wrapper): Add deduction guide.
3346         * testsuite/20_util/reference_wrapper/deduction.cc: New.
3347         * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
3349         LWG 3039 Unnecessary decay in thread and packaged_task
3350         * include/std/future (__constrain_pkgdtask): Replace with ...
3351         (packaged_task::__not_same): New alias template, using
3352         __remove_cvref_t instead of decay.
3353         * include/std/thread (thread::__not_same): Add comment.
3355 2018-06-14  Jonathan Wakely  <jwakely@redhat.com>
3357         LWG 3075 basic_string needs deduction guides from basic_string_view
3358         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
3359         deduction from string views.
3360         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3361         Likewise.
3363         LWG 3074 make scalar types non-deduced in valarray non-member functions
3364         * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
3365         scalar parameters to be a non-deduced context.
3366         * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
3367         whitespace.
3368         * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
3369         * testsuite/26_numerics/valarray/transcend.cc: New.
3371         * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
3372         Move back to <utility>.
3373         * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
3374         Restore to here.
3376         P0935R0 Eradicating unnecessarily explicit default constructors
3377         * include/backward/strstream (strstreambuf): Add non-explicit default
3378         constructor.
3379         * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
3380         Likewise.
3381         * include/bits/regex.h (match_results): Likewise.
3382         * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
3383         default constructor.
3384         * testsuite/22_locale/conversions/string/1.cc: Likewise.
3385         * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
3386         * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
3388         * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
3389         macro from <utility> and change type to long.
3390         * include/std/utility (__cpp_lib_tuple_element_t): Remove.
3391         * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
3392         macro.
3394         P0935R0 Eradicating unnecessarily explicit default constructors
3395         * include/bits/random.h (uniform_real_distribution::param_type)
3396         (normal_distribution::param_type, lognormal_distribution::param_type)
3397         (gamma_distribution::param_type, chi_squared_distribution::param_type)
3398         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
3399         (student_t_distribution::param_type)
3400         (bernoulli_distribution::param_type)
3401         (binomial_distribution::param_type)
3402         (geometric_distribution::param_type)
3403         (negative_binomial_distribution::param_type)
3404         (poisson_distribution::param_type)
3405         (exponential_distribution::param_type)
3406         (weibull_distribution::param_type)
3407         (extreme_value_distribution::param_type): Add non-explicit default
3408         constructors. Remove default argument for first parameter of explicit
3409         constructors.
3410         * include/bits/uniform_int_dist.h
3411         (uniform_int_distribution::param_type): Likewise.
3412         * include/ext/random
3413         (beta_distribution::param_type, rice_distribution::param_type)
3414         (nakagami_distribution::param_type, pareto_distribution::param_type)
3415         (k_distribution::param_type, arcsine_distribution::param_type)
3416         (hoyt_distribution::param_type, triangular_distribution::param_type)
3417         (von_mises_distribution::param_type)
3418         (hypergeometric_distribution::param_type)
3419         (logistic_distribution::param_type)
3420         (uniform_inside_sphere_distribution::param_type): Likewise.
3421         (uniform_on_sphere_distribution::param_type): Make default constructor
3422         non-explicit.
3423         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
3424         Test param_type for non-explicit default constructor.
3425         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
3426         Likewise.
3427         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
3428         Likewise.
3429         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
3430         Likewise.
3431         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
3432         Likewise.
3433         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
3434         Likewise.
3435         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
3436         Likewise.
3437         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
3438         Likewise.
3439         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
3440         Likewise.
3441         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
3442         Likewise.
3443         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
3444         Likewise.
3445         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
3446         Likewise.
3447         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
3448         Likewise.
3449         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
3450         Likewise.
3451         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
3452         Likewise.
3453         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
3454         Likewise.
3455         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
3456         Likewise.
3457         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
3458         Likewise.
3459         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
3460         Likewise.
3461         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
3462         Likewise.
3463         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
3464         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
3465         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
3466         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
3467         Likewise.
3468         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
3469         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
3470         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
3471         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
3472         Likewise.
3473         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
3474         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
3475         * testsuite/ext/random/triangular_distribution/cons/default.cc:
3476         Likewise.
3477         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
3478         Likewise.
3479         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
3480         Likewise.
3481         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
3482         Likewise.
3484 2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
3485             Jonathan Wakely  <jwakely@redhat.com>
3487         PR libstdc++/83982
3488         * include/bits/vector.tcc (vector::_M_default_append(size_type)):
3489         Default-construct new elements before moving existing ones.
3490         * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
3491         New.
3493 2018-06-13  Jonathan Wakely  <jwakely@redhat.com>
3495         PR libstdc++/86127
3496         * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
3497         unused typedef.
3498         (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
3499         Use node allocator to create and destroy elements.
3500         (forward_list::_Tp_alloc_type): Remove unused typedef.
3501         (forward_list::_Alloc_traits): Use allocator_traits instead of
3502         __gnu_cxx::__alloc_traits.
3504 2018-06-13  François Dumont  <fdumont@gcc.gnu.org>
3506         * include/debug/helper_functions.h
3507         (__gnu_debug::_Safe_iterator<>): Add declaration.
3508         (__can_advance(_Ite, _Size)): New.
3509         (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
3510         * include/debug/functions.h
3511         (__gnu_debug::_Safe_iterator<>): Remove declaration.
3512         * include/debug/stl_iterator.h
3513         (__can_advance(const _Safe_iterator<>&)): New definition.
3514         * include/debug/stl_iterator.h
3515         (__can_advance(const std::reverse_iterator<>&, _Size)): New.
3516         (__can_advance(const std::move_iterator<>&, _Size)): New.
3517         * include/debug/macros.h (__glibcxx_check_can_increment): New.
3518         * include/debug/debug.h (__glibcxx_requires_can_increment): New.
3519         * include/bits/stl_algobase.h (fill_n): Use latter.
3520         * testsuite/25_algorithms/fill_n/2.cc: New.
3521         * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
3522         * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
3523         * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
3524         * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
3526         * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
3527         (__glibcxx_requires_can_decrement_range): New.
3529 2018-06-12  François Dumont  <fdumont@gcc.gnu.org>
3531         * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
3532         (__glibcxx_check_can_decrement_range): New.
3533         * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
3534         __glibcxx_requires_can_increment_range.
3535         (std::move(_II, _II, _OI)): Likewise.
3536         (std::copy_backward(_BI, _BI, _BI2)): Use
3537         __glibcxx_requires_can_decrement_range.
3538         (std::move_backward(_BI, _BI, _BI2)): Likewise.
3539         * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
3540         * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
3541         * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
3542         * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
3543         * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
3544         * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
3546 2018-06-12  Jonathan Wakely  <jwakely@redhat.com>
3548         P0935R0 Eradicating unnecessarily explicit default constructors
3549         * include/bits/random.h (linear_congruential_engine)
3550         (mersenne_twister_engine, subtract_with_carry_engine, random_device)
3551         (uniform_real_distribution, normal_distribution)
3552         (lognormal_distribution, gamma_distribution, chi_squared_distribution)
3553         (cauchy_distribution, fisher_f_distribution, student_t_distribution)
3554         (bernoulli_distribution, binomial_distribution,geometric_distribution)
3555         (negative_binomial_distribution, exponential_distribution)
3556         (weibull_distribution, extreme_value_distribution): Add non-explicit
3557         default constructors. Remove default argument for first parameter of
3558         explicit constructors.
3559         (piecewise_constant_distribution, piecewise_linear_distribution):
3560         Make default constructor non-explicit.
3561         * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
3562         non-explicit default constructors. Remove default argument for first
3563         parameter of explicit constructor.
3564         * include/ext/random
3565         (simd_fast_mersenne_twister_engine, beta_distribution)
3566         (rice_distribution, nakagami_distribution, pareto_distribution)
3567         (k_distribution, arcsine_distribution, hoyt_distribution)
3568         (triangular_distribution, von_mises_distribution)
3569         (hypergeometric_distribution, logistic_distribution)
3570         (uniform_inside_sphere_distribution): Likewise.
3571         (uniform_on_sphere_distribution): Make default constructor
3572         non-explicit.
3573         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
3574         Test for non-explicit default constructor. Fix references to standard.
3575         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
3576         Likewise.
3577         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
3578         Likewise.
3579         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
3580         Likewise.
3581         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
3582         Likewise.
3583         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
3584         Likewise.
3585         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
3586         Likewise.
3587         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
3588         Likewise.
3589         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
3590         Likewise.
3591         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
3592         Likewise.
3593         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
3594         Likewise.
3595         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
3596         Likewise.
3597         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
3598         Likewise.
3599         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
3600         Likewise.
3601         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
3602         Likewise.
3603         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
3604         Likewise.
3605         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
3606         Likewise.
3607         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
3608         Likewise.
3609         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
3610         Likewise.
3611         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
3612         Likewise.
3613         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
3614         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
3615         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
3616         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
3617         Likewise.
3618         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
3619         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
3620         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
3621         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
3622         Likewise.
3623         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
3624         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
3625         * testsuite/ext/random/triangular_distribution/cons/default.cc:
3626         Likewise.
3627         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
3628         Likewise.
3629         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
3630         Likewise.
3631         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
3632         Likewise.
3633         * testsuite/util/testsuite_common_types.h
3634         (implicitly_default_constructible): New helper.
3636 2018-06-08  Jonathan Wakely  <jwakely@redhat.com>
3638         * include/bits/ios_base.h (ios::Init::Init(const Init&))
3639         (ios::Init::operator=): Define as defaulted.
3640         * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
3641         Likewise.
3642         * include/bits/stream_iterator.h (istream_iterator::operator=)
3643         (ostream_iterator::operator=): Likewise.
3644         * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
3645         Likewise.
3646         * include/std/bitset (bitset::reference::reference(const reference&)):
3647         Likewise.
3648         * include/std/complex (complex<float>::complex(const complex&))
3649         (complex<double>::complex(const complex&))
3650         (complex<long double>::complex(const complex&)): Likewise.
3652 2018-06-07  Jonathan Wakely  <jwakely@redhat.com>
3654         * include/bits/regex.h (sub_match): Add noexcept to default
3655         constructor and length observer.
3656         (match_results): Add noexcept to default constructor and observers
3657         with no preconditions. Define destructor as defaulted.
3658         (operator==, operator!=, swap): Add noexcept.
3659         (regex_iterator): Add default member initializers and define default
3660         constructor and destructor as defaulted. Add noexcept to equality
3661         and dereference operators.
3663 2018-06-07  François Dumont  <fdumont@gcc.gnu.org>
3665         * src/c++11/debug.cc
3666         (_Safe_iterator_base::_M_detach()): Reset state only if needed.
3667         (_Safe_iterator_base::_M_detach_single()): Likewise.
3668         (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
3669         (_Safe_local_iterator_base::_M_detach_single()): Likewise.
3671 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
3673         * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
3674         move of const value.
3676 2018-06-06  Jakub Jelinek  <jakub@redhat.com>
3678         PR c++/86068
3679         * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
3680         rather than __cpp_transactional_memory >= 201505L.
3682 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
3684         PR libstdc++/86008
3685         * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
3686         Define new partial specialization.
3687         * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
3688         new overload.
3689         (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
3690         value not reference for iteration.
3691         * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
3692         comment.
3693         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
3694         * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
3695         comment.
3697 2018-06-05  Jonathan Wakely  <jwakely@redhat.com>
3699         * include/std/type_traits: Fix comment typos.
3701         * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
3702         mingw* targets.
3703         * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
3704         * testsuite/experimental/filesystem/operations/read_symlink.cc:
3705         Likewise.
3707 2018-06-05  François Dumont  <fdumont@gcc.gnu.org>
3709         * include/bits/stl_tempbuf.h
3710         (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
3711         (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
3712         * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
3713         * include/bits/stl_algo.h (__stable_partition): Adapt.
3714         (__inplace_merge): Adapt.
3715         (__stable_sort): Adapt.
3717 2018-06-04  Jonathan Wakely  <jwakely@redhat.com>
3719         PR libstdc++/85930
3720         * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
3721         unconditionally. Remove redundant declaration.
3722         [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
3723         alignment-specifier.
3725         * include/bits/postypes.h (fpos): Define special members as defaulted.
3727         PR libstdc++/85930
3728         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
3729         the static variable correctly.
3731 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
3733         PR libstdc++/78870 support std::filesystem on Windows
3734         * config.h.in: Regenerate.
3735         * configure: Regenerate.
3736         * configure.ac: Check for link, readlink and symlink.
3737         * include/bits/fs_path.h (path::operator/=(const path&)): Move
3738         definition out of class body.
3739         (path::is_absolute(), path::_M_append(path)): Likewise.
3740         (operator<<(basic_ostream, const path&)): Use std::quoted directly.
3741         (operator>>(basic_istream, path&)): Likewise.
3742         (u8path): Reorder definitions and fix Windows implementation.
3743         (path::is_absolute()): Define inline and fix for Windows.
3744         [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
3745         Define POSIX version inline.
3746         (path::_M_append(path)): Define inline.
3747         * include/experimental/bits/fs_path.h (path::is_absolute()): Move
3748         definition out of class body.
3749         (operator<<(basic_ostream, const path&)): Fix type of delimiter and
3750         escape characters.
3751         (operator>>(basic_istream, path&)): Likewise.
3752         (path::is_absolute()): Define inline and fix for Windows.
3753         * src/filesystem/dir-common.h (__gnu_posix): New namespace.
3754         (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
3755         (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
3756         Define as adaptors for Windows functions/types or as
3757         using-declarations for POSIX functions/types.
3758         (_Dir_base, get_file_type): Qualify names to use declarations from
3759         __gnu_posix namespace.
3760         (_Dir_base::is_dor_or_dotdot): New helper functions.
3761         * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
3762         names to use declarations from __gnu_posix namespace.
3763         * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
3764         (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
3765         (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
3766         (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
3767         (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
3768         (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
3769         Define as adaptors for Windows functions/types or as
3770         using-declarations for POSIX functions/types.
3771         (stat_type, do_copy_file): Qualify names to use declarations from
3772         __gnu_posix namespace.
3773         (do_space): Declare new function.
3774         (make_file_type): Only use S_ISLNK if defined.
3775         * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
3776         path::value_type not char.
3777         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
3778         names to use declarations from __gnu_posix namespace.
3779         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
3780         add implementation for Windows.
3781         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
3782         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
3783         [!_PC_PATH_MAX]: Don't use pathconf.
3784         [PATH_MAX]: Use if defined.
3785         (filesystem::current_path(const path&, error_code&))
3786         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
3787         (filesystem::last_write_time, filesystem::permissions): Use names
3788         from __gnu_posix.
3789         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
3790         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
3791         implementation for Windows.
3792         (filesystem::rename, filesystem::resize_file): Use names from
3793         __gnu_posix.
3794         (filesystem::space): Use do_space.
3795         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
3796         (filesystem::status, filesystem::symlink_status): Use names from
3797         __gnu_posix.
3798         (filesystem::temp_directory_path): Add implementation for Windows.
3799         * src/filesystem/path.cc (dot): Define constant.
3800         (path::replace_extension): Use dot.
3801         (path::_M_find_extension): Likewise. Use path::string_type not
3802         std::string.
3803         (path::_M_split_cmpts): Use dot.
3804         (filesystem_error::_M_get_what): Use u8string() not native().
3805         * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
3806         Qualify names to use declarations from __gnu_posix namespace.
3807         * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
3808         correct error_code.
3809         (filesystem::absolute(const path&, error_code&)): Add implementation
3810         for Windows.
3811         (char_ptr, filesystem::canonical): Use path::value_type not char.
3812         (do_copy_file): Use names from __gnu_posix.
3813         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
3814         sendfile.
3815         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
3816         names to use declarations from __gnu_posix namespace.
3817         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
3818         add implementation for Windows.
3819         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
3820         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
3821         [!_PC_PATH_MAX]: Don't use pathconf.
3822         [PATH_MAX]: Use if defined.
3823         (filesystem::current_path(const path&, error_code&))
3824         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
3825         (filesystem::last_write_time, filesystem::permissions): Use names
3826         from __gnu_posix.
3827         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
3828         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
3829         implementation for Windows.
3830         (filesystem::rename, filesystem::resize_file): Use names from
3831         __gnu_posix.
3832         (do_space): Define.
3833         (filesystem::space): Use do_space.
3834         (filesystem::status, filesystem::symlink_status): Use names from
3835         __gnu_posix.
3836         (filesystem::temp_directory_path): Add implementation for Windows.
3837         * src/filesystem/std-path.cc
3838         [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
3839         Define for Windows.
3840         (dot): Define constant.
3841         (path::replace_extension, is_dot): Use dot.
3842         (path::lexically_normal): Check _M_type instead of calling
3843         non-existent function.
3844         (path::_M_find_extension): Use dot. Use path::string_type not
3845         std::string.
3846         (path::_M_split_cmpts): Use dot.
3847         (filesystem_error::_M_get_what): Use u8string() not native().
3848         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
3849         use symlinks.
3850         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
3851         Likewise.
3852         * testsuite/27_io/filesystem/operations/absolute.cc: Use
3853         __gnu_test::root_path() instead of "/" and add Windows-specific tests.
3854         * testsuite/27_io/filesystem/operations/canonical.cc: Use
3855         path::string() to get narrow string, not path::native().
3856         * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
3857         with std::filesystem::path not std::basic_string.
3858         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
3859         * testsuite/27_io/filesystem/operations/exists.cc: Use
3860         __gnu_test::root_path() instead of "/".
3861         * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
3862         fstreams with std::filesystem::path not std::basic_string.
3863         * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
3864         path::string() to get narrow string.
3865         * testsuite/27_io/filesystem/operations/space.cc: Check results for
3866         errors, expect sensible values otherwise.
3867         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
3868         helpers for adjusting the environment on Windows.
3869         * testsuite/27_io/filesystem/path/append/path.cc: Test
3870         Windows-specific behaviour.
3871         * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
3872         of path::string_type objects.
3873         * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
3874         string to wide string on Windows.
3875         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
3876         for backslash as root-directory.
3877         * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
3878         path::string() to get narrow string.
3879         * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
3880         paths.
3881         * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
3882         not std::string.
3883         * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
3884         different definintion of absolute paths on Windows.
3885         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3886         Do not use symlinks.
3887         * testsuite/experimental/filesystem/operations/absolute.cc: Test
3888         Windows behaviour.
3889         * testsuite/experimental/filesystem/operations/copy.cc: Construct
3890         fstreams with NTCTS not std::basic_string.
3891         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
3892         * testsuite/experimental/filesystem/operations/exists.cc: Use
3893         __gnu_test::root_path() instead of "/".
3894         * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
3895         fstreams with NTCTS not std::basic_string.
3896         * testsuite/experimental/filesystem/operations/last_write_time.cc:
3897         Use path::string() to get narrow string.
3898         * testsuite/experimental/filesystem/operations/space.cc: Use
3899         __gnu_test::root_path() instead of "/".
3900         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3901         Add helpers for adjusting the environment on Windows.
3902         * testsuite/experimental/filesystem/path/append/path.cc: Use
3903         path::string() to get narrow strings for comparisons.
3904         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
3905         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
3906         Likewise.
3907         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
3908         * testsuite/experimental/filesystem/path/native/string.cc: Use
3909         string_type not std::string.
3910         * testsuite/experimental/filesystem/path/query/is_absolute.cc:
3911         Adjust for different definintion of absolute paths on Windows.
3912         * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
3913         function.
3914         (__gnu_test::scoped_file): Construct fstreams with NTCTS not
3915         std::basic_string.
3917 2018-05-31  Jonathan Wakely  <jwakely@redhat.com>
3919         PR libstdc++/85951
3920         * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
3921         uint_least16_t and uint_least32_t.
3922         (__make_unsigned<wchar_t>): Define unconditionally.
3923         (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
3924         typedefs.
3925         (__make_unsigned_selector_base): New type to provide helper templates.
3926         (__make_unsigned_selector<_Tp, false, true>): Reimplement using
3927         __make_unsigned_selector_base helpers.
3928         (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
3929         (__make_signed_selector<_Tp, true, false>): Remove intermediate
3930         typedefs.
3931         (__make_signed<wchar_t>, __make_signed<char16_t>)
3932         (__make_signed<char32_t>)): Define unconditionally.
3933         * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
3934         wchar_t, char16_t and char32_t are transformed correctly.
3935         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
3936         dg-error lineno.
3937         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
3938         wchar_t, char16_t and char32_t are transformed correctly.
3939         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
3940         dg-error lineno.
3942 2018-05-29  Jonathan Wakely  <jwakely@redhat.com>
3944         * include/std/variant (__erased_dtor): Qualify call to __get.
3946 2018-05-27  François Dumont  <fdumont@gcc.gnu.org>
3948         * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
3949         (_Rb_tree(const allocator_type&)): Use latter.
3950         * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
3951         (map(initializer_list<value_type>, const allocator_type&)): Likewise.
3952         (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3953         * include/bits/stl_multimap.h
3954         (multimap(const allocator_type&)): Likewise.
3955         (multimap(initializer_list<value_type>, const allocator_type&)):
3956         Likewise.
3957         (multimap(_InputIterator, _InputIterator, const allocator_type&)):
3958         Likewise.
3959         * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
3960         (set(initializer_list<value_type>, const allocator_type&)): Likewise.
3961         (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3962         * include/bits/stl_multiset.h
3963         (multiset(const allocator_type&)): Likewise.
3964         (multiset(initializer_list<value_type>, const allocator_type&)):
3965         Likewise.
3966         (multiset(_InputIterator, _InputIterator, const allocator_type&)):
3967         Likewise.
3969 2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
3971         PR libstdc++/85768
3972         * src/c++11/debug.cc: Remove backtrace usage.
3974 2018-05-24  Maya Rashish  <coypu@sdf.org>
3976         PR target/85904
3977         * crossconfig.m4: Test for aligned_alloc on netbsd.
3978         * configure: Regenerate.
3980 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
3982         PR libstdc++/69769
3983         PR libstdc++/85886
3984         * include/bits/atomic_base.h (__atomic_base::value_type)
3985         (__atomic_base::difference_type): Add new typedefs.
3986         * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
3987         (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
3988         (atomic<T*>::operator++, atomic<T*>::operator--)
3989         (atomic<T*>::operator+=, atomic<T*>::operator-=)
3990         (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
3991         to enforce C++17 requirement on pointer arithmetic.
3992         (__atomic_val_t, __atomic_diff_t): New alias templates.
3993         (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
3994         (atomic_compare_exchange_weak_explicit)
3995         (atomic_compare_exchange_strong_explicit, atomic_store)
3996         (atomic_exchange, atomic_compare_exchange_weak)
3997         (atomic_compare_exchange_strong): Use __atomic_val_t to make
3998         scalar parameters be non-deduced contexts.
3999         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
4000         (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
4001         atomic instead of __atomic_base, and use __atomic_diff_t for scalar
4002         parameters.
4003         (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
4004         (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
4005         (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
4006         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
4007         (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
4008         address types.
4009         * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
4010         * testsuite/29_atomics/atomic/69769.cc: New test.
4011         * testsuite/29_atomics/atomic/nonmembers.cc: New test.
4012         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
4013         Disable test for C++17 and later.
4014         * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
4015         * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
4016         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
4017         test.
4019 2018-05-23  Jonathan Wakely  <jwakely@redhat.com>
4021         * include/bits/fs_path.h (path::__is_encoded_char): Change from class
4022         template to alias template.
4023         (path::__value_type_is_char): Use remove_const_t.
4024         (path:_S_string_from_iter): New helper function.
4025         (path::_S_convert(InputIter, __null_terminated))
4026         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
4027         Use _S_string_from_iter.
4028         (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
4029         rep for COW strings.
4030         * include/experimental/bits/fs_path.h (path::__is_encoded_char):
4031         Change from class template to alias template.
4032         (path::__value_type_is_char): Use remove_const.
4033         (path:_S_string_from_iter): New helper function.
4034         (path::_S_convert(InputIter, __null_terminated))
4035         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
4036         Use _S_string_from_iter.
4037         * testsuite/27_io/filesystem/path/append/source.cc: Test appending
4038         wide strings.
4039         * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
4040         string equality, not path equivalence.
4041         * testsuite/27_io/filesystem/path/construct/format.cc: Check
4042         construction from std::string and std::wstring and input iterators.
4043         * testsuite/27_io/filesystem/path/construct/locale.cc: Check
4044         construction from iterators.
4045         * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
4046         exact string equality, not path equivalence.
4047         * testsuite/experimental/filesystem/path/construct/locale.cc: Check
4048         construction from iterators.
4050         * include/bits/fs_path.h (path::_M_type): Change default member
4051         initializer to _Filename.
4052         (path::begin): Create past-the-end iterator for empty path.
4053         * src/filesystem/std-path.cc (path::remove_filename()): Remove
4054         debugging check.
4055         (path::has_relative_path()): Return false for empty filenames.
4056         (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
4057         Fix offset of empty final component.
4058         * testsuite/27_io/filesystem/path/itr/components.cc: New.
4059         * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
4061 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
4063         Add support for opening file streams from wide character strings.
4064         * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
4065         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
4066         Define new overload.
4067         * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
4068         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
4069         Declare new overload.
4070         * configure.ac: Check for _wfopen.
4071         * crossconfig.m4: Likewise.
4072         * configure: Regenerate.
4073         * config.h.in: Regenerate.
4074         * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
4075         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
4076         Define new overload.
4077         * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
4078         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
4079         Declare new overload.
4080         [_GLIBCXX_HAVE__WFOPEN]
4081         (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4082         (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
4083         (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4084         (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
4085         (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4086         (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
4087         new overloads.
4088         * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
4089         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
4090         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
4091         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
4092         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
4093         * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
4094         * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
4096 2018-05-21  François Dumont  <fdumont@gcc.gnu.org>
4098         PR libstdc++/85845
4099         * include/bits/stl_tree.h
4100         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
4101         qualification.
4103 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
4105         * src/filesystem/std-ops.cc (absolute): Report an error for empty
4106         paths.
4107         (weakly_canonical(const path&)): Do not call canonical on empty path.
4108         (weakly_canonical(const path&, error_code&)): Likewise.
4109         * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
4111         PR libstdc++/85818
4112         * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
4113         dg-require-filesystem-ts.
4115         PR libstdc++/85843
4116         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
4117         initialize base class to avoid warnings.
4119 2018-05-19  Jonathan Wakely  <jwakely@redhat.com>
4121         * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
4122         [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
4123         little_endian element in bitmask.
4124         * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
4125         * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
4127 2018-05-18  François Dumont  <fdumont@gcc.gnu.org>
4129         * include/bits/stl_tree.h
4130         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
4131         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
4132         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
4133         (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
4134         * include/debug/map.h
4135         (map(map&&, const_allocator_type&)): Add noexcept qualitication.
4136         * include/debug/multimap.h
4137         (multimap(multimap&&, const_allocator_type&)): Likewise.
4138         * include/debug/set.h
4139         (set(set&&, const_allocator_type&)): Likewise.
4140         * include/debug/multiset.h
4141         (multiset(multiset&&, const_allocator_type&)): Likewise.
4142         * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
4143         Add checks.
4144         * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
4145         Add checks.
4146         * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
4147         Add checks.
4148         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
4149         Add checks.
4150         * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
4151         Add checks.
4152         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
4153         Add checks.
4154         * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
4155         Add checks.
4156         * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
4157         Add checks.
4159 2018-05-18  Jason Merrill  <jason@redhat.com>
4161         * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
4162         for conversion to const_iterator.  Add defaulted copy ops.
4163         * libsupc++/new (bad_alloc): Add defaulted copy ops.
4164         * libsupc++/exception.h (exception): Add defaulted copy ops.
4165         * include/std/system_error (system_error): Add defaulted copy ops.
4166         * include/std/stdexcept (domain_error, invalid_argument)
4167         (length_error, out_of_range, range_error, overflow_error)
4168         (underflow_error): Add defaulted copy ops.
4169         * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
4170         copy assignment.
4171         * include/bits/allocator.h (allocator): Add defaulted copy assignment.
4172         * include/ext/throw_allocator.h (condition_base): Add defaulted
4173         default and copy ctor and copy assignment.
4175 2018-05-18  Jonathan Wakely  <jwakely@redhat.com>
4177         PR libstdc++/85098
4178         * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
4179         (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
4180         (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
4181         (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
4182         definitions.
4183         * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
4184         whitespace.
4185         * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
4186         braces around body of do-while.
4187         * testsuite/28_regex/basic_regex/85098.cc: New
4189 2018-05-17  Jonathan Wakely  <jwakely@redhat.com>
4191         PR libstdc++/85818
4192         * src/filesystem/path.cc (path::preferred_separator): Add used
4193         attribute.
4194         * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
4196         PR libstdc++/85812
4197         * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
4198         * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
4199         Refactor to separate non-throwing and throwing implementations.
4200         [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
4201         if constructing the object throws.
4203 2018-05-15  Jonathan Wakely  <jwakely@redhat.com>
4205         PR libstdc++/85749
4206         * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
4207         (linear_congruential_engine, mersenne_twister_engine)
4208         (subtract_with_carry_engine, discard_block_engine)
4209         (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
4210         constrain function templates taking seed sequences.
4211         * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
4212         (mersenne_twister_engine::seed(_Sseq&))
4213         (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
4214         match declarations.
4215         * include/ext/random (simd_fast_mersenne_twister_engine): Use
4216         __is_seed_seq to constrain function templates taking seed sequences.
4217         * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
4218         Change return type to match declaration.
4219         * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
4220         New.
4221         * testsuite/26_numerics/random/independent_bits_engine/cons/
4222         seed_seq2.cc: New.
4223         * testsuite/26_numerics/random/linear_congruential_engine/cons/
4224         seed_seq2.cc: New.
4225         * testsuite/26_numerics/random/mersenne_twister_engine/cons/
4226         seed_seq2.cc: New.
4227         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
4228         * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
4229         New.
4230         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
4231         seed_seq2.cc: New.
4232         * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
4233         seed_seq2.cc: New.
4235         PR libstdc++/83891
4236         * include/bits/fs_path.h (path::is_absolute()): Use same definition
4237         for all operating systems.
4238         * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
4239         * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
4240         * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
4241         * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
4243         * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
4244         unused <vector> header.
4245         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
4246         * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
4247         * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
4248         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
4249         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
4250         Likewise.
4251         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
4252         Likewise.
4253         * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
4254         * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
4255         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
4256         * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
4257         * testsuite/experimental/filesystem/path/decompose/extension.cc:
4258         Likewise.
4259         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
4260         * testsuite/experimental/filesystem/path/query/has_extension.cc:
4261         Likewise.
4262         * testsuite/experimental/filesystem/path/query/has_filename.cc:
4263         Likewise.
4264         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
4265         Likewise.
4266         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
4267         Likewise.
4268         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
4269         Likewise.
4270         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
4271         Likewise.
4272         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
4273         Likewise.
4274         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
4275         * testsuite/experimental/filesystem/path/query/is_relative.cc:
4276         Likewise.
4278         PR libstdc++/84159
4279         * include/bits/fs_path.h (path::operator/=, path::append): Construct
4280         temporary path before calling _M_append.
4281         (path::_M_append): Change parameter to path and implement C++17
4282         semantics.
4283         * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
4284         and more examples from the standard.
4285         * testsuite/27_io/filesystem/path/append/source.cc: New.
4286         * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
4287         * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
4289         * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
4290         __invoke to prevent ADL.
4292 2018-05-14  Jonathan Wakely  <jwakely@redhat.com>
4294         PR libstdc++/81256
4295         * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
4296         exceptions from _M_terminate_output().
4297         * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
4298         exceptions from close().
4299         * testsuite/27_io/basic_filebuf/close/81256.cc: New.
4301         * include/bits/valarray_array.h (__valarray_get_memory): Remove.
4302         (__valarray_get_storage): Call operator new directly. Remove ignored
4303         top-level restrict qualifier and add malloc attribute instead.
4304         (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
4306         PR libstdc++/67554
4307         * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
4308         (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
4310         PR libstdc++/82966
4311         * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
4312         instead of type.
4313         * testsuite/23_containers/set/modifiers/node_swap.cc: New.
4315 2018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
4317         PR libstdc++/80165
4318         * testsuite/20_util/variant/80165.cc: New.
4320 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
4322         * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
4323         * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
4324         of C++11 containers with Debug Mode support.
4325         * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
4326         * doc/html/*: Regenerate.
4328 2018-05-10  Jason Merrill  <jason@redhat.com>
4330         * include/bits/regex_compiler.h (_S_cache_size): Change from
4331         function to variable.
4333 2018-05-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
4335         PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
4336         * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
4337         argument defaulted to +1.  Doxy comments on same.
4338         * testsuite/special_functions/02_assoc_legendre/
4339         check_value.cc: Regen.
4340         * testsuite/tr1/5_numerical_facilities/special_functions/
4341         02_assoc_legendre/check_value.cc: Regen.
4343 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
4345         PR libstdc++/85729
4346         * include/bits/c++config.h (__replacement_assert): Add linkage
4347         specification.
4348         * include/bits/std_abs.h: Add comment to closing brace of block.
4349         * include/c_global/cstddef: Add linkage specification.
4350         * include/c_global/cstring: Likewise.
4351         * include/c_global/cwchar: Likewise.
4353 2018-05-09  François Dumont  <fdumont@gcc.gnu.org>
4355         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
4356         Rename in...
4357         (_Safe_iterator<>::_S_constant()): ...that.
4358         * include/debug/safe_local_iterator.h
4359         (_Safe_local_iterator<>::_M_constant()): Rename in...
4360         (_Safe_local_iterator<>::_S_constant()): ...that.
4361         * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
4362         (_Iterator_state::__rbegin): New.
4363         (_Iterator_state::__rmiddle): New.
4364         (_Iterator_state::__rend): New.
4365         (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
4366         _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
4367         iterator type.
4368         (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
4369         _Is_iterator)): Likewise.
4370         (_Parameter::_S_reverse_state(_Iterator_state)): New.
4371         (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
4372         _Is_iterator)): New.
4373         (_Parameter(std::reverse_iterator<> const&, const char*,
4374         _Is_iterator)): New.
4375         (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
4376         const char*, _Is_iterator)): New.
4377         (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
4378         New.
4379         (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
4380         _Is_iterator)): New.
4381         * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
4382         * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
4383         * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
4385 2018-05-09  Jonathan Wakely  <jwakely@redhat.com>
4387         * include/bits/std_function.h (_Base_manager::_M_get_pointer):
4388         Use constexpr if in C++17 mode.
4389         (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
4390         Copy from const object.
4391         * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
4393 2018-05-08  François Dumont  <fdumont@gcc.gnu.org>
4395         * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
4396         [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
4397         backtrace.
4399         * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
4400         * include/debug/functions.h (__check_valid_range): Use latter.
4401         * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
4402         use latter.
4403         * include/debug/deque
4404         (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
4405         * include/debug/forward_list
4406         (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
4407         Likewise.
4408         * include/debug/list
4409         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
4410         * include/debug/list
4411         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
4412         * include/debug/map.h
4413         (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
4414         (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
4415         Likewise.
4416         * include/debug/multimap.h
4417         (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
4418         (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
4419         const _Alloc&)): Likewise.
4420         * include/debug/set.h
4421         (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
4422         (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
4423         Likewise.
4424         * include/debug/multiset.h
4425         (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
4426         (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
4427         const _Alloc&)): Likewise.
4428         * include/debug/string
4429         (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
4430         Likewise.
4431         * include/debug/unordered_map
4432         (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
4433         Likewise.
4434         (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
4435         const _Alloc&)): Likewise.
4436         * include/debug/unordered_set
4437         (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
4438         Likewise.
4439         (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
4440         const _Alloc&)): Likewise.
4441         * include/debug/vector
4442         (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
4444         * include/debug/formatter.h (_Error_formatter::_M_function): New.
4445         (_Error_formatter(const char*, unsigned int)): Adapt.
4446         (_Error_formatter::_M_at): Rename in...
4447         (_Error_formatter::_S_at): ...that and adapt.
4448         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
4449         (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
4450         * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
4451         when available.
4453 2018-05-08  Jonathan Wakely  <jwakely@redhat.com>
4455         * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
4456         Use normal std::vector even in Debug Mode.
4458         PR libstdc++/85672
4459         * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
4460         to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
4461         * include/Makefile.in: Regenerate.
4462         * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
4463         within conditional block.
4465 2018-05-07  Jonathan Wakely  <jwakely@redhat.com>
4467         * doc/xml/manual/using.xml (table.cmd_options): Document that the
4468         C++17 Filesystem implementation also needs -lstdc++fs.
4470         PR libstdc++/85671
4471         * include/bits/fs_path.h (operator/): Permit copy elision.
4472         * include/experimental/bits/fs_path.h (operator/): Likewise.
4474 2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
4476         Moar PR libstdc++/80506
4477         * include/bits/random.tcc (gamma_distribution::__generate_impl()):
4478         Fix magic number used in loop condition.
4480 2018-05-04  Jonathan Wakely  <jwakely@redhat.com>
4482         PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
4483         * include/std/optional (_Optional_payload): Add noexcept to default
4484         constructor. Re-indent.
4485         (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
4486         constructor for copying disengaged payloads.
4487         (_Optional_payload<_Tp, true, false, true>): Likewise.
4488         (_Optional_payload<_Tp, true, true, false>): Likewise.
4489         (_Optional_payload<_Tp, true, false, false>): Likewise.
4490         * testsuite/20_util/optional/cons/85642.cc: New.
4491         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
4493 2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
4495         PR libstdc++/82644
4496         * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
4497         inline definitions instead of using-declarations.
4498         [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
4499         * testsuite/tr1/5_numerical_facilities/special_functions/
4500         07_conf_hyperg/compile_cxx17.cc: New.
4501         * testsuite/tr1/5_numerical_facilities/special_functions/
4502         17_hyperg/compile_cxx17.cc: New.
4504         PR libstdc++/84769
4505         * include/std/variant (visit): Qualify std::get call.
4507         PR libstdc++/85632 use uintmax_t for arithmetic
4508         * src/filesystem/ops.cc (experimental::filesystem::space): Perform
4509         arithmetic in result type.
4510         * src/filesystem/std-ops.cc (filesystem::space): Likewise.
4511         * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
4512         is greater than free space.
4513         * testsuite/experimental/filesystem/operations/space.cc: New.
4515         * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
4516         * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
4517         New.
4518         * testsuite/20_util/remove_cvref/value.cc: New.
4519         * testsuite/20_util/remove_cvref/value_ext.cc: New.
4521         PR libstdc++/84087 LWG DR 2268 basic_string default arguments
4522         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
4523         (append(const basic_string&, size_type, size_type)
4524         (assign(const basic_string&, size_type, size_type)
4525         (insert(size_type, const basic_string&, size_type, size_type)
4526         (replace(size_type,size_type,const basic_string&,size_type,size_type)
4527         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
4528         Add default arguments (LWG 2268).
4529         [_GLIBCXX_USE_CXX11_ABI=0]
4530         (append(const basic_string&, size_type, size_type)
4531         (assign(const basic_string&, size_type, size_type)
4532         (insert(size_type, const basic_string&, size_type, size_type)
4533         (replace(size_type,size_type,const basic_string&,size_type,size_type)
4534         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
4535         Likewise.
4536         * testsuite/21_strings/basic_string/dr2268.cc: New test.
4538         PR libstdc++/84535
4539         * include/std/thread (thread::__not_same): New SFINAE helper.
4540         (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
4541         first argument is not a std::thread. Add static assertion to check
4542         INVOKE expression is valid.
4543         (thread::thread(thread&), thread::thread(const thread&&)): Remove.
4544         (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
4545         __invoke_result for return types and remove exception specifications.
4546         * testsuite/30_threads/thread/cons/84535.cc: New.
4548         * include/std/future (__async_result_of): Use __invoke_result instead
4549         of result_of.
4551         * include/std/any (any_cast): Use __remove_cvref_t.
4552         * include/std/tuple (__make_tuple): Likewise.
4553         * include/std/type_traits (__remove_cvref_t): Define.
4554         (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
4555         [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
4556         * include/std/variant (__erased_hash): Use __remove_cvref_t.
4558 2018-05-02  François Dumont  <fdumont@gcc.gnu.org>
4560         * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
4561         ensure overloaded comma not used.
4562         * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
4563         * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
4564         * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
4565         * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
4566         * testsuite/23_containers/list/modifiers/assign/1.cc: New.
4567         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
4568         * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
4570 2018-05-02  Jonathan Wakely  <jwakely@redhat.com>
4572         PR libstdc++/68197
4573         * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
4574         indices to unsigned.
4575         * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
4576         as failure. Refactor error handling.
4577         * testsuite/27_io/ios_base/storage/68197.cc: New.
4579         PR libstdc++/57997
4580         PR libstdc++/83860
4581         * include/bits/gslice_array.h (gslice_array): Define default
4582         constructor as deleted, as per C++11 standard.
4583         * include/bits/mask_array.h (mask_array): Likewise.
4584         * include/bits/slice_array.h (slice_array): Likewise.
4585         * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
4586         to namespace __detail.
4587         (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
4588         members.
4589         * include/bits/valarray_before.h (_ValArrayRef): New helper for type
4590         of data members in closure objects.
4591         (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
4592         (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
4593         __detail.
4594         (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
4595         (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
4596         (_SBase::_M_expr): Use _ValArrayRef for type of data members.
4597         * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
4598         (_ValFunClos, _RefFunClos): Move to namespace __detail and add
4599         using-declarations to namespace std.
4600         * testsuite/26_numerics/valarray/83860.cc: New.
4602         * testsuite/backward/strstream_move.cc: Remove duplicate function
4603         call.
4605         PR libstdc++/69608
4606         * include/backward/strstream (strstreambuf): Define move constructor
4607         and move assignment operator.
4608         (istrstream, ostrstream, strstream): Likewise.
4609         * testsuite/backward/strstream_move.cc: New.
4611 2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
4613         PR libstdc++/84654
4614         * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
4615         * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
4616         * configure: Regenerate.
4617         * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
4618         based on ENABLE_FLOAT128.
4619         * include/Makefile.in: Regenerate.
4620         * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
4621         [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
4622         _GLIBCXX_USE_FLOAT128.
4624 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
4626         * configure: Regenerated.
4628 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
4630         * configure: Regenerated.
4632 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
4633             Jakub Jelinek  <jakub@redhat.com>
4635         PR libstdc++/85442
4636         * src/c++11/Makefile.am: Don't generate debuginfo again for
4637         cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
4638         * src/c++11/Makefile.in: Regenerate.
4640 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
4642         PR libstdc++/84442
4643         * testsuite/30_threads/thread/cons/terminate.cc
4644         [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
4646 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
4648         PR jit/85384
4649         * configure: Regenerate.
4651 2018-04-16  Jonathan Wakely  <jwakely@redhat.com>
4653         * testsuite/experimental/filesystem/file_status/1.cc: Add
4654         -DUSE_FILESYSTEM_TS to dg-options.
4655         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
4656         Likewise.
4657         * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
4658         * testsuite/experimental/filesystem/iterators/
4659         recursive_directory_iterator.cc: Likewise.
4660         * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
4661         * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
4662         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
4663         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
4664         * testsuite/experimental/filesystem/operations/create_directories.cc:
4665         Likewise.
4666         * testsuite/experimental/filesystem/operations/create_directory.cc:
4667         Likewise.
4668         * testsuite/experimental/filesystem/operations/create_symlink.cc:
4669         Likewise.
4670         * testsuite/experimental/filesystem/operations/current_path.cc:
4671         Likewise.
4672         * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
4673         * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
4674         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
4675         * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
4676         * testsuite/experimental/filesystem/operations/last_write_time.cc:
4677         Likewise.
4678         * testsuite/experimental/filesystem/operations/permissions.cc:
4679         Likewise.
4680         * testsuite/experimental/filesystem/operations/read_symlink.cc:
4681         Likewise.
4682         * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
4683         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
4684         * testsuite/experimental/filesystem/operations/status.cc: Likewise.
4685         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
4686         Likewise.
4687         * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
4688         * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
4689         * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
4690         * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
4691         * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
4692         * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
4693         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
4694         * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
4695         * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
4696         * testsuite/experimental/filesystem/path/construct/default.cc:
4697         Likewise.
4698         * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
4699         * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
4700         * testsuite/experimental/filesystem/path/construct/string_view.cc:
4701         Likewise.
4702         * testsuite/experimental/filesystem/path/decompose/extension.cc:
4703         Likewise.
4704         * testsuite/experimental/filesystem/path/decompose/filename.cc:
4705         Likewise.
4706         * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
4707         Likewise.
4708         * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
4709         Likewise.
4710         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
4711         Likewise.
4712         * testsuite/experimental/filesystem/path/decompose/root_name.cc:
4713         Likewise.
4714         * testsuite/experimental/filesystem/path/decompose/root_path.cc:
4715         Likewise.
4716         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
4717         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
4718         Likewise.
4719         * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
4720         * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
4721         * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
4722         Likewise.
4723         * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
4724         Likewise.
4725         * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
4726         Likewise.
4727         * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
4728         Likewise.
4729         * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
4730         * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
4731         * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
4732         Likewise.
4733         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
4734         * testsuite/experimental/filesystem/path/query/has_extension.cc:
4735         Likewise.
4736         * testsuite/experimental/filesystem/path/query/has_filename.cc:
4737         Likewise.
4738         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
4739         Likewise.
4740         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
4741         Likewise.
4742         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
4743         Likewise.
4744         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
4745         Likewise.
4746         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
4747         Likewise.
4748         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
4749         * testsuite/experimental/filesystem/path/query/is_relative.cc:
4750         Likewise.
4752 2018-04-13  Jonathan Wakely  <jwakely@redhat.com>
4754         * src/c++11/Makefile.am: Fix sed command.
4755         * src/c++11/Makefile.in: Regenerate.
4757         * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
4758         handle mangled names starting with double underscores on darwin.
4759         * src/c++11/Makefile.in: Regenerate.
4761 2018-04-12  Jonathan Wakely  <jwakely@redhat.com>
4763         * src/c++11/Makefile.am: Fix comment.
4764         * src/c++11/Makefile.in: Regenerate.
4765         * src/c++11/cxx11-ios_failure.cc: Fix comment.
4766         * src/c++98/ios_failure.cc: Likewise.
4768         * src/c++11/ios.cc: Remove redundant macro definition.
4770 2018-04-11  Jonathan Wakely  <jwakely@redhat.com>
4772         * doc/xml/manual/abi.xml: Document header locations in recent
4773         releases.
4774         * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
4775         * doc/xml/manual/spine.xml: Update copyright years.
4776         * doc/xml/manual/strings.xml: Adjust tolower example to avoid
4777         undefined behaviour.
4778         * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
4779         * doc/html/*: Regenerate.
4781 2018-04-10  Jonathan Wakely  <jwakely@redhat.com>
4783         * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
4784         * doc/xml/manual/backwards_compatibility.xml: Likewise.
4785         * doc/xml/manual/containers.xml: Likewise.
4786         * doc/xml/manual/debug_mode.xml: Likewise.
4787         * doc/xml/manual/extensions.xml: Likewise.
4788         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
4789         * doc/xml/manual/using.xml: Likewise.
4790         * doc/xml/manual/utilities.xml: Likewise.
4792         PR libstdc++/85222
4793         * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
4794         cxx11-ios_failure.cc to rewrite type info for __ios_failure.
4795         * src/c++11/Makefile.in: Regenerate.
4796         * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
4797         New types.
4798         [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
4799         * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
4800         * src/c++98/ios_failure.cc (__construct_ios_failure)
4801         (__destroy_ios_failure, is_ios_failure_handler): New functions.
4802         [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
4803         * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
4804         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
4805         handler types, to always catch std::ios_base::failure.
4806         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
4807         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
4808         exceptions_failbit.cc: Likewise.
4809         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
4810         exceptions_failbit.cc: Likewise.
4811         * testsuite/27_io/basic_istream/extractors_other/char/
4812         exceptions_null.cc: Likewise.
4813         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
4814         exceptions_null.cc: Likewise.
4815         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
4816         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
4817         * testsuite/27_io/basic_ostream/inserters_other/char/
4818         exceptions_null.cc: Likewise.
4819         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
4820         exceptions_null.cc: Likewise.
4821         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
4823 2018-04-05  Jonathan Wakely  <jwakely@redhat.com>
4825         * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
4826         __get calls to avoid ADL and avoid ambiguity due to Clang bug.
4828 2018-04-03  Jonathan Wakely  <jwakely@redhat.com>
4830         PR libstdc++/85183
4831         * include/std/variant (_Move_assign_base::operator=): Fix incorrect
4832         value categories.
4833         * testsuite/20_util/variant/85183.cc: New.
4835 2018-03-26  Jonathan Wakely  <jwakely@redhat.com>
4837         * include/std/variant (__get): Qualify calls to avoid ADL.
4838         (__select_index): Adjust whitespace.
4839         (variant): Add using-declaration to workaround Clang bug.
4841 2018-03-22  Jonathan Wakely  <jwakely@redhat.com>
4843         PR libstdc++/85040
4844         * include/bits/stl_function.h (greater::__not_overloaded)
4845         (less::__not_overloaded, greater_equal::__not_overloaded)
4846         (less_equal::__not_overloaded): Fix ambiguous specializations.
4847         * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
4848         tests for type with overloaded operators.
4850 2018-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4852         PR libstdc++/77691
4853         * testsuite/experimental/memory_resource/resource_adaptor.cc:
4854         xfail execution on 32-bit Solaris/x86.
4856 2018-03-21  Jonathan Wakely  <jwakely@redhat.com>
4858         * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
4859         VERIFY instead of assert.
4860         * testsuite/20_util/hash/84998.cc: New test.
4861         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
4862         copy of test adjusted for Debug Mode.
4863         * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
4864         test in Debug Mode.
4866 2018-03-20  François Dumont  <fdumont@gcc.gnu.org>
4868         PR libstdc++/84998
4869         * include/bits/stl_bvector.h: Fix std::hash friend declaration.
4870         * include/std/bitset: Likewise.
4871         * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
4872         declaration.
4873         * include/bits/stl_multimap.h (std::multimap<>): Likewise.
4874         * include/bits/stl_multiset.h (std::multiset<>): Likewise.
4875         * include/bits/stl_set.h (std::set<>): Likewise.
4876         * include/bits/unordered_map.h (std::unordered_map<>): Fix
4877         _Hash_merge_helper friend declaration.
4878         (std::unordered_multimap<>): Likewise.
4879         * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
4880         (std::unordered_multiset<>): Likewise.
4882 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
4884         * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
4885         trailing slash for domain level link.
4886         * doc/xml/faq.xml: Ditto.
4887         * doc/xml/manual/appendix_free.xml (software): Ditto.
4888         * doc/xml/manual/intro.xml: Ditto.
4889         * doc/xml/manual/spine.xml: Ditto.
4890         * doc/xml/spine.xml: Ditto.
4892 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
4894         * doc/xml/manual/documentation_hacking.xml: Adjust link to
4895         docbook.org.
4897 2018-03-17  Jonathan Wakely  <jwakely@redhat.com>
4899         * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
4900         to compile as C++98.
4902 2018-03-14  Jonathan Wakely  <jwakely@redhat.com>
4904         PR libstdc++/78420
4905         * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
4906         (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
4907         to ensure total order for pointers.
4908         (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
4909         Add operator() overloads for pointer arguments and make generic
4910         overloads dispatch to new _S_cmp functions when comparisons would
4911         use built-in operators for pointers.
4912         * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
4914 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
4916         PR libstdc++/84773
4917         PR libstdc++/83662
4918         * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
4919         * configure: Regenerate.
4920         * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
4921         (aligned_alloc): Add using-declaration.
4922         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
4924 2018-03-09  François Dumont  <fdumont@gcc.gnu.org>
4926         * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
4927         Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
4928         registration.
4930 2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
4932         PR libstdc++/84769
4933         * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
4934         Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
4936         src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
4937         src/filesystem/std-ops.cc (create_dir): Likewise.
4939 2018-03-08  François Dumont  <fdumont@gcc.gnu.org>
4941         * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
4942         (StdListIteratorPrinter): Inherit from latter.
4943         (StdFwdListIteratorPrinter): New, inherit from latter.
4944         (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
4945         when iterator has no associated container.
4946         (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
4947         __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
4948         registrations.
4949         * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
4950         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
4952 2018-03-06  Ville Voutilainen  <ville.voutilainen@gmail.com>
4954         PR libstdc++/84601
4955         * include/std/optional (_Optional_payload): Split into multiple
4956         specializations that can handle different cases of trivial or
4957         non-trivial assignment operators.
4958         * testsuite/20_util/optional/84601.cc: New.
4959         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
4961 2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
4963         PR libstdc++/84671
4964         * include/bits/parse_numbers.h (_Number_help): Add partial
4965         specialization to handle digit separators. Adjust partial
4966         specialization for recursion temrination to require _Pow == 1ULL.
4967         * testsuite/20_util/duration/literals/84671.cc: New
4969 2018-02-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
4971         Implement the missing bits of LWG 2769
4972         * include/std/any (any_cast(const any&)): Add static_assert.
4973         (any_cast(any&)): Likewise.
4974         (any_cast(any&&)): Likewise, and remove the handling
4975         for copyable-but-not-movable type.
4976         * testsuite/20_util/any/misc/any_cast.cc: Adjust.
4977         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
4978         add new tests.
4980 2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
4982         PR libstdc++/84532
4983         * include/std/thread (thread::__make_invoker): Construct tuple
4984         directly instead of using make_tuple.
4985         * testsuite/30_threads/async/84532.cc: New.
4986         * testsuite/30_threads/thread/84532.cc: New.
4988 2018-02-20  François Dumont  <fdumont@gcc.gnu.org>
4990         * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
4991         (template<> __aligned_buffer): Define as __aligned_membuf alias.
4993 2018-02-19  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
4995         PR target/84148
4996         * configure: Regenerate.
4998 2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
5000         PR libstdc++/81797
5001         * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
5002         * configure: Regenerate.
5003         * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
5004         defined.
5005         * include/Makefile.in: Regenerate.
5007 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
5009         PR libstdc++/83833
5010         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
5011         Add -ffloat-store to options for m68k and ia32.
5013         * doc/xml/faq.xml: Update copyright years.
5014         * doc/html/*: Regenerate.
5016         PR libstdc++/83658
5017         * include/std/any (any::__do_emplace): Only set _M_manager after
5018         constructing the contained object.
5019         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
5020         * testsuite/20_util/any/modifiers/83658.cc: New test.
5022 2018-01-25  Jonathan Wakely  <jwakely@redhat.com>
5024         PR libstdc++/81076
5025         * include/c_global/cstddef (__byte_operand): Define primary template.
5026         * testsuite/18_support/byte/81076.cc: New test.
5028 2018-01-19  Christophe Lyon  <christophe.lyon@linaro.org>
5030         * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
5031         dg-options and dg-add-options order.
5032         * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
5033         * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
5034         Likewise.
5035         * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
5036         * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
5037         Likewise.
5038         * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
5039         Likewise.
5040         * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
5041         * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
5042         Likewise.
5043         * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
5044         Likewise.
5045         * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
5046         Likewise.
5047         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
5048         Likewise.
5049         * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
5050         Likewise.
5051         * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
5052         Likewise.
5053         * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
5054         Likewise.
5055         * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
5056         Likewise.
5057         * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
5058         * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
5059         * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
5060         * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
5061         * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
5062         * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
5063         * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
5064         * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
5065         * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
5066         Likewise.
5067         * testsuite/special_functions/19_sph_bessel/check_nan.cc:
5068         Likewise.
5069         * testsuite/special_functions/20_sph_legendre/check_nan.cc:
5070         Likewise.
5071         * testsuite/special_functions/21_sph_neumann/check_nan.cc:
5072         Likewise.
5074 2018-01-18  Uros Bizjak  <ubizjak@gmail.com>
5076         * configure.ac (AC_CHECK_HEADERS): Add linux/types.h.  Conditionally
5077         include linux/types.h when checking linux/random.h header.
5078         * config.h.in: Regenerate.
5079         * configure: Ditto.
5080         * src/c++11/random.cc: Conditionally include linux/types.h.
5082 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
5084         * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
5086 2018-01-16  Jonathan Wakely  <jwakely@redhat.com>
5088         PR libstdc++/83834
5089         * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
5090         pattern with exact match for std::cerr.
5092 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
5094         PR libstdc++/83833
5095         * include/bits/random.h (chi_squared_distribution::param): Update
5096         gamma distribution parameter.
5097         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
5098         test.
5100         PR libstdc++/83830
5101         * include/std/type_traits (has_unique_object_representations_v): Add
5102         variable template.
5103         * testsuite/20_util/has_unique_object_representations/value.cc: Check
5104         variable template.
5106 2018-01-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
5108         Make optional conditionally
5109         trivially_{copy,move}_{constructible,assignable}
5110         * include/std/optional (_Optional_payload): Fix the comment in
5111         the class head and turn into a primary and one specialization.
5112         (_Optional_payload::_M_engaged): Strike the NSDMI.
5113         (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
5114         New.
5115         (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
5116         Likewise.
5117         (_Optional_payload<_Tp, false>::_M_get): Likewise.
5118         (_Optional_payload<_Tp, false>::_M_reset): Likewise.
5119         (_Optional_base_impl): Likewise.
5120         (_Optional_base): Turn into a primary and three specializations.
5121         (optional(nullopt)): Change the base init.
5122         * testsuite/20_util/optional/assignment/8.cc: New.
5123         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
5124         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
5126 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
5128         PR libstdc++/80276
5129         * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
5130         (get_template_arg_list): New.
5131         (StdVariantPrinter._template_args): Remove, use get_template_arg_list
5132         instead.
5133         (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
5134         of strings and regular expressions.
5135         (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
5136         (FilteringTypePrinter): Add docstring. Match using startswith. Use
5137         strip_inline_namespaces instead of strip_versioned_namespace.
5138         (add_one_type_printer): Prepend namespace to match argument.
5139         (register_type_printers): Add type printers for char16_t and char32_t
5140         string types and for types using cxx11 ABI. Update calls to
5141         add_one_template_type_printer to provide default argument dicts.
5142         * testsuite/libstdc++-prettyprinters/80276.cc: New test.
5143         * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
5144         basic_string<unsigned char> and basic_string<signed char>.
5145         * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
5146         to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
5148 2018-01-14  Andreas Schwab  <schwab@linux-m68k.org>
5150         PR libstdc++/81092
5151         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
5153 2018-01-13  Tim Shen  <timshen@google.com>
5155         PR libstdc++/83601
5156         * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
5157         * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
5158         * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
5160 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5162         PR libstdc++/64054
5163         * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
5164         Remove dg-xfail-run-if.
5166 2018-01-10  François Dumont  <fdumont@gcc.gnu.org>
5168         * include/bits/forward_list.h
5169         (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
5170         (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
5171         (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
5172         (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
5173         (_Fwd_list_impl()): Add noexcept qualification.
5174         (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
5175         (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
5176         (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
5177         (_Fwd_list_base()): Default.
5178         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
5179         (_Fwd_list_base(_Fwd_list_base&&)): Default.
5180         (forward_list<>()): Default.
5181         (forward_list<>(forward_list&&)): Default.
5182         (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
5183         (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
5184         (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
5185         * include/bits/forward_list.tcc
5186         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
5187         _M_impl._M_head move assignment.
5188         (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
5189         * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
5191 2018-01-09  Jonathan Wakely  <jwakely@redhat.com>
5193         PR libstdc++/80276
5194         * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
5195         (UniquePointerPrinter): Print correct template argument, not type of
5196         the pointer.
5197         (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
5198         a type.
5199         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
5200         array type.
5201         * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
5202         weak_ptr of array types.
5204 2018-01-09  François Dumont  <fdumont@gcc.gnu.org>
5206         PR libstdc++/83709
5207         * include/bits/hashtable_policy.h
5208         (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
5209         __first != __last.
5210         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
5211         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
5212         Add false_type parameter.
5213         (_Insert_base::insert): Adapt.
5214         * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
5215         Adapt.
5216         (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
5217          Add __n_elt parameter, defaulted to 1.
5218         (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
5219         policy _M_need_rehash.
5220         (_Hashtable::_M_merge_unique): Pass target number of elements to add to
5221         produce only 1 rehash if necessary.
5222         * testsuite/23_containers/unordered_map/insert/83709.cc: New.
5223         * testsuite/23_containers/unordered_set/insert/83709.cc: New.
5225 2018-01-09  Juraj Oršulić  <juraj.orsulic@fer.hr>
5226             Jonathan Wakely  <jwakely@redhat.com>
5228         PR libstdc++/59253 (partial)
5229         * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
5230         type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
5231         (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
5232         children.
5233         * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
5234         of unique_ptr printer.
5235         * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
5236         output of shared_ptr printer.
5238 2018-01-05  Jonathan Wakely  <jwakely@redhat.com>
5240         PR libstdc++/83626
5241         * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
5242         unnecessary symlink_status call.
5243         (remove_all(const path&, error_code&)): Use filesystem::remove.
5244         * src/filesystem/std-ops.cc: Likewise.
5246         PR libstdc++/83279
5247         * src/filesystem/std-ops.cc  (do_copy_file): Use non-null offset with
5248         sendfile.
5250         PR libstdc++/83626
5251         * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
5252         report an error for ENOENT.
5253         (remove_all(const path&)): Fix type of result variable.
5254         (remove_all(const path&, error_code&)): Use non-throwing increment
5255         for directory iterator. Call POSIX remove directly to avoid redundant
5256         calls to symlink_status. Do not report errors for ENOENT.
5257         * src/filesystem/std-ops.cc: Likewise.
5258         * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
5259         overload.
5260         * testsuite/experimental/filesystem/operations/remove_all.cc:
5261         Likewise.
5263 2018-01-04  Jonathan Wakely  <jwakely@redhat.com>
5265         PR libstdc++/83626
5266         * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
5267         redundant call to ec.clear().
5268         (remove_all(const path&, error_code&))): Do not return an error for
5269         non-existent paths.
5270         * src/filesystem/std-ops.cc: Likewise.
5271         * testsuite/27_io/filesystem/operations/remove.cc: New test.
5272         * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
5273         results for non-existent paths.
5274         * testsuite/experimental/filesystem/operations/remove.cc: New test.
5275         * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
5276         expected results for non-existent paths.
5278         * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
5279         check status_known once.
5280         * include/experimental/bits/fs_ops.h: Likewise.
5282         PR libstdc++/83607
5283         * include/std/functional (__is_byte_like): New trait.
5284         (__is_std_equal_to): Remove.
5285         (__boyer_moore_base_t): Use __is_byte_like instead of
5286         __is_std_equal_to.
5287         * include/experimental/functional (__is_std_equal_to): Remove.
5288         (__boyer_moore_base_t): Use __is_byte_like instead of
5289         __is_std_equal_to.
5290         * testsuite/20_util/function_objects/83607.cc: New test.
5292 2018-01-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
5294         Protect optional's deduction guide with the feature macro
5295         * include/std/optional: Use the feature macro.
5297 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
5299         Update copyright years.
5301 Copyright (C) 2018 Free Software Foundation, Inc.
5303 Copying and distribution of this file, with or without modification,
5304 are permitted in any medium without royalty provided the copyright
5305 notice and this notice are preserved.