[42/46] Add vec_info::replace_stmt
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob6298f7eab23cf4164503d6670940a6c860c22a41
1 2018-07-30  Jonathan Wakely  <jwakely@redhat.com>
3         PR libstdc++/86734
4         * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
5         _S_to_pointer (LWG 1052, LWG 2118).
6         (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
7         * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
8         * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
10         * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
11         workaround for aligned_alloc bug on AIX.
12         * testsuite/18_support/new_aligned.cc: New test.
14 2018-07-26  Marek Polacek  <polacek@redhat.com>
16         * testsuite/30_threads/condition_variable_any/cond.cc: New.
18 2018-07-26  Marek Polacek  <polacek@redhat.com>
20         * src/c++98/locale_init.cc: Fix #ifdef condition.
22 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
24         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
25         dg-require-cstdint directive.
26         * testsuite/20_util/allocator/overaligned.cc: Likewise.
27         * testsuite/20_util/any/cons/aligned.cc: Likewise.
28         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
29         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
30         * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
31         Likewise.
32         * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
33         * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
34         * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
35         * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
36         * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
37         random_device effective-target.
38         * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
39         * testsuite/25_algorithms/sample/1.cc: Require cstdint.
40         * testsuite/25_algorithms/sample/2.cc: Likewise.
41         * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
42         and random_device.
43         * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
44         cstdint.
45         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
46         Likewise.
47         * testsuite/26_numerics/random/discard_block_engine/requirements/
48         constexpr_data.cc: Likewise.
49         * testsuite/26_numerics/random/discard_block_engine/requirements/
50         constexpr_functions.cc: Likewise.
51         * testsuite/26_numerics/random/independent_bits_engine/requirements/
52         constexpr_functions.cc: Likewise.
53         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
54         constexpr_data.cc: Likewise.
55         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
56         constexpr_functions.cc: Likewise.
57         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
58         constexpr_data.cc: Likewise.
59         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
60         constexpr_functions.cc: Likewise.
61         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
62         * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
63         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
64         constexpr_data.cc: Add dg-require-cstdint directive.
65         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
66         constexpr_functions.cc: Likewise.
67         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
68         constexpr_data.cc: Likewise.
69         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
70         constexpr_functions.cc: Likewise.
71         * testsuite/26_numerics/random/uniform_real_distribution/operators/
72         64351.cc: Likewise.
73         * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
74         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
75         * testsuite/experimental/algorithm/sample.cc: Likewise.
76         * testsuite/experimental/algorithm/search.cc: Likewise.
77         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
78         * testsuite/experimental/any/cons/aligned.cc: Likewise.
79         * testsuite/experimental/memory_resource/new_delete_resource.cc:
80         Likewise.
81         * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
82         * testsuite/experimental/random/randint.cc: Likewise.
83         * testsuite/experimental/source_location/1.cc: Likewise.
84         * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
85         * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
86         * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
87         * testsuite/ext/new_allocator/overaligned.cc: Likewise.
88         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
89         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
90         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
91         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
92         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
93         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
94         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
95         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
96         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
97         * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
98         * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
99         * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
100         * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
101         * testsuite/ext/throw_allocator/check_new.cc: Likewise.
102         * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
103         * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
104         * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
105         * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
106         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
108         * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
109         * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
110         * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
111         * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
112         Likewise.
113         * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
114         * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
115         * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
116         Likewise.
117         * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
118         Likewise.
119         * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
120         Likewise.
121         * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
122         * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
123         * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
124         * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
125         * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
126         * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
127         Likewise.
128         * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
129         Likewise.
130         * testsuite/30_threads/recursive_timed_mutex/dest/
131         destructor_locked.cc: Likewise.
132         * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
133         * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
134         * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
135         Likewise.
136         * testsuite/30_threads/recursive_timed_mutex/native_handle/
137         typesizes.cc: Likewise.
138         * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
139         Likewise.
140         * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
141         Likewise.
142         * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
143         Likewise.
144         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
145         Likewise.
146         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
147         Likewise.
148         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
149         Likewise.
150         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
151         Likewise.
152         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
153         Likewise.
154         * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
155         * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
156         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
157         * testsuite/30_threads/scoped_lock/requirements/
158         explicit_instantiation.cc: Likewise.
159         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
160         * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
161         * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
162         * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
163         * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
164         * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
165         * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
166         * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
167         * testsuite/30_threads/shared_future/members/get.cc: Likewise.
168         * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
169         * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
170         * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
171         * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
172         * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
173         * testsuite/30_threads/shared_future/requirements/
174         explicit_instantiation.cc: Likewise.
175         * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
176         * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
177         * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
178         * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
179         * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
180         * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
181         * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
182         * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
183         * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
184         * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
185         * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
186         * testsuite/30_threads/shared_lock/requirements/
187         explicit_instantiation.cc: Likewise.
188         * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
189         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
190         * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
191         * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
192         * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
193         Likewise.
194         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
195         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
196         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
197         * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
198         * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
199         * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
200         * testsuite/30_threads/shared_timed_mutex/requirements/
201         standard_layout.cc: Likewise.
202         * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
203         * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
204         * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
205         * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
206         * testsuite/30_threads/this_thread/1.cc: Likewise.
207         * testsuite/30_threads/this_thread/2.cc: Likewise.
208         * testsuite/30_threads/this_thread/3.cc: Likewise.
209         * testsuite/30_threads/this_thread/4.cc: Likewise.
210         * testsuite/30_threads/this_thread/58038.cc: Likewise.
211         * testsuite/30_threads/thread/70503.cc: Likewise.
212         * testsuite/30_threads/thread/84532.cc: Likewise.
213         * testsuite/30_threads/thread/adl.cc: Likewise.
214         * testsuite/30_threads/thread/cons/1.cc: Likewise.
215         * testsuite/30_threads/thread/cons/2.cc: Likewise.
216         * testsuite/30_threads/thread/cons/3.cc: Likewise.
217         * testsuite/30_threads/thread/cons/4.cc: Likewise.
218         * testsuite/30_threads/thread/cons/49668.cc: Likewise.
219         * testsuite/30_threads/thread/cons/5.cc: Likewise.
220         * testsuite/30_threads/thread/cons/6.cc: Likewise.
221         * testsuite/30_threads/thread/cons/7.cc: Likewise.
222         * testsuite/30_threads/thread/cons/8.cc: Likewise.
223         * testsuite/30_threads/thread/cons/84535.cc: Likewise.
224         * testsuite/30_threads/thread/cons/9.cc: Likewise.
225         * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
226         * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
227         * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
228         * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
229         * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
230         * testsuite/30_threads/thread/id/operators.cc: Likewise.
231         * testsuite/30_threads/thread/members/1.cc: Likewise.
232         * testsuite/30_threads/thread/members/2.cc: Likewise.
233         * testsuite/30_threads/thread/members/3.cc: Likewise.
234         * testsuite/30_threads/thread/members/4.cc: Likewise.
235         * testsuite/30_threads/thread/members/5.cc: Likewise.
236         * testsuite/30_threads/thread/members/hardware_concurrency.cc:
237         Likewise.
238         * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
239         * testsuite/30_threads/thread/swap/1.cc: Likewise.
240         * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
241         * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
242         * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
243         * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
244         * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
245         * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
246         * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
247         Likewise.
248         * testsuite/30_threads/timed_mutex/requirements/
249         standard_layout.cc: Likewise.
250         * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
251         * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
252         * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
253         * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
254         * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
255         * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
256         * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
257         * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
258         * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
259         * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
260         * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
261         * testsuite/30_threads/try_lock/1.cc: Likewise.
262         * testsuite/30_threads/try_lock/2.cc: Likewise.
263         * testsuite/30_threads/try_lock/3.cc: Likewise.
264         * testsuite/30_threads/try_lock/4.cc: Likewise.
265         * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
266         * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
267         * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
268         * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
269         * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
270         * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
271         * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
272         * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
273         * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
274         * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
275         * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
276         * testsuite/30_threads/unique_lock/requirements/
277         explicit_instantiation.cc: Likewise.
278         * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
280         * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
281         directive.
282         * testsuite/30_threads/async/49668.cc: Likewise.
283         * testsuite/30_threads/async/54297.cc: Likewise.
284         * testsuite/30_threads/async/84532.cc: Likewise.
285         * testsuite/30_threads/async/any.cc: Likewise.
286         * testsuite/30_threads/async/async.cc: Likewise.
287         * testsuite/30_threads/async/except.cc: Likewise.
288         * testsuite/30_threads/async/forced_unwind.cc: Likewise.
289         * testsuite/30_threads/async/launch.cc: Likewise.
290         * testsuite/30_threads/async/lwg2021.cc: Likewise.
291         * testsuite/30_threads/async/sync.cc: Likewise.
292         * testsuite/30_threads/call_once/39909.cc: Likewise.
293         * testsuite/30_threads/call_once/49668.cc: Likewise.
294         * testsuite/30_threads/call_once/60497.cc: Likewise.
295         * testsuite/30_threads/call_once/call_once1.cc: Likewise.
296         * testsuite/30_threads/call_once/constexpr.cc: Likewise.
297         * testsuite/30_threads/call_once/dr2442.cc: Likewise.
298         * testsuite/30_threads/call_once/once_flag.cc: Likewise.
299         * testsuite/30_threads/condition_variable/54185.cc: Likewise.
300         * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
301         * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
302         Likewise.
303         * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
304         * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
305         * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
306         * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
307         * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
308         * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
309         * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
310         Likewise.
311         * testsuite/30_threads/condition_variable/requirements/
312         standard_layout.cc: Likewise.
313         * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
314         * Likewise.
315         * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
316         * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
317         * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
318         * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
319         Likewise.
320         * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
321         Likewise.
322         * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
323         * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
324         * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
325         * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
326         * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
327         * testsuite/30_threads/future/cons/default.cc: Likewise.
328         * testsuite/30_threads/future/cons/move.cc: Likewise.
329         * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
330         * testsuite/30_threads/future/members/45133.cc: Likewise.
331         * testsuite/30_threads/future/members/get.cc: Likewise.
332         * testsuite/30_threads/future/members/get2.cc: Likewise.
333         * testsuite/30_threads/future/members/share.cc: Likewise.
334         * testsuite/30_threads/future/members/valid.cc: Likewise.
335         * testsuite/30_threads/future/members/wait.cc: Likewise.
336         * testsuite/30_threads/future/members/wait_for.cc: Likewise.
337         * testsuite/30_threads/future/members/wait_until.cc: Likewise.
338         * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
339         Likewise.
340         * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
341         Likewise.
342         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
343         * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
344         * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
345         * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
346         * testsuite/30_threads/lock/1.cc: Likewise.
347         * testsuite/30_threads/lock/2.cc: Likewise.
348         * testsuite/30_threads/lock/3.cc: Likewise.
349         * testsuite/30_threads/lock/4.cc: Likewise.
350         * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
351         * testsuite/30_threads/lock_guard/requirements/
352         explicit_instantiation.cc: Likewise.
353         * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
354         * testsuite/30_threads/mutex/cons/1.cc: Likewise.
355         * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
356         * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
357         * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
358         * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
359         * testsuite/30_threads/mutex/lock/1.cc: Likewise.
360         * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
361         * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
362         * testsuite/30_threads/mutex/requirements/standard_layout.cc::
363         Likewise.
364         * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
365         * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
366         * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
367         * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
368         * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
369         * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
370         * testsuite/30_threads/packaged_task/49668.cc: Likewise.
371         * testsuite/30_threads/packaged_task/60564.cc: Likewise.
372         * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
373         * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
374         * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
375         * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
376         * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
377         * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
378         * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
379         * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
380         * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
381         * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
382         * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
383         * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
384         Likewise.
385         * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
386         * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
387         * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
388         * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
389         * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
390         * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
391         * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
392         * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
393         * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
394         * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
395         * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
396         * testsuite/30_threads/packaged_task/requirements/
397         explicit_instantiation.cc: Likewise.
398         * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
399         * testsuite/30_threads/promise/60966.cc: Likewise.
400         * testsuite/30_threads/promise/69106.cc: Likewise.
401         * testsuite/30_threads/promise/cons/1.cc: Likewise.
402         * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
403         * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
404         * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
405         * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
406         * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
407         * testsuite/30_threads/promise/cons/move.cc: Likewise.
408         * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
409         * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
410         * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
411         * testsuite/30_threads/promise/members/get_future.cc: Likewise.
412         * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
413         * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
414         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
415         * testsuite/30_threads/promise/members/set_value.cc: Likewise.
416         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
417         * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
418         * testsuite/30_threads/promise/members/swap.cc: Likewise.
419         * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
420         * Likewise.
421         * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
423         * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
424         from namespace std.
425         * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
426         * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
427         * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
428         * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
429         * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
430         * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
431         * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
432         * testsuite/20_util/duration/cons/1.cc: Likewise.
433         * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
434         * testsuite/20_util/duration/cons/2.cc: Likewise.
435         * testsuite/20_util/duration/cons/54025.cc: Likewise.
436         * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
437         * testsuite/20_util/duration/requirements/explicit_instantiation/
438         explicit_instantiation.cc: Likewise.
439         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
440         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
441         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
442         * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
443         * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
444         * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
445         * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
446         * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
447         * testsuite/20_util/ratio/operations/45866.cc: Likewise.
448         * testsuite/20_util/ratio/operations/47913.cc: Likewise.
449         * testsuite/20_util/ratio/operations/53840.cc: Likewise.
450         * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
451         * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
452         * testsuite/20_util/system_clock/1.cc: Likewise.
453         * testsuite/20_util/time_point/1.cc: Likewise.
454         * testsuite/20_util/time_point/2.cc: Likewise.
455         * testsuite/20_util/time_point/3.cc: Likewise.
456         * testsuite/20_util/time_point/requirements/explicit_instantiation/
457         explicit_instantiation.cc: Likewise.
458         * testsuite/21_strings/basic_string/requirements/
459         explicit_instantiation/char16_t/1.cc: Likewise.
460         * testsuite/21_strings/basic_string/requirements/
461         explicit_instantiation/char32_t/1.cc: Likewise.
462         * testsuite/21_strings/basic_string_view/requirements/
463         explicit_instantiation/char16_t/1.cc: Likewise.
464         * testsuite/21_strings/basic_string_view/requirements/
465         explicit_instantiation/char32_t/1.cc: Likewise.
466         * testsuite/21_strings/char_traits/requirements/
467         explicit_instantiation/char16_t/1.cc: Likewise.
468         * testsuite/21_strings/char_traits/requirements/
469         explicit_instantiation/char32_t/1.cc: Likewise.
470         * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
471         * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
472         * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
473         * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
474         Likewise.
475         * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
476         Likewise.
477         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
478         Likewise.
479         * testsuite/22_locale/codecvt/utf8.cc: Likewise.
480         * testsuite/23_containers/vector/bool/72847.cc: Likewise.
481         * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
482         Likewise.
483         * testsuite/experimental/string_view/requirements/
484         explicit_instantiation/char16_t/1.cc: Likewise.
485         * testsuite/experimental/string_view/requirements/
486         explicit_instantiation/char32_t/1.cc: Likewise.
487         * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
488         1.cc: Likewise.
489         * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
490         1.cc: Likewise.
492         * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
493         (random_condition, throw_value_random, throw_allocator_random)
494         (std::hash<throw_value_random>): Do not define when <tr1/random> is
495         not usable.
496         * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
497         define transactional memory support when <stdint.h> is not usable.
499         * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
500         implementation that doesn't depend on <stdint.h> types.
501         * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
502         std::size_t when std::uintptr_t is not usable.
503         [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
504         (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
505         Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
507         * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
508         (hash<u16string>, hash<u32string>): Remove dependency on
509         _GLIBCXX_USE_C99_STDINT_TR1.
510         * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
511         (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
512         _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
513         __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
514         * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
515         (codecvt<char16_t, char, mbstate_t>)
516         (codecvt<char32_t, char, mbstate_t>)
517         (codecvt_byname<char16_t, char, mbstate_t>)
518         (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
519         on _GLIBCXX_USE_C99_STDINT_TR1.
520         * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
521         (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
522         * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
523         (char_traits<char16_t>, char_traits<char32_t>)
524         (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
525         on _GLIBCXX_USE_C99_STDINT_TR1.
526         * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
527         (u16string_view, u32string_view, hash<u16string_view>)
528         (hash<u32string_view>, operator""sv(const char16_t, size_t))
529         (operator""sv(const char32_t, size_t)): Likewise.
530         * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
531         (hash<__u16vstring>, hash<__u32vstring>): Likewise.
532         * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
533         (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
534         (__u32sso_string, __u32rc_string): Likewise.
535         * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
536         (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
537         * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
538         (u16string_view, u32string_view, hash<u16string_view>)
539         (hash<u32string_view>, operator""sv(const char16_t, size_t))
540         (operator""sv(const char32_t, size_t)): Likewise.
541         * src/c++11/codecvt.cc: Likewise.
542         * src/c++98/locale_init.cc: Likewise.
543         * src/c++98/localename.cc: Likewise.
545         * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
546         (__atomic_futex_unsigned_base): Remove dependency on
547         _GLIBCXX_USE_C99_STDINT_TR1 macro.
548         * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
549         (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
550         * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
551         (uintmax_t): Define using predefined macros.
552         * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
553         (time_point, system_clock, high_resolution_clock, steady_clock): Remove
554         dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
555         (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
556         [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
557         long long when <stdint.h> is not usable.
558         * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
559         (condition_variable, condition_variable_any): Remove dependency on
560         _GLIBCXX_USE_C99_STDINT_TR1.
561         * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
562         (packaged_task, async): Likewise.
563         * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
564         (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
565         (once_flag, call_once): Likewise.
566         * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
567         * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
568         (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
569         * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
570         (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
571         (this_thread::sleep_until): Likewise.
572         * src/c++11/chrono.cc: Remove dependency on
573         _GLIBCXX_USE_C99_STDINT_TR1 macro.
574         * src/c++11/condition_variable.cc: Likewise.
575         * src/c++11/futex.cc: Likewise.
576         * src/c++11/future.cc: Likewise.
577         * src/c++11/mutex.cc: Likewise.
578         * src/c++11/thread.cc: Likewise.
579         * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
580         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
581         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
582         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
583         * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
584         * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
586 2018-07-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
588         PR libstdc++/77691
589         * testsuite/experimental/memory_resource/new_delete_resource.cc:
590         xfail execution on 32-bit Solaris/x86.
592 2018-07-26  Marc Glisse  <marc.glisse@inria.fr>
594         * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
595         (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
596         (vector::_M_move_assign): Reorder the swaps.
598 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
600         PR libstdc++/86676
601         * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
602         same alignment for post-release allocation.
604 2018-07-25  Jonathan Wakely  <jwakely@redhat.com>
606         PR libstdc++/86676
607         * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
608         buffer being misaligned and so returned pointer not being at start.
610         * include/experimental/memory_resource: Include <cstddef> header.
612         * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
613         * src/Makefile.am: Add comment.
614         * src/c++17/Makefile.in: Regenerate.
616         * include/Makefile.am: Add new <bits/unique_lock.h> header.
617         * include/Makefile.in: Regenerate.
618         * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
619         (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
620         (unique_lock): Move definition to ...
621         * include/bits/unique_lock.h: New header.
622         [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
623         [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
624         (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
625         (unique_lock::try_lock_for): Define only when <chrono> is usable.
626         * include/std/condition_variable: Include <bits/unique_lock.h>.
627         * include/std/mutex: Likewise.
629 2018-07-24  Jonathan Wakely  <jwakely@redhat.com>
631         * config/abi/pre/gnu.ver: Export new symbols.
632         * configure: Regenerate.
633         * include/Makefile.am: Add new <memory_resource> header.
634         * include/Makefile.in: Regenerate.
635         * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
636         * include/std/memory_resource: New header.
637         (memory_resource, polymorphic_allocator, new_delete_resource)
638         (null_memory_resource, set_default_resource, get_default_resource)
639         (pool_options, monotonic_buffer_resource): Define.
640         * src/Makefile.am: Add c++17 directory.
641         * src/Makefile.in: Regenerate.
642         * src/c++11/Makefile.am: Fix comment.
643         * src/c++17/Makefile.am: Add makefile for new sub-directory.
644         * src/c++17/Makefile.in: Generate.
645         * src/c++17/memory_resource.cc: New.
646         (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
647         (default_res, new_delete_resource, null_memory_resource)
648         (set_default_resource, get_default_resource): Define.
649         * testsuite/20_util/memory_resource/1.cc: New test.
650         * testsuite/20_util/memory_resource/2.cc: New test.
651         * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
652         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
653         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
654         * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
655         * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
656         New test.
657         * testsuite/20_util/polymorphic_allocator/1.cc: New test.
658         * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
659         * testsuite/20_util/polymorphic_allocator/select.cc: New test.
660         * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
661         Define concrete memory resource for testing.
662         (__gnu_test::default_resource_mgr): Define RAII helper for changing
663         default resource.
665         PR libstdc++/86658
666         * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
667         parameter by reference, to avoid copying invalid iterators.
668         * testsuite/25_algorithms/copy/86658.cc: New test.
670         * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
671         local variables for number of digits instead of type aliases.
672         (__log2p1): Remove redundant branch also checked in __countl_zero.
674         * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
675         conditions. Add comments.
676         * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
677         * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
678         * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
680         * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
681         (__uses_allocator_helper): Check conditions directly instead of
682         using __is_erased_or_convertible.
684         * include/experimental/memory_resource: Adjust comments and
685         whitespace.
686         (__resource_adaptor_imp): Add second template parameter for type of
687         memory resource base class.
688         (memory_resource): Define default constructor, destructor, copy
689         constructor and copy assignment operator as defaulted.
691         PR libstdc++/70966
692         * include/experimental/memory_resource (__get_default_resource): Use
693         placement new to create an object with dynamic storage duration.
695 2018-07-23  Jonathan Wakely  <jwakely@redhat.com>
697         PR libstdc++/70940
698         * include/experimental/memory_resource
699         (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
700         (__resource_adaptor_common::__guaranteed_alignment): New helper to
701         give maximum alignment an allocator guarantees. Specialize for known
702         allocators using new and malloc.
703         (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
704         (__resource_adaptor_imp::do_deallocate): Likewise.
705         * testsuite/experimental/memory_resource/new_delete_resource.cc:
706         Check that new and delete are called with expected sizes.
708 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
710         PR libstdc++/86595
711         * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
712         noexcept.
714 2018-07-20  Fangrui Song  <maskray@google.com>
716         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
717         _GLIBCXX_VISIBILITY(default).
719 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
721         PR libstdc++/86603
722         * include/std/version: Move __cpp_lib_list_remove_return_type macro.
724 2018-07-19  Jonathan Wakely  <jwakely@redhat.com>
726         * include/std/type_traits (__is_member_object_pointer_helper): Use
727         __not_<is_function<_Tp>>::type instead of integral_constant.
728         (__is_member_function_pointer_helper): Likewise for
729         is_function<_Tp>::type.
730         (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
731         (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
732         (is_trivially_constructible): Remove redundant use of
733         is_constructible.
734         (__is_trivially_copy_assignable_impl): Remove redundant use of
735         is_copy_assignable.
736         (__is_trivially_move_assignable_impl): Remove redundant use of
737         is_move_assignable.
738         (is_trivially_destructible): Use __bool_constant.
739         * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
740         tests for scalar types.
742 2018-07-19  Glen Joseph Fernandes  <glenjofe@gmail.com>
744         * include/bits/stl_algobase.h (__copy_move_a): Used
745         __is_trivially_copyable.
746         (__copy_move_backward_a): Likewise.
747         * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
748         New test.
750 2018-07-17  Jonathan Wakely  <jwakely@redhat.com>
752         PR libstdc++/86450
753         * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
754         (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
755         * configure: Regenerate.
756         * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
757         * doc/Makefile.in: Regenerate.
758         * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
759         * include/Makefile.in: Regenerate.
760         * libsupc++/Makefile.in: Regenerate.
761         * po/Makefile.in: Regenerate.
762         * python/Makefile.in: Regenerate.
763         * src/Makefile.in: Regenerate.
764         * src/c++11/Makefile.in: Regenerate.
765         * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
766         from -Wabi=2 that don't affect exported symbols.
767         * src/c++98/Makefile.in: Regenerate.
768         * src/filesystem/Makefile.in: Regenerate.
769         * testsuite/Makefile.in: Regenerate.
771         * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
772         (_Async_state_common::_M_join): Simplify use of std::call_once and
773         corresponding explicit instantiation.
774         (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
775         (__bind_simple): Remove definitions and explicit instantiation that
776         are not required by exported symbols.
778 2018-07-16  Jonathan Wakely  <jwakely@redhat.com>
780         * scripts/create_testsuite_files: Fix typo in comment.
782         PR libstdc++/86537
783         * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
784         non-standard partial specialization.
785         * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
786         (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
787         * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
789 2018-07-16  Andreas Krebbel  <krebbel@linux.ibm.com>
791         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
792         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
793         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
795 2018-07-06  François Dumont  <fdumont@gcc.gnu.org>
797         * include/debug/functions.h (__gnu_debug::__check_string): Move...
798         * include/debug/string (__gnu_debug::__check_string): ... here.
799         (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
800         (__glibcxx_check_string_n_constructor): New.
801         (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
802         Use latter.
803         (__glibcxx_check_string_constructor): New.
804         (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
805         Use latter.
806         * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
807         * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
809 2018-07-06  Jonathan Wakely  <jwakely@redhat.com>
811         PR libstdc++/84928 use std::move in <numeric> algorithms
812         * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
813         conditionally move, according to __cplusplus value.
814         (accumulate, inner_product, partial_sum, adjacent_difference): Use
815         _GLIBCXX_MOVE_IF_20.
816         * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
817         * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
818         * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
819         * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
821         * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
823         P0935R0 Eradicating unnecessarily explicit default constructors
824         * config/abi/pre/gnu.ver: Tighten existing patterns and export new
825         default constructor symbols.
826         * include/std/sstream (basic_stringbuf, basic_istringstream)
827         (basic_ostringstream, basic_stringstream): Remove default arguments
828         from explicit constructors taking ios_base::openmode and add separate
829         non-explicit default constructors.
830         * testsuite/27_io/basic_istringstream/cons/default.cc: New.
831         * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
832         * testsuite/27_io/basic_stringstream/cons/default.cc: New.
833         * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
834         * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
836         * include/std/variant (__accepted_index): Use void_t.
838 2018-07-05  Jonathan Wakely  <jwakely@redhat.com>
840         PR libstdc++/85831
841         * config/abi/pre/gnu.ver: Export move constructors and move
842         assignment operators for std::logic_error and std::runtime_error.
843         * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
844         _GLIBCXX_USE_NOEXCEPT.
845         (logic_error, runtime_error): Declare move constructors and move
846         assignment operators. When not declared already, define copy
847         constructors and copy assignment operators as explicit-defaulted.
848         (domain_error, invalid_argument, length_error, out_of_range)
849         (overflow_error, underflow_error): Define move constructors and move
850         assignment operators as explicitly-defaulted.
851         * libsupc++/exception.h (exception): Likewise.
852         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
853         move constructors and move assignment operators as defaulted.
854         * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
855         assignment operators are defined.
857         * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
858         COW strings.
859         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
860         Likewise.
861         * testsuite/21_strings/basic_string/requirements/
862         explicit_instantiation/debug.cc: Likewise.
864         PR libstdc++/58265
865         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
866         (basic_string::assign(basic_string&&)): Add conditional noexcept
867         depending on the allocator's is_always_equal property (LWG 2063).
868         * testsuite/21_strings/basic_string/modifiers/assign/char/
869         move_assign.cc: Check for non-throwing exception specification.
870         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
871         move_assign.cc: Likewise.
873         PR libstdc++/58265
874         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
875         [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
876         Add GLIBCXX_NOEXCEPT.
877         (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
878         to depend on the allocator's is_always_equal property (LWG 2063).
879         (basic_string::swap(basic_string&)): Likewise.
880         * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
881         (basic_string::swap(basic_string&)): Likewise.
882         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
883         Check is_nothrow_move_assignable.
884         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
885         Check is_nothrow_move_assignable.
886         * testsuite/21_strings/basic_string/cons/char/
887         noexcept_move_construct.cc: Likewise.
888         * testsuite/21_strings/basic_string/cons/wchar_t/
889         noexcept_move_construct.cc: Likewise.
891 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
893         P0646R1 Improving the Return Value of Erase-Like Algorithms I
894         * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
895         Define.
896         (forward_list::__remove_return_type): Define typedef as size_type or
897         void, according to __cplusplus value.
898         (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
899         empty, according to __cplusplus value.
900         (forward_list::remove, forward_list::unique): Use typedef and macro
901         to change return type and add abi-tag for C++2a.
902         (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
903         typedef to change return type for C++2a.
904         * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
905         (forward_list::remove, forward_list::remove_if<Pred>)
906         (forward_list::unique<BinPred>): Return number of removed elements
907         for C++2a.
908         * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
909         (list::remove, list::unique, list::remove_if<Predicate>)
910         (list::unique<BinaryPredicate>): Return number of removed elements
911         for C++2a.
912         * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
913         (list::__remove_return_type): Define typedef as size_type or
914         void, according to __cplusplus value.
915         (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
916         empty, according to __cplusplus value.
917         (list::remove, list::unique): Use typedef and macro to change return
918         type and add abi-tag for C++2a.
919         (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
920         typedef to change return type for C++2a.
921         * include/std/version (__cpp_lib_list_remove_return_type): Define.
922         * testsuite/23_containers/forward_list/operations/
923         remove_cxx20_return.cc: New.
924         * testsuite/23_containers/forward_list/operations/
925         unique_cxx20_return.cc: New.
927         P0458R2 Checking for Existence of an Element in Associative Containers
928         * include/bits/stl_map.h (map::contains): Add for C++2a.
929         * include/bits/stl_multimap.h (multimap::contains): Likewise.
930         * include/bits/stl_multiset.h (multiset::contains): Likewise.
931         * include/bits/stl_set.h (set::contains): Likewise.
932         * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
933         (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
934         (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
935         (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
936         * include/bits/unordered_map.h (unordered_map::contains)
937         (unordered_multimap::contains): Add for C++2a.
938         * include/bits/unordered_set.h (unordered_set::contains)
939         (unordered_multiset::contains): Likewise.
940         * testsuite/23_containers/map/operations/contains.cc: New.
941         * testsuite/23_containers/multimap/operations/contains.cc: New.
942         * testsuite/23_containers/multiset/operations/contains.cc: New.
943         * testsuite/23_containers/set/operations/contains.cc: New.
944         * testsuite/23_containers/unordered_map/operations/contains.cc: New.
945         * testsuite/23_containers/unordered_multimap/operations/contains.cc:
946         New.
947         * testsuite/23_containers/unordered_multiset/operations/contains.cc:
948         New.
949         * testsuite/23_containers/unordered_set/operations/contains.cc: New.
951 2018-07-04  François Dumont  <fdumont@gcc.gnu.org>
953         PR libstdc++/86272
954         * include/debug/string
955         (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
956         Use __glibcxx_check_insert_range.
957         * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
958         __gnu_debug::string when _GLIBCXX_DEBUG.
959         * 21_strings/basic_string/init-list.cc: Likewise.
960         * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
961         * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
962         * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
963         * 21_strings/basic_string/types/1.cc: Likewise.
965 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
967         * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
968         target for std::random_device.
969         * testsuite/26_numerics/random/random_device/cons/default.cc:
970         Likewise.
971         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
972         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
973         * testsuite/experimental/random/randint.cc: Likewise.
974         * testsuite/lib/libstdc++.exp
975         (check_effective_target_random_device): New proc.
977 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
978             Jakub Jelinek  <jakub@redhat.com>
980         * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
982 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
984         PR libstdc++/86398
985         * include/std/type_traits (is_trivially_constructible): Check
986         is_constructible before __is_trivially_constructible.
987         * testsuite/20_util/is_trivially_constructible/value.cc: Add more
988         tests, including negative cases.
989         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
990         zero for dg-error lineno.
991         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
992         Likewise.
994         * include/std/bit (__rotl, __rotr): Avoid branch.
995         (_If_is_unsigned_integer): Use remove_cv_t.
996         * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
998 2018-07-03  Jonathan Wakely  <jwakely@redhat.com>
1000         P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
1001         * include/Makefile.am: Add new header.
1002         * include/Makefile.in: Regenerate.
1003         * include/precompiled/stdc++.h: Include new header.
1004         * include/std/bit: New header.
1005         (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
1006         (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
1007         Define for C++14.
1008         [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
1009         (countr_one, popcount): Define for C++2a. Also overload for std::byte.
1010         (ispow2, ceil2, floor2, log2p1): Define for C++2a.
1011         [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
1012         std::byte.
1013         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
1014         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
1015         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
1016         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
1017         * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
1018         * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
1019         * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
1020         * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
1021         * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
1022         * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
1024         * include/bits/alloc_traits.h: Remove redundant preprocessor
1025         condition.
1027 2018-07-03  François Dumont  <fdumont@gcc.gnu.org>
1029         * include/bits/stl_algobase.h (__niter_wrap): New.
1030         (__copy_move_a2(_II, _II, _OI)): Use latter.
1031         (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
1032         (fill_n(_OI, _Size, const _Tp&)): Likewise.
1033         (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
1034         * include/debug/stl_iterator.h
1035         (std::__niter_base(const __gnu_cxx::_Safe_iterator<
1036         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
1037         * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
1038         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
1040 2018-07-02  Jonathan Wakely  <jwakely@redhat.com>
1042         P0758R1 Implicit conversion traits
1043         * include/std/type_traits [__cplusplus > 201703]
1044         (__is_convertible_helper::__is_nothrow_type): Define new member.
1045         (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
1046         noexcept.
1047         (__is_convertible_helper<_From, _To, false>::__test_nothrow)
1048         (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
1049         new members.
1050         (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
1051         * testsuite/20_util/is_nothrow_convertible/value.cc: New.
1052         * testsuite/20_util/is_nothrow_convertible/requirements/
1053         explicit_instantiation.cc: New.
1054         * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
1055         New.
1057         P0887R1 The identity metafunction
1058         * include/std/type_traits (type_identity, type_identity_t): Define
1059         for C++2a.
1060         * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
1061         * testsuite/20_util/type_identity/requirements/
1062         explicit_instantiation.cc:New.
1063         * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
1065         * include/bits/regex.h (sub_match::operator string_type): Call str().
1066         (sub_match::compare): Use _M_str() instead of str().
1067         (sub_match::_M_compare): New public function.
1068         (sub_match::__string_view): New helper type.
1069         (sub_match::_M_str): New overloaded functions to avoid creating a
1070         string_type object when not needed.
1071         (operator==, operator!=, operator<, operator>, operator<=, operator>=):
1072         Use sub_match::_M_compare instead of creating string_type objects.
1073         Fix Doxygen comments.
1074         * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
1075         (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
1076         simplify.
1077         (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
1078         __enable_if_t.
1079         * include/std/type_traits (__enable_if_t): Define for C++11.
1080         * testsuite/28_regex/sub_match/compare.cc: New.
1081         * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
1082         trait.
1083         (input_iterator_wrapper): Use remove_cv for value_type argument of
1084         std::iterator base class.
1086 2018-06-29  Jonathan Wakely  <jwakely@redhat.com>
1088         * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
1089         Add whitespace to dejagnu directive.
1090         * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
1092 2018-06-27  François Dumont  <fdumont@gcc.gnu.org>
1094         * include/bits/stl_vector.h
1095         (struct _Vector_base<>::_Vector_impl_data): New.
1096         (struct _Vector_base<>::_Vector_impl): Inherit from latter.
1097         (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
1098         (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
1099         (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
1100         (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
1101         (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
1102         (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
1103         (_Vector_base()): Default.
1104         (_Vector_base(_Vector_base&&)): Default.
1105         (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
1106         (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
1107         (_Vector_base::_M_create_storage(size_t)): Make protected.
1108         (vector()): Default.
1109         (vector(vector&&)): Default.
1110         (vector(vector&&, const allocator_type&, true_type)): New.
1111         (vector(vector&&, const allocator_type&, false_type)): New.
1112         (vector(vector&&, const allocator_type&)): Use latters.
1113         (vector(_InputIte, _InputIte, const allocator_type&)): Call
1114         _M_range_initialize directly.
1115         * include/debug/vector
1116         (vector(vector&&, const allocator_type&)): Add noexcept qualification.
1117         * testsuite/23_containers/vector/allocator/default_init.cc: New.
1118         * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
1119         static assertions.
1121 2018-06-27  Jonathan Wakely  <jwakely@redhat.com>
1123         * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
1124         (__is_byte<byte>): Define specialization for std::byte.
1126         PR libstdc++/86138
1127         * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
1128         Declare explicit instantiations of COW empty reps and I/O functions.
1130 2018-06-26  David Edelsohn  <dje.gcc@gmail.com>
1132         * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
1133         directives.
1134         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
1136 2018-06-26  Jonathan Wakely  <jwakely@redhat.com>
1138         * include/bits/regex.tcc (regex_iterator::operator==): Add missing
1139         noexcept.
1141 2018-06-25  Jonathan Wakely  <jwakely@redhat.com>
1143         PR libstdc++/86112
1144         * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
1145         Replace dict comprehension.
1147         PR libstdc++/81092
1148         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
1150         PR libstdc++/86292
1151         * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
1152         Add try-catch block.
1153         * testsuite/23_containers/vector/cons/86292.cc: New.
1155         * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
1157         * include/experimental/algorithm (sample, shuffle): Add new overloads
1158         using per-thread random number engine.
1159         * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
1160         dependencies by using __gnu_test::test_container.
1161         * testsuite/experimental/algorithm/sample-2.cc: New.
1162         * testsuite/experimental/algorithm/shuffle.cc: New.
1164 2018-06-22  Jonathan Wakely  <jwakely@redhat.com>
1166         * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
1167         different size_t mangling on 32-bit targets.
1169         PR libstdc++/86280
1170         * include/experimental/memory_resource
1171         (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
1172         enough for result of left shift.
1174         PR libstdc++/86138
1175         * include/bits/basic_string.tcc:
1176         [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
1177         (basic_string<char>::_Rep::_S_empty_rep_storage)
1178         (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
1179         instantiation declarations.
1180         [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
1181         explicit instantiation declarations.
1182         * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
1183         * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
1185 2018-06-21  Jonathan Wakely  <jwakely@redhat.com>
1187         PR libstdc++/83328
1188         * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
1189         * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
1190         * configure: Regenerate.
1191         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
1192         (basic_string::insert(const_iterator, initializer_list<C>)): Add.
1193         [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
1194         (basic_string::insert(iterator, initializer_list<C>)): Suppress
1195         definition.
1196         * include/debug/string (basic_string::insert(iterator, C)): Change
1197         first parameter to const_iterator.
1198         (basic_string::insert(iterator, size_type, C)): Likewise. Change
1199         return type to iterator.
1200         (basic_string::insert(iterator, InputIterator, InputIterator)):
1201         Likewise.
1202         (basic_string::insert(iterator, initializer_list<C>)): Change first
1203         parameter to const_iterator and return type to iterator.
1204         * src/c++11/string-inst.cc: Extend comment.
1205         * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
1206         New.
1207         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
1208         New.
1209         * testsuite/util/testsuite_abi.cc: Add new symbol version.
1211         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
1213         PR libstdc++/70940
1214         * include/experimental/memory_resource
1215         (__resource_adaptor_imp::do_deallocate): Add missing return.
1216         * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
1217         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
1218         resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
1219         __gnu_cxx::malloc_allocator.
1221         PR libstdc++/70940
1222         * include/experimental/memory_resource (__resource_adaptor_common):
1223         New base class.
1224         (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
1225         pointer from unaligned, and vice versa.
1226         (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
1227         allocated pointer to meet alignment request.
1228         (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
1229         original pointer for deallocation.
1230         (__resource_adaptor_imp::do_is_equal): Reformat.
1231         (__resource_adaptor_imp::_S_aligned_size): Remove.
1232         (__resource_adaptor_imp::_S_supported): Remove.
1233         (new_delete_resource): Use __gnu_cxx::new_allocator.
1234         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
1235         extended alignments and use debug_allocator to check for matching
1236         allocate/deallocate pairs.
1238 2018-06-21  François Dumont  <fdumont@gcc.gnu.org>
1240         * include/debug/safe_iterator.h
1241         (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
1242         Compare __x base iterator with a value-initialized iterator of the
1243         same type.
1245 2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
1247         PR libstdc++/70966
1248         * include/experimental/memory_resource (__resource_adaptor_imp): Add
1249         static assertions to enforce requirements on pointer types.
1250         (__resource_adaptor_imp::get_allocator()): Add noexcept.
1251         (new_delete_resource, null_memory_resource): Return address of an
1252         object with dynamic storage duration.
1253         (__null_memory_resource): Remove.
1254         * testsuite/experimental/memory_resource/70966.cc: New.
1256         * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
1257         missed from recent commit.
1259 2018-06-19  Jonathan Wakely  <jwakely@redhat.com>
1261         * include/std/utility: Remove unused <exception> header.
1263 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
1265         LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
1266         * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
1267         (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
1268         a specialization of std::pair.
1269         * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
1270         pair elements are constructed correctly.
1272         LWG 2989 hide path iostream operators from normal lookup
1273         * include/bits/fs_path.h (operator<<, operator>>): Define inline as
1274         friends.
1275         * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
1277         LWG 3050 Fix cv-qualification of convertibility constraints
1278         * include/std/chrono (duration, operator*, operator/, operator%): Use
1279         const-qualified type as source type in is_convertible constraints.
1280         * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
1281         * testsuite/20_util/duration/cons/dr3050.cc: New.
1282         * testsuite/20_util/duration/literals/range.cc: Rename to...
1283         * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
1284         dg-error lineno.
1286 2018-06-18  Maya Rashish  <coypu@sdf.org>
1288         * crossconfig.m4: Handle OpenBSD just like NetBSD.
1289         * configure: Rebuilt.
1291 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
1293         P0754R2 <version> header
1294         * include/Makefile.am: Add new header.
1295         * include/Makefile.in: Regenerate.
1296         * include/bits/c++config: Change doxygen comment to suggest <version>
1297         instead of <iosfwd>.
1298         * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
1299         unconditionally.  Add C++17 and C++20 headers.
1300         * include/std/version: New header.
1301         * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
1302         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
1303         * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
1304         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
1305         * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
1306         * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
1307         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
1308         New.
1309         * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
1310         * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
1311         * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
1312         * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
1313         * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
1314         * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
1315         * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
1316         New.
1317         * testsuite/18_support/headers/version/macros.cc: New.
1318         * testsuite/18_support/headers/version/macros.cc: New.
1320         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
1321         enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
1322         symlink.
1323         * config.h.in: Regenerate.
1324         * configure: Regenerate.
1325         * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
1327         LWG 3035. std::allocator's constructors should be constexpr
1328         * include/bits/allocator.h (allocator): Add constexpr to constructors
1329         for C++2a. Replace dynamic exception specifications with NOTHROW
1330         macro.
1331         (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
1332         NOTHROW.
1333         * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
1334         * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
1335         to constructors for C++2a.
1336         * include/ext/new_allocator.h (new_allocator): Likewise.
1338 2018-06-16  Jonathan Wakely  <jwakely@redhat.com>
1340         LWG 3076 basic_string CTAD ambiguity
1341         * doc/xml/manual/intro.xml: Document LWG 3076 change.
1342         * include/bits/basic_string.h
1343         [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
1344         (basic_string(const _CharT*, const _Alloc&)): Turn into a function
1345         template constrained by _RequireAllocator.
1346         (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
1347         * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
1348         Define.
1349         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
1350         deduction
1351         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1352         Likewise.
1354 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
1356         PR libstdc++/86169
1357         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1358         (basic_string::data()): Unshare string.
1359         * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
1360         New.
1362         * include/std/string_view (basic_string_view(const CharT*)): Remove
1363         check for null pointer and add nonnull attribute.
1364         (compare(const CharT*), compare(size_type, size_type, const CharT*))
1365         (find(const CharT*, size_type), rfind(const CharT*, size_type))
1366         (find_first_of(const CharT*, size_type))
1367         (find_last_of(const CharT*, size_type))
1368         (find_first_not_of(const CharT*, size_type))
1369         (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
1370         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
1371         * testsuite/21_strings/basic_string_view/operations/compare/char/
1372         nonnull.cc: New.
1373         * testsuite/21_strings/basic_string_view/operations/find/char/
1374         nonnull.cc: New.
1375         * testsuite/21_strings/basic_string_view/operations/rfind/char/
1376         nonnull.cc: New.
1378         PR libstdc++/86168
1379         * include/bits/random.h (random_device(const string&)): Remove
1380         default argument.
1382         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
1383         define for C++17 and above.
1385         LWG 2993 reference_wrapper<T> conversion from T&&
1386         * doc/xml/manual/intro.xml: Document LWG 2993 change.
1387         * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
1388         (reference_wrapper(_Tp&&)): Remove.
1389         (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
1390         template.
1391         (reference_wrapper): Add deduction guide.
1392         * testsuite/20_util/reference_wrapper/deduction.cc: New.
1393         * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
1395         LWG 3039 Unnecessary decay in thread and packaged_task
1396         * include/std/future (__constrain_pkgdtask): Replace with ...
1397         (packaged_task::__not_same): New alias template, using
1398         __remove_cvref_t instead of decay.
1399         * include/std/thread (thread::__not_same): Add comment.
1401 2018-06-14  Jonathan Wakely  <jwakely@redhat.com>
1403         LWG 3075 basic_string needs deduction guides from basic_string_view
1404         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
1405         deduction from string views.
1406         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1407         Likewise.
1409         LWG 3074 make scalar types non-deduced in valarray non-member functions
1410         * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
1411         scalar parameters to be a non-deduced context.
1412         * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
1413         whitespace.
1414         * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
1415         * testsuite/26_numerics/valarray/transcend.cc: New.
1417         * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
1418         Move back to <utility>.
1419         * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
1420         Restore to here.
1422         P0935R0 Eradicating unnecessarily explicit default constructors
1423         * include/backward/strstream (strstreambuf): Add non-explicit default
1424         constructor.
1425         * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
1426         Likewise.
1427         * include/bits/regex.h (match_results): Likewise.
1428         * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
1429         default constructor.
1430         * testsuite/22_locale/conversions/string/1.cc: Likewise.
1431         * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
1432         * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
1434         * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
1435         macro from <utility> and change type to long.
1436         * include/std/utility (__cpp_lib_tuple_element_t): Remove.
1437         * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
1438         macro.
1440         P0935R0 Eradicating unnecessarily explicit default constructors
1441         * include/bits/random.h (uniform_real_distribution::param_type)
1442         (normal_distribution::param_type, lognormal_distribution::param_type)
1443         (gamma_distribution::param_type, chi_squared_distribution::param_type)
1444         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
1445         (student_t_distribution::param_type)
1446         (bernoulli_distribution::param_type)
1447         (binomial_distribution::param_type)
1448         (geometric_distribution::param_type)
1449         (negative_binomial_distribution::param_type)
1450         (poisson_distribution::param_type)
1451         (exponential_distribution::param_type)
1452         (weibull_distribution::param_type)
1453         (extreme_value_distribution::param_type): Add non-explicit default
1454         constructors. Remove default argument for first parameter of explicit
1455         constructors.
1456         * include/bits/uniform_int_dist.h
1457         (uniform_int_distribution::param_type): Likewise.
1458         * include/ext/random
1459         (beta_distribution::param_type, rice_distribution::param_type)
1460         (nakagami_distribution::param_type, pareto_distribution::param_type)
1461         (k_distribution::param_type, arcsine_distribution::param_type)
1462         (hoyt_distribution::param_type, triangular_distribution::param_type)
1463         (von_mises_distribution::param_type)
1464         (hypergeometric_distribution::param_type)
1465         (logistic_distribution::param_type)
1466         (uniform_inside_sphere_distribution::param_type): Likewise.
1467         (uniform_on_sphere_distribution::param_type): Make default constructor
1468         non-explicit.
1469         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
1470         Test param_type for non-explicit default constructor.
1471         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
1472         Likewise.
1473         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
1474         Likewise.
1475         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
1476         Likewise.
1477         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
1478         Likewise.
1479         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
1480         Likewise.
1481         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
1482         Likewise.
1483         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
1484         Likewise.
1485         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
1486         Likewise.
1487         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
1488         Likewise.
1489         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
1490         Likewise.
1491         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
1492         Likewise.
1493         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
1494         Likewise.
1495         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
1496         Likewise.
1497         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
1498         Likewise.
1499         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
1500         Likewise.
1501         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
1502         Likewise.
1503         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
1504         Likewise.
1505         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
1506         Likewise.
1507         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
1508         Likewise.
1509         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
1510         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
1511         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
1512         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
1513         Likewise.
1514         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
1515         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
1516         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
1517         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
1518         Likewise.
1519         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
1520         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
1521         * testsuite/ext/random/triangular_distribution/cons/default.cc:
1522         Likewise.
1523         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
1524         Likewise.
1525         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
1526         Likewise.
1527         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
1528         Likewise.
1530 2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
1531             Jonathan Wakely  <jwakely@redhat.com>
1533         PR libstdc++/83982
1534         * include/bits/vector.tcc (vector::_M_default_append(size_type)):
1535         Default-construct new elements before moving existing ones.
1536         * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
1537         New.
1539 2018-06-13  Jonathan Wakely  <jwakely@redhat.com>
1541         PR libstdc++/86127
1542         * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
1543         unused typedef.
1544         (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
1545         Use node allocator to create and destroy elements.
1546         (forward_list::_Tp_alloc_type): Remove unused typedef.
1547         (forward_list::_Alloc_traits): Use allocator_traits instead of
1548         __gnu_cxx::__alloc_traits.
1550 2018-06-13  François Dumont  <fdumont@gcc.gnu.org>
1552         * include/debug/helper_functions.h
1553         (__gnu_debug::_Safe_iterator<>): Add declaration.
1554         (__can_advance(_Ite, _Size)): New.
1555         (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
1556         * include/debug/functions.h
1557         (__gnu_debug::_Safe_iterator<>): Remove declaration.
1558         * include/debug/stl_iterator.h
1559         (__can_advance(const _Safe_iterator<>&)): New definition.
1560         * include/debug/stl_iterator.h
1561         (__can_advance(const std::reverse_iterator<>&, _Size)): New.
1562         (__can_advance(const std::move_iterator<>&, _Size)): New.
1563         * include/debug/macros.h (__glibcxx_check_can_increment): New.
1564         * include/debug/debug.h (__glibcxx_requires_can_increment): New.
1565         * include/bits/stl_algobase.h (fill_n): Use latter.
1566         * testsuite/25_algorithms/fill_n/2.cc: New.
1567         * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
1568         * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
1569         * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
1570         * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
1572         * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
1573         (__glibcxx_requires_can_decrement_range): New.
1575 2018-06-12  François Dumont  <fdumont@gcc.gnu.org>
1577         * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
1578         (__glibcxx_check_can_decrement_range): New.
1579         * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
1580         __glibcxx_requires_can_increment_range.
1581         (std::move(_II, _II, _OI)): Likewise.
1582         (std::copy_backward(_BI, _BI, _BI2)): Use
1583         __glibcxx_requires_can_decrement_range.
1584         (std::move_backward(_BI, _BI, _BI2)): Likewise.
1585         * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
1586         * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
1587         * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
1588         * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
1589         * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
1590         * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
1592 2018-06-12  Jonathan Wakely  <jwakely@redhat.com>
1594         P0935R0 Eradicating unnecessarily explicit default constructors
1595         * include/bits/random.h (linear_congruential_engine)
1596         (mersenne_twister_engine, subtract_with_carry_engine, random_device)
1597         (uniform_real_distribution, normal_distribution)
1598         (lognormal_distribution, gamma_distribution, chi_squared_distribution)
1599         (cauchy_distribution, fisher_f_distribution, student_t_distribution)
1600         (bernoulli_distribution, binomial_distribution,geometric_distribution)
1601         (negative_binomial_distribution, exponential_distribution)
1602         (weibull_distribution, extreme_value_distribution): Add non-explicit
1603         default constructors. Remove default argument for first parameter of
1604         explicit constructors.
1605         (piecewise_constant_distribution, piecewise_linear_distribution):
1606         Make default constructor non-explicit.
1607         * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
1608         non-explicit default constructors. Remove default argument for first
1609         parameter of explicit constructor.
1610         * include/ext/random
1611         (simd_fast_mersenne_twister_engine, beta_distribution)
1612         (rice_distribution, nakagami_distribution, pareto_distribution)
1613         (k_distribution, arcsine_distribution, hoyt_distribution)
1614         (triangular_distribution, von_mises_distribution)
1615         (hypergeometric_distribution, logistic_distribution)
1616         (uniform_inside_sphere_distribution): Likewise.
1617         (uniform_on_sphere_distribution): Make default constructor
1618         non-explicit.
1619         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
1620         Test for non-explicit default constructor. Fix references to standard.
1621         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
1622         Likewise.
1623         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
1624         Likewise.
1625         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
1626         Likewise.
1627         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
1628         Likewise.
1629         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
1630         Likewise.
1631         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
1632         Likewise.
1633         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
1634         Likewise.
1635         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
1636         Likewise.
1637         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
1638         Likewise.
1639         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
1640         Likewise.
1641         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
1642         Likewise.
1643         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
1644         Likewise.
1645         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
1646         Likewise.
1647         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
1648         Likewise.
1649         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
1650         Likewise.
1651         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
1652         Likewise.
1653         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
1654         Likewise.
1655         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
1656         Likewise.
1657         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
1658         Likewise.
1659         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
1660         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
1661         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
1662         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
1663         Likewise.
1664         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
1665         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
1666         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
1667         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
1668         Likewise.
1669         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
1670         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
1671         * testsuite/ext/random/triangular_distribution/cons/default.cc:
1672         Likewise.
1673         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
1674         Likewise.
1675         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
1676         Likewise.
1677         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
1678         Likewise.
1679         * testsuite/util/testsuite_common_types.h
1680         (implicitly_default_constructible): New helper.
1682 2018-06-08  Jonathan Wakely  <jwakely@redhat.com>
1684         * include/bits/ios_base.h (ios::Init::Init(const Init&))
1685         (ios::Init::operator=): Define as defaulted.
1686         * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
1687         Likewise.
1688         * include/bits/stream_iterator.h (istream_iterator::operator=)
1689         (ostream_iterator::operator=): Likewise.
1690         * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
1691         Likewise.
1692         * include/std/bitset (bitset::reference::reference(const reference&)):
1693         Likewise.
1694         * include/std/complex (complex<float>::complex(const complex&))
1695         (complex<double>::complex(const complex&))
1696         (complex<long double>::complex(const complex&)): Likewise.
1698 2018-06-07  Jonathan Wakely  <jwakely@redhat.com>
1700         * include/bits/regex.h (sub_match): Add noexcept to default
1701         constructor and length observer.
1702         (match_results): Add noexcept to default constructor and observers
1703         with no preconditions. Define destructor as defaulted.
1704         (operator==, operator!=, swap): Add noexcept.
1705         (regex_iterator): Add default member initializers and define default
1706         constructor and destructor as defaulted. Add noexcept to equality
1707         and dereference operators.
1709 2018-06-07  François Dumont  <fdumont@gcc.gnu.org>
1711         * src/c++11/debug.cc
1712         (_Safe_iterator_base::_M_detach()): Reset state only if needed.
1713         (_Safe_iterator_base::_M_detach_single()): Likewise.
1714         (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
1715         (_Safe_local_iterator_base::_M_detach_single()): Likewise.
1717 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
1719         * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
1720         move of const value.
1722 2018-06-06  Jakub Jelinek  <jakub@redhat.com>
1724         PR c++/86068
1725         * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
1726         rather than __cpp_transactional_memory >= 201505L.
1728 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
1730         PR libstdc++/86008
1731         * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
1732         Define new partial specialization.
1733         * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
1734         new overload.
1735         (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
1736         value not reference for iteration.
1737         * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
1738         comment.
1739         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
1740         * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
1741         comment.
1743 2018-06-05  Jonathan Wakely  <jwakely@redhat.com>
1745         * include/std/type_traits: Fix comment typos.
1747         * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
1748         mingw* targets.
1749         * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
1750         * testsuite/experimental/filesystem/operations/read_symlink.cc:
1751         Likewise.
1753 2018-06-05  François Dumont  <fdumont@gcc.gnu.org>
1755         * include/bits/stl_tempbuf.h
1756         (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
1757         (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
1758         * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
1759         * include/bits/stl_algo.h (__stable_partition): Adapt.
1760         (__inplace_merge): Adapt.
1761         (__stable_sort): Adapt.
1763 2018-06-04  Jonathan Wakely  <jwakely@redhat.com>
1765         PR libstdc++/85930
1766         * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
1767         unconditionally. Remove redundant declaration.
1768         [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
1769         alignment-specifier.
1771         * include/bits/postypes.h (fpos): Define special members as defaulted.
1773         PR libstdc++/85930
1774         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
1775         the static variable correctly.
1777 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
1779         PR libstdc++/78870 support std::filesystem on Windows
1780         * config.h.in: Regenerate.
1781         * configure: Regenerate.
1782         * configure.ac: Check for link, readlink and symlink.
1783         * include/bits/fs_path.h (path::operator/=(const path&)): Move
1784         definition out of class body.
1785         (path::is_absolute(), path::_M_append(path)): Likewise.
1786         (operator<<(basic_ostream, const path&)): Use std::quoted directly.
1787         (operator>>(basic_istream, path&)): Likewise.
1788         (u8path): Reorder definitions and fix Windows implementation.
1789         (path::is_absolute()): Define inline and fix for Windows.
1790         [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
1791         Define POSIX version inline.
1792         (path::_M_append(path)): Define inline.
1793         * include/experimental/bits/fs_path.h (path::is_absolute()): Move
1794         definition out of class body.
1795         (operator<<(basic_ostream, const path&)): Fix type of delimiter and
1796         escape characters.
1797         (operator>>(basic_istream, path&)): Likewise.
1798         (path::is_absolute()): Define inline and fix for Windows.
1799         * src/filesystem/dir-common.h (__gnu_posix): New namespace.
1800         (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
1801         (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
1802         Define as adaptors for Windows functions/types or as
1803         using-declarations for POSIX functions/types.
1804         (_Dir_base, get_file_type): Qualify names to use declarations from
1805         __gnu_posix namespace.
1806         (_Dir_base::is_dor_or_dotdot): New helper functions.
1807         * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
1808         names to use declarations from __gnu_posix namespace.
1809         * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
1810         (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
1811         (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
1812         (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
1813         (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
1814         (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
1815         Define as adaptors for Windows functions/types or as
1816         using-declarations for POSIX functions/types.
1817         (stat_type, do_copy_file): Qualify names to use declarations from
1818         __gnu_posix namespace.
1819         (do_space): Declare new function.
1820         (make_file_type): Only use S_ISLNK if defined.
1821         * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
1822         path::value_type not char.
1823         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
1824         names to use declarations from __gnu_posix namespace.
1825         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
1826         add implementation for Windows.
1827         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
1828         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
1829         [!_PC_PATH_MAX]: Don't use pathconf.
1830         [PATH_MAX]: Use if defined.
1831         (filesystem::current_path(const path&, error_code&))
1832         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
1833         (filesystem::last_write_time, filesystem::permissions): Use names
1834         from __gnu_posix.
1835         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
1836         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
1837         implementation for Windows.
1838         (filesystem::rename, filesystem::resize_file): Use names from
1839         __gnu_posix.
1840         (filesystem::space): Use do_space.
1841         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
1842         (filesystem::status, filesystem::symlink_status): Use names from
1843         __gnu_posix.
1844         (filesystem::temp_directory_path): Add implementation for Windows.
1845         * src/filesystem/path.cc (dot): Define constant.
1846         (path::replace_extension): Use dot.
1847         (path::_M_find_extension): Likewise. Use path::string_type not
1848         std::string.
1849         (path::_M_split_cmpts): Use dot.
1850         (filesystem_error::_M_get_what): Use u8string() not native().
1851         * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
1852         Qualify names to use declarations from __gnu_posix namespace.
1853         * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
1854         correct error_code.
1855         (filesystem::absolute(const path&, error_code&)): Add implementation
1856         for Windows.
1857         (char_ptr, filesystem::canonical): Use path::value_type not char.
1858         (do_copy_file): Use names from __gnu_posix.
1859         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
1860         sendfile.
1861         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
1862         names to use declarations from __gnu_posix namespace.
1863         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
1864         add implementation for Windows.
1865         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
1866         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
1867         [!_PC_PATH_MAX]: Don't use pathconf.
1868         [PATH_MAX]: Use if defined.
1869         (filesystem::current_path(const path&, error_code&))
1870         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
1871         (filesystem::last_write_time, filesystem::permissions): Use names
1872         from __gnu_posix.
1873         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
1874         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
1875         implementation for Windows.
1876         (filesystem::rename, filesystem::resize_file): Use names from
1877         __gnu_posix.
1878         (do_space): Define.
1879         (filesystem::space): Use do_space.
1880         (filesystem::status, filesystem::symlink_status): Use names from
1881         __gnu_posix.
1882         (filesystem::temp_directory_path): Add implementation for Windows.
1883         * src/filesystem/std-path.cc
1884         [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
1885         Define for Windows.
1886         (dot): Define constant.
1887         (path::replace_extension, is_dot): Use dot.
1888         (path::lexically_normal): Check _M_type instead of calling
1889         non-existent function.
1890         (path::_M_find_extension): Use dot. Use path::string_type not
1891         std::string.
1892         (path::_M_split_cmpts): Use dot.
1893         (filesystem_error::_M_get_what): Use u8string() not native().
1894         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
1895         use symlinks.
1896         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
1897         Likewise.
1898         * testsuite/27_io/filesystem/operations/absolute.cc: Use
1899         __gnu_test::root_path() instead of "/" and add Windows-specific tests.
1900         * testsuite/27_io/filesystem/operations/canonical.cc: Use
1901         path::string() to get narrow string, not path::native().
1902         * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
1903         with std::filesystem::path not std::basic_string.
1904         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
1905         * testsuite/27_io/filesystem/operations/exists.cc: Use
1906         __gnu_test::root_path() instead of "/".
1907         * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
1908         fstreams with std::filesystem::path not std::basic_string.
1909         * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
1910         path::string() to get narrow string.
1911         * testsuite/27_io/filesystem/operations/space.cc: Check results for
1912         errors, expect sensible values otherwise.
1913         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
1914         helpers for adjusting the environment on Windows.
1915         * testsuite/27_io/filesystem/path/append/path.cc: Test
1916         Windows-specific behaviour.
1917         * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
1918         of path::string_type objects.
1919         * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
1920         string to wide string on Windows.
1921         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
1922         for backslash as root-directory.
1923         * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
1924         path::string() to get narrow string.
1925         * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
1926         paths.
1927         * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
1928         not std::string.
1929         * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
1930         different definintion of absolute paths on Windows.
1931         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
1932         Do not use symlinks.
1933         * testsuite/experimental/filesystem/operations/absolute.cc: Test
1934         Windows behaviour.
1935         * testsuite/experimental/filesystem/operations/copy.cc: Construct
1936         fstreams with NTCTS not std::basic_string.
1937         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
1938         * testsuite/experimental/filesystem/operations/exists.cc: Use
1939         __gnu_test::root_path() instead of "/".
1940         * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
1941         fstreams with NTCTS not std::basic_string.
1942         * testsuite/experimental/filesystem/operations/last_write_time.cc:
1943         Use path::string() to get narrow string.
1944         * testsuite/experimental/filesystem/operations/space.cc: Use
1945         __gnu_test::root_path() instead of "/".
1946         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
1947         Add helpers for adjusting the environment on Windows.
1948         * testsuite/experimental/filesystem/path/append/path.cc: Use
1949         path::string() to get narrow strings for comparisons.
1950         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
1951         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
1952         Likewise.
1953         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
1954         * testsuite/experimental/filesystem/path/native/string.cc: Use
1955         string_type not std::string.
1956         * testsuite/experimental/filesystem/path/query/is_absolute.cc:
1957         Adjust for different definintion of absolute paths on Windows.
1958         * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
1959         function.
1960         (__gnu_test::scoped_file): Construct fstreams with NTCTS not
1961         std::basic_string.
1963 2018-05-31  Jonathan Wakely  <jwakely@redhat.com>
1965         PR libstdc++/85951
1966         * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
1967         uint_least16_t and uint_least32_t.
1968         (__make_unsigned<wchar_t>): Define unconditionally.
1969         (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
1970         typedefs.
1971         (__make_unsigned_selector_base): New type to provide helper templates.
1972         (__make_unsigned_selector<_Tp, false, true>): Reimplement using
1973         __make_unsigned_selector_base helpers.
1974         (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
1975         (__make_signed_selector<_Tp, true, false>): Remove intermediate
1976         typedefs.
1977         (__make_signed<wchar_t>, __make_signed<char16_t>)
1978         (__make_signed<char32_t>)): Define unconditionally.
1979         * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
1980         wchar_t, char16_t and char32_t are transformed correctly.
1981         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
1982         dg-error lineno.
1983         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
1984         wchar_t, char16_t and char32_t are transformed correctly.
1985         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
1986         dg-error lineno.
1988 2018-05-29  Jonathan Wakely  <jwakely@redhat.com>
1990         * include/std/variant (__erased_dtor): Qualify call to __get.
1992 2018-05-27  François Dumont  <fdumont@gcc.gnu.org>
1994         * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
1995         (_Rb_tree(const allocator_type&)): Use latter.
1996         * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
1997         (map(initializer_list<value_type>, const allocator_type&)): Likewise.
1998         (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
1999         * include/bits/stl_multimap.h
2000         (multimap(const allocator_type&)): Likewise.
2001         (multimap(initializer_list<value_type>, const allocator_type&)):
2002         Likewise.
2003         (multimap(_InputIterator, _InputIterator, const allocator_type&)):
2004         Likewise.
2005         * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
2006         (set(initializer_list<value_type>, const allocator_type&)): Likewise.
2007         (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
2008         * include/bits/stl_multiset.h
2009         (multiset(const allocator_type&)): Likewise.
2010         (multiset(initializer_list<value_type>, const allocator_type&)):
2011         Likewise.
2012         (multiset(_InputIterator, _InputIterator, const allocator_type&)):
2013         Likewise.
2015 2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
2017         PR libstdc++/85768
2018         * src/c++11/debug.cc: Remove backtrace usage.
2020 2018-05-24  Maya Rashish  <coypu@sdf.org>
2022         PR target/85904
2023         * crossconfig.m4: Test for aligned_alloc on netbsd.
2024         * configure: Regenerate.
2026 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
2028         PR libstdc++/69769
2029         PR libstdc++/85886
2030         * include/bits/atomic_base.h (__atomic_base::value_type)
2031         (__atomic_base::difference_type): Add new typedefs.
2032         * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
2033         (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
2034         (atomic<T*>::operator++, atomic<T*>::operator--)
2035         (atomic<T*>::operator+=, atomic<T*>::operator-=)
2036         (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
2037         to enforce C++17 requirement on pointer arithmetic.
2038         (__atomic_val_t, __atomic_diff_t): New alias templates.
2039         (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
2040         (atomic_compare_exchange_weak_explicit)
2041         (atomic_compare_exchange_strong_explicit, atomic_store)
2042         (atomic_exchange, atomic_compare_exchange_weak)
2043         (atomic_compare_exchange_strong): Use __atomic_val_t to make
2044         scalar parameters be non-deduced contexts.
2045         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
2046         (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
2047         atomic instead of __atomic_base, and use __atomic_diff_t for scalar
2048         parameters.
2049         (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
2050         (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
2051         (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
2052         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
2053         (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
2054         address types.
2055         * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
2056         * testsuite/29_atomics/atomic/69769.cc: New test.
2057         * testsuite/29_atomics/atomic/nonmembers.cc: New test.
2058         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
2059         Disable test for C++17 and later.
2060         * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
2061         * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
2062         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
2063         test.
2065 2018-05-23  Jonathan Wakely  <jwakely@redhat.com>
2067         * include/bits/fs_path.h (path::__is_encoded_char): Change from class
2068         template to alias template.
2069         (path::__value_type_is_char): Use remove_const_t.
2070         (path:_S_string_from_iter): New helper function.
2071         (path::_S_convert(InputIter, __null_terminated))
2072         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
2073         Use _S_string_from_iter.
2074         (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
2075         rep for COW strings.
2076         * include/experimental/bits/fs_path.h (path::__is_encoded_char):
2077         Change from class template to alias template.
2078         (path::__value_type_is_char): Use remove_const.
2079         (path:_S_string_from_iter): New helper function.
2080         (path::_S_convert(InputIter, __null_terminated))
2081         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
2082         Use _S_string_from_iter.
2083         * testsuite/27_io/filesystem/path/append/source.cc: Test appending
2084         wide strings.
2085         * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
2086         string equality, not path equivalence.
2087         * testsuite/27_io/filesystem/path/construct/format.cc: Check
2088         construction from std::string and std::wstring and input iterators.
2089         * testsuite/27_io/filesystem/path/construct/locale.cc: Check
2090         construction from iterators.
2091         * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
2092         exact string equality, not path equivalence.
2093         * testsuite/experimental/filesystem/path/construct/locale.cc: Check
2094         construction from iterators.
2096         * include/bits/fs_path.h (path::_M_type): Change default member
2097         initializer to _Filename.
2098         (path::begin): Create past-the-end iterator for empty path.
2099         * src/filesystem/std-path.cc (path::remove_filename()): Remove
2100         debugging check.
2101         (path::has_relative_path()): Return false for empty filenames.
2102         (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
2103         Fix offset of empty final component.
2104         * testsuite/27_io/filesystem/path/itr/components.cc: New.
2105         * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
2107 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
2109         Add support for opening file streams from wide character strings.
2110         * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
2111         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
2112         Define new overload.
2113         * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
2114         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
2115         Declare new overload.
2116         * configure.ac: Check for _wfopen.
2117         * crossconfig.m4: Likewise.
2118         * configure: Regenerate.
2119         * config.h.in: Regenerate.
2120         * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
2121         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
2122         Define new overload.
2123         * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
2124         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
2125         Declare new overload.
2126         [_GLIBCXX_HAVE__WFOPEN]
2127         (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
2128         (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
2129         (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
2130         (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
2131         (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
2132         (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
2133         new overloads.
2134         * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
2135         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
2136         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
2137         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
2138         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
2139         * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
2140         * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
2142 2018-05-21  François Dumont  <fdumont@gcc.gnu.org>
2144         PR libstdc++/85845
2145         * include/bits/stl_tree.h
2146         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
2147         qualification.
2149 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
2151         * src/filesystem/std-ops.cc (absolute): Report an error for empty
2152         paths.
2153         (weakly_canonical(const path&)): Do not call canonical on empty path.
2154         (weakly_canonical(const path&, error_code&)): Likewise.
2155         * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
2157         PR libstdc++/85818
2158         * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
2159         dg-require-filesystem-ts.
2161         PR libstdc++/85843
2162         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
2163         initialize base class to avoid warnings.
2165 2018-05-19  Jonathan Wakely  <jwakely@redhat.com>
2167         * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
2168         [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
2169         little_endian element in bitmask.
2170         * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
2171         * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
2173 2018-05-18  François Dumont  <fdumont@gcc.gnu.org>
2175         * include/bits/stl_tree.h
2176         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
2177         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
2178         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
2179         (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
2180         * include/debug/map.h
2181         (map(map&&, const_allocator_type&)): Add noexcept qualitication.
2182         * include/debug/multimap.h
2183         (multimap(multimap&&, const_allocator_type&)): Likewise.
2184         * include/debug/set.h
2185         (set(set&&, const_allocator_type&)): Likewise.
2186         * include/debug/multiset.h
2187         (multiset(multiset&&, const_allocator_type&)): Likewise.
2188         * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
2189         Add checks.
2190         * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
2191         Add checks.
2192         * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
2193         Add checks.
2194         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
2195         Add checks.
2196         * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
2197         Add checks.
2198         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
2199         Add checks.
2200         * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
2201         Add checks.
2202         * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
2203         Add checks.
2205 2018-05-18  Jason Merrill  <jason@redhat.com>
2207         * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
2208         for conversion to const_iterator.  Add defaulted copy ops.
2209         * libsupc++/new (bad_alloc): Add defaulted copy ops.
2210         * libsupc++/exception.h (exception): Add defaulted copy ops.
2211         * include/std/system_error (system_error): Add defaulted copy ops.
2212         * include/std/stdexcept (domain_error, invalid_argument)
2213         (length_error, out_of_range, range_error, overflow_error)
2214         (underflow_error): Add defaulted copy ops.
2215         * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
2216         copy assignment.
2217         * include/bits/allocator.h (allocator): Add defaulted copy assignment.
2218         * include/ext/throw_allocator.h (condition_base): Add defaulted
2219         default and copy ctor and copy assignment.
2221 2018-05-18  Jonathan Wakely  <jwakely@redhat.com>
2223         PR libstdc++/85098
2224         * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
2225         (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
2226         (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
2227         (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
2228         definitions.
2229         * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
2230         whitespace.
2231         * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
2232         braces around body of do-while.
2233         * testsuite/28_regex/basic_regex/85098.cc: New
2235 2018-05-17  Jonathan Wakely  <jwakely@redhat.com>
2237         PR libstdc++/85818
2238         * src/filesystem/path.cc (path::preferred_separator): Add used
2239         attribute.
2240         * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
2242         PR libstdc++/85812
2243         * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
2244         * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
2245         Refactor to separate non-throwing and throwing implementations.
2246         [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
2247         if constructing the object throws.
2249 2018-05-15  Jonathan Wakely  <jwakely@redhat.com>
2251         PR libstdc++/85749
2252         * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
2253         (linear_congruential_engine, mersenne_twister_engine)
2254         (subtract_with_carry_engine, discard_block_engine)
2255         (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
2256         constrain function templates taking seed sequences.
2257         * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
2258         (mersenne_twister_engine::seed(_Sseq&))
2259         (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
2260         match declarations.
2261         * include/ext/random (simd_fast_mersenne_twister_engine): Use
2262         __is_seed_seq to constrain function templates taking seed sequences.
2263         * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
2264         Change return type to match declaration.
2265         * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
2266         New.
2267         * testsuite/26_numerics/random/independent_bits_engine/cons/
2268         seed_seq2.cc: New.
2269         * testsuite/26_numerics/random/linear_congruential_engine/cons/
2270         seed_seq2.cc: New.
2271         * testsuite/26_numerics/random/mersenne_twister_engine/cons/
2272         seed_seq2.cc: New.
2273         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2274         * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
2275         New.
2276         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
2277         seed_seq2.cc: New.
2278         * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
2279         seed_seq2.cc: New.
2281         PR libstdc++/83891
2282         * include/bits/fs_path.h (path::is_absolute()): Use same definition
2283         for all operating systems.
2284         * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
2285         * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
2286         * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
2287         * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
2289         * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
2290         unused <vector> header.
2291         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
2292         * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
2293         * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
2294         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
2295         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
2296         Likewise.
2297         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
2298         Likewise.
2299         * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
2300         * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
2301         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
2302         * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
2303         * testsuite/experimental/filesystem/path/decompose/extension.cc:
2304         Likewise.
2305         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
2306         * testsuite/experimental/filesystem/path/query/has_extension.cc:
2307         Likewise.
2308         * testsuite/experimental/filesystem/path/query/has_filename.cc:
2309         Likewise.
2310         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
2311         Likewise.
2312         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
2313         Likewise.
2314         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
2315         Likewise.
2316         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
2317         Likewise.
2318         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
2319         Likewise.
2320         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
2321         * testsuite/experimental/filesystem/path/query/is_relative.cc:
2322         Likewise.
2324         PR libstdc++/84159
2325         * include/bits/fs_path.h (path::operator/=, path::append): Construct
2326         temporary path before calling _M_append.
2327         (path::_M_append): Change parameter to path and implement C++17
2328         semantics.
2329         * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
2330         and more examples from the standard.
2331         * testsuite/27_io/filesystem/path/append/source.cc: New.
2332         * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
2333         * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
2335         * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
2336         __invoke to prevent ADL.
2338 2018-05-14  Jonathan Wakely  <jwakely@redhat.com>
2340         PR libstdc++/81256
2341         * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
2342         exceptions from _M_terminate_output().
2343         * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
2344         exceptions from close().
2345         * testsuite/27_io/basic_filebuf/close/81256.cc: New.
2347         * include/bits/valarray_array.h (__valarray_get_memory): Remove.
2348         (__valarray_get_storage): Call operator new directly. Remove ignored
2349         top-level restrict qualifier and add malloc attribute instead.
2350         (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
2352         PR libstdc++/67554
2353         * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
2354         (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
2356         PR libstdc++/82966
2357         * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
2358         instead of type.
2359         * testsuite/23_containers/set/modifiers/node_swap.cc: New.
2361 2018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2363         PR libstdc++/80165
2364         * testsuite/20_util/variant/80165.cc: New.
2366 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
2368         * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
2369         * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
2370         of C++11 containers with Debug Mode support.
2371         * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
2372         * doc/html/*: Regenerate.
2374 2018-05-10  Jason Merrill  <jason@redhat.com>
2376         * include/bits/regex_compiler.h (_S_cache_size): Change from
2377         function to variable.
2379 2018-05-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
2381         PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
2382         * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
2383         argument defaulted to +1.  Doxy comments on same.
2384         * testsuite/special_functions/02_assoc_legendre/
2385         check_value.cc: Regen.
2386         * testsuite/tr1/5_numerical_facilities/special_functions/
2387         02_assoc_legendre/check_value.cc: Regen.
2389 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
2391         PR libstdc++/85729
2392         * include/bits/c++config.h (__replacement_assert): Add linkage
2393         specification.
2394         * include/bits/std_abs.h: Add comment to closing brace of block.
2395         * include/c_global/cstddef: Add linkage specification.
2396         * include/c_global/cstring: Likewise.
2397         * include/c_global/cwchar: Likewise.
2399 2018-05-09  François Dumont  <fdumont@gcc.gnu.org>
2401         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
2402         Rename in...
2403         (_Safe_iterator<>::_S_constant()): ...that.
2404         * include/debug/safe_local_iterator.h
2405         (_Safe_local_iterator<>::_M_constant()): Rename in...
2406         (_Safe_local_iterator<>::_S_constant()): ...that.
2407         * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
2408         (_Iterator_state::__rbegin): New.
2409         (_Iterator_state::__rmiddle): New.
2410         (_Iterator_state::__rend): New.
2411         (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
2412         _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
2413         iterator type.
2414         (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
2415         _Is_iterator)): Likewise.
2416         (_Parameter::_S_reverse_state(_Iterator_state)): New.
2417         (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
2418         _Is_iterator)): New.
2419         (_Parameter(std::reverse_iterator<> const&, const char*,
2420         _Is_iterator)): New.
2421         (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
2422         const char*, _Is_iterator)): New.
2423         (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
2424         New.
2425         (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
2426         _Is_iterator)): New.
2427         * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
2428         * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
2429         * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
2431 2018-05-09  Jonathan Wakely  <jwakely@redhat.com>
2433         * include/bits/std_function.h (_Base_manager::_M_get_pointer):
2434         Use constexpr if in C++17 mode.
2435         (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
2436         Copy from const object.
2437         * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
2439 2018-05-08  François Dumont  <fdumont@gcc.gnu.org>
2441         * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
2442         [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
2443         backtrace.
2445         * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
2446         * include/debug/functions.h (__check_valid_range): Use latter.
2447         * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
2448         use latter.
2449         * include/debug/deque
2450         (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
2451         * include/debug/forward_list
2452         (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
2453         Likewise.
2454         * include/debug/list
2455         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2456         * include/debug/list
2457         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2458         * include/debug/map.h
2459         (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2460         (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
2461         Likewise.
2462         * include/debug/multimap.h
2463         (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2464         (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
2465         const _Alloc&)): Likewise.
2466         * include/debug/set.h
2467         (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2468         (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
2469         Likewise.
2470         * include/debug/multiset.h
2471         (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2472         (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
2473         const _Alloc&)): Likewise.
2474         * include/debug/string
2475         (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
2476         Likewise.
2477         * include/debug/unordered_map
2478         (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
2479         Likewise.
2480         (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
2481         const _Alloc&)): Likewise.
2482         * include/debug/unordered_set
2483         (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
2484         Likewise.
2485         (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
2486         const _Alloc&)): Likewise.
2487         * include/debug/vector
2488         (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
2490         * include/debug/formatter.h (_Error_formatter::_M_function): New.
2491         (_Error_formatter(const char*, unsigned int)): Adapt.
2492         (_Error_formatter::_M_at): Rename in...
2493         (_Error_formatter::_S_at): ...that and adapt.
2494         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
2495         (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
2496         * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
2497         when available.
2499 2018-05-08  Jonathan Wakely  <jwakely@redhat.com>
2501         * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
2502         Use normal std::vector even in Debug Mode.
2504         PR libstdc++/85672
2505         * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
2506         to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
2507         * include/Makefile.in: Regenerate.
2508         * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
2509         within conditional block.
2511 2018-05-07  Jonathan Wakely  <jwakely@redhat.com>
2513         * doc/xml/manual/using.xml (table.cmd_options): Document that the
2514         C++17 Filesystem implementation also needs -lstdc++fs.
2516         PR libstdc++/85671
2517         * include/bits/fs_path.h (operator/): Permit copy elision.
2518         * include/experimental/bits/fs_path.h (operator/): Likewise.
2520 2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
2522         Moar PR libstdc++/80506
2523         * include/bits/random.tcc (gamma_distribution::__generate_impl()):
2524         Fix magic number used in loop condition.
2526 2018-05-04  Jonathan Wakely  <jwakely@redhat.com>
2528         PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
2529         * include/std/optional (_Optional_payload): Add noexcept to default
2530         constructor. Re-indent.
2531         (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
2532         constructor for copying disengaged payloads.
2533         (_Optional_payload<_Tp, true, false, true>): Likewise.
2534         (_Optional_payload<_Tp, true, true, false>): Likewise.
2535         (_Optional_payload<_Tp, true, false, false>): Likewise.
2536         * testsuite/20_util/optional/cons/85642.cc: New.
2537         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
2539 2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
2541         PR libstdc++/82644
2542         * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
2543         inline definitions instead of using-declarations.
2544         [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
2545         * testsuite/tr1/5_numerical_facilities/special_functions/
2546         07_conf_hyperg/compile_cxx17.cc: New.
2547         * testsuite/tr1/5_numerical_facilities/special_functions/
2548         17_hyperg/compile_cxx17.cc: New.
2550         PR libstdc++/84769
2551         * include/std/variant (visit): Qualify std::get call.
2553         PR libstdc++/85632 use uintmax_t for arithmetic
2554         * src/filesystem/ops.cc (experimental::filesystem::space): Perform
2555         arithmetic in result type.
2556         * src/filesystem/std-ops.cc (filesystem::space): Likewise.
2557         * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
2558         is greater than free space.
2559         * testsuite/experimental/filesystem/operations/space.cc: New.
2561         * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
2562         * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
2563         New.
2564         * testsuite/20_util/remove_cvref/value.cc: New.
2565         * testsuite/20_util/remove_cvref/value_ext.cc: New.
2567         PR libstdc++/84087 LWG DR 2268 basic_string default arguments
2568         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
2569         (append(const basic_string&, size_type, size_type)
2570         (assign(const basic_string&, size_type, size_type)
2571         (insert(size_type, const basic_string&, size_type, size_type)
2572         (replace(size_type,size_type,const basic_string&,size_type,size_type)
2573         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
2574         Add default arguments (LWG 2268).
2575         [_GLIBCXX_USE_CXX11_ABI=0]
2576         (append(const basic_string&, size_type, size_type)
2577         (assign(const basic_string&, size_type, size_type)
2578         (insert(size_type, const basic_string&, size_type, size_type)
2579         (replace(size_type,size_type,const basic_string&,size_type,size_type)
2580         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
2581         Likewise.
2582         * testsuite/21_strings/basic_string/dr2268.cc: New test.
2584         PR libstdc++/84535
2585         * include/std/thread (thread::__not_same): New SFINAE helper.
2586         (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
2587         first argument is not a std::thread. Add static assertion to check
2588         INVOKE expression is valid.
2589         (thread::thread(thread&), thread::thread(const thread&&)): Remove.
2590         (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
2591         __invoke_result for return types and remove exception specifications.
2592         * testsuite/30_threads/thread/cons/84535.cc: New.
2594         * include/std/future (__async_result_of): Use __invoke_result instead
2595         of result_of.
2597         * include/std/any (any_cast): Use __remove_cvref_t.
2598         * include/std/tuple (__make_tuple): Likewise.
2599         * include/std/type_traits (__remove_cvref_t): Define.
2600         (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
2601         [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
2602         * include/std/variant (__erased_hash): Use __remove_cvref_t.
2604 2018-05-02  François Dumont  <fdumont@gcc.gnu.org>
2606         * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
2607         ensure overloaded comma not used.
2608         * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
2609         * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
2610         * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
2611         * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
2612         * testsuite/23_containers/list/modifiers/assign/1.cc: New.
2613         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
2614         * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
2616 2018-05-02  Jonathan Wakely  <jwakely@redhat.com>
2618         PR libstdc++/68197
2619         * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
2620         indices to unsigned.
2621         * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
2622         as failure. Refactor error handling.
2623         * testsuite/27_io/ios_base/storage/68197.cc: New.
2625         PR libstdc++/57997
2626         PR libstdc++/83860
2627         * include/bits/gslice_array.h (gslice_array): Define default
2628         constructor as deleted, as per C++11 standard.
2629         * include/bits/mask_array.h (mask_array): Likewise.
2630         * include/bits/slice_array.h (slice_array): Likewise.
2631         * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
2632         to namespace __detail.
2633         (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
2634         members.
2635         * include/bits/valarray_before.h (_ValArrayRef): New helper for type
2636         of data members in closure objects.
2637         (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
2638         (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
2639         __detail.
2640         (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
2641         (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
2642         (_SBase::_M_expr): Use _ValArrayRef for type of data members.
2643         * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
2644         (_ValFunClos, _RefFunClos): Move to namespace __detail and add
2645         using-declarations to namespace std.
2646         * testsuite/26_numerics/valarray/83860.cc: New.
2648         * testsuite/backward/strstream_move.cc: Remove duplicate function
2649         call.
2651         PR libstdc++/69608
2652         * include/backward/strstream (strstreambuf): Define move constructor
2653         and move assignment operator.
2654         (istrstream, ostrstream, strstream): Likewise.
2655         * testsuite/backward/strstream_move.cc: New.
2657 2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
2659         PR libstdc++/84654
2660         * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
2661         * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
2662         * configure: Regenerate.
2663         * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
2664         based on ENABLE_FLOAT128.
2665         * include/Makefile.in: Regenerate.
2666         * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
2667         [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
2668         _GLIBCXX_USE_FLOAT128.
2670 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
2672         * configure: Regenerated.
2674 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
2676         * configure: Regenerated.
2678 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
2679             Jakub Jelinek  <jakub@redhat.com>
2681         PR libstdc++/85442
2682         * src/c++11/Makefile.am: Don't generate debuginfo again for
2683         cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
2684         * src/c++11/Makefile.in: Regenerate.
2686 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
2688         PR libstdc++/84442
2689         * testsuite/30_threads/thread/cons/terminate.cc
2690         [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
2692 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
2694         PR jit/85384
2695         * configure: Regenerate.
2697 2018-04-16  Jonathan Wakely  <jwakely@redhat.com>
2699         * testsuite/experimental/filesystem/file_status/1.cc: Add
2700         -DUSE_FILESYSTEM_TS to dg-options.
2701         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
2702         Likewise.
2703         * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
2704         * testsuite/experimental/filesystem/iterators/
2705         recursive_directory_iterator.cc: Likewise.
2706         * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
2707         * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
2708         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
2709         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
2710         * testsuite/experimental/filesystem/operations/create_directories.cc:
2711         Likewise.
2712         * testsuite/experimental/filesystem/operations/create_directory.cc:
2713         Likewise.
2714         * testsuite/experimental/filesystem/operations/create_symlink.cc:
2715         Likewise.
2716         * testsuite/experimental/filesystem/operations/current_path.cc:
2717         Likewise.
2718         * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
2719         * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
2720         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
2721         * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
2722         * testsuite/experimental/filesystem/operations/last_write_time.cc:
2723         Likewise.
2724         * testsuite/experimental/filesystem/operations/permissions.cc:
2725         Likewise.
2726         * testsuite/experimental/filesystem/operations/read_symlink.cc:
2727         Likewise.
2728         * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
2729         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
2730         * testsuite/experimental/filesystem/operations/status.cc: Likewise.
2731         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2732         Likewise.
2733         * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
2734         * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
2735         * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
2736         * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
2737         * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
2738         * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
2739         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
2740         * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
2741         * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
2742         * testsuite/experimental/filesystem/path/construct/default.cc:
2743         Likewise.
2744         * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
2745         * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
2746         * testsuite/experimental/filesystem/path/construct/string_view.cc:
2747         Likewise.
2748         * testsuite/experimental/filesystem/path/decompose/extension.cc:
2749         Likewise.
2750         * testsuite/experimental/filesystem/path/decompose/filename.cc:
2751         Likewise.
2752         * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
2753         Likewise.
2754         * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
2755         Likewise.
2756         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
2757         Likewise.
2758         * testsuite/experimental/filesystem/path/decompose/root_name.cc:
2759         Likewise.
2760         * testsuite/experimental/filesystem/path/decompose/root_path.cc:
2761         Likewise.
2762         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
2763         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
2764         Likewise.
2765         * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
2766         * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
2767         * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
2768         Likewise.
2769         * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
2770         Likewise.
2771         * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
2772         Likewise.
2773         * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
2774         Likewise.
2775         * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
2776         * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
2777         * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
2778         Likewise.
2779         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
2780         * testsuite/experimental/filesystem/path/query/has_extension.cc:
2781         Likewise.
2782         * testsuite/experimental/filesystem/path/query/has_filename.cc:
2783         Likewise.
2784         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
2785         Likewise.
2786         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
2787         Likewise.
2788         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
2789         Likewise.
2790         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
2791         Likewise.
2792         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
2793         Likewise.
2794         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
2795         * testsuite/experimental/filesystem/path/query/is_relative.cc:
2796         Likewise.
2798 2018-04-13  Jonathan Wakely  <jwakely@redhat.com>
2800         * src/c++11/Makefile.am: Fix sed command.
2801         * src/c++11/Makefile.in: Regenerate.
2803         * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
2804         handle mangled names starting with double underscores on darwin.
2805         * src/c++11/Makefile.in: Regenerate.
2807 2018-04-12  Jonathan Wakely  <jwakely@redhat.com>
2809         * src/c++11/Makefile.am: Fix comment.
2810         * src/c++11/Makefile.in: Regenerate.
2811         * src/c++11/cxx11-ios_failure.cc: Fix comment.
2812         * src/c++98/ios_failure.cc: Likewise.
2814         * src/c++11/ios.cc: Remove redundant macro definition.
2816 2018-04-11  Jonathan Wakely  <jwakely@redhat.com>
2818         * doc/xml/manual/abi.xml: Document header locations in recent
2819         releases.
2820         * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
2821         * doc/xml/manual/spine.xml: Update copyright years.
2822         * doc/xml/manual/strings.xml: Adjust tolower example to avoid
2823         undefined behaviour.
2824         * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
2825         * doc/html/*: Regenerate.
2827 2018-04-10  Jonathan Wakely  <jwakely@redhat.com>
2829         * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
2830         * doc/xml/manual/backwards_compatibility.xml: Likewise.
2831         * doc/xml/manual/containers.xml: Likewise.
2832         * doc/xml/manual/debug_mode.xml: Likewise.
2833         * doc/xml/manual/extensions.xml: Likewise.
2834         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
2835         * doc/xml/manual/using.xml: Likewise.
2836         * doc/xml/manual/utilities.xml: Likewise.
2838         PR libstdc++/85222
2839         * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
2840         cxx11-ios_failure.cc to rewrite type info for __ios_failure.
2841         * src/c++11/Makefile.in: Regenerate.
2842         * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
2843         New types.
2844         [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
2845         * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
2846         * src/c++98/ios_failure.cc (__construct_ios_failure)
2847         (__destroy_ios_failure, is_ios_failure_handler): New functions.
2848         [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
2849         * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
2850         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
2851         handler types, to always catch std::ios_base::failure.
2852         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
2853         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
2854         exceptions_failbit.cc: Likewise.
2855         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
2856         exceptions_failbit.cc: Likewise.
2857         * testsuite/27_io/basic_istream/extractors_other/char/
2858         exceptions_null.cc: Likewise.
2859         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
2860         exceptions_null.cc: Likewise.
2861         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
2862         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
2863         * testsuite/27_io/basic_ostream/inserters_other/char/
2864         exceptions_null.cc: Likewise.
2865         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
2866         exceptions_null.cc: Likewise.
2867         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
2869 2018-04-05  Jonathan Wakely  <jwakely@redhat.com>
2871         * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
2872         __get calls to avoid ADL and avoid ambiguity due to Clang bug.
2874 2018-04-03  Jonathan Wakely  <jwakely@redhat.com>
2876         PR libstdc++/85183
2877         * include/std/variant (_Move_assign_base::operator=): Fix incorrect
2878         value categories.
2879         * testsuite/20_util/variant/85183.cc: New.
2881 2018-03-26  Jonathan Wakely  <jwakely@redhat.com>
2883         * include/std/variant (__get): Qualify calls to avoid ADL.
2884         (__select_index): Adjust whitespace.
2885         (variant): Add using-declaration to workaround Clang bug.
2887 2018-03-22  Jonathan Wakely  <jwakely@redhat.com>
2889         PR libstdc++/85040
2890         * include/bits/stl_function.h (greater::__not_overloaded)
2891         (less::__not_overloaded, greater_equal::__not_overloaded)
2892         (less_equal::__not_overloaded): Fix ambiguous specializations.
2893         * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
2894         tests for type with overloaded operators.
2896 2018-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2898         PR libstdc++/77691
2899         * testsuite/experimental/memory_resource/resource_adaptor.cc:
2900         xfail execution on 32-bit Solaris/x86.
2902 2018-03-21  Jonathan Wakely  <jwakely@redhat.com>
2904         * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
2905         VERIFY instead of assert.
2906         * testsuite/20_util/hash/84998.cc: New test.
2907         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
2908         copy of test adjusted for Debug Mode.
2909         * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
2910         test in Debug Mode.
2912 2018-03-20  François Dumont  <fdumont@gcc.gnu.org>
2914         PR libstdc++/84998
2915         * include/bits/stl_bvector.h: Fix std::hash friend declaration.
2916         * include/std/bitset: Likewise.
2917         * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
2918         declaration.
2919         * include/bits/stl_multimap.h (std::multimap<>): Likewise.
2920         * include/bits/stl_multiset.h (std::multiset<>): Likewise.
2921         * include/bits/stl_set.h (std::set<>): Likewise.
2922         * include/bits/unordered_map.h (std::unordered_map<>): Fix
2923         _Hash_merge_helper friend declaration.
2924         (std::unordered_multimap<>): Likewise.
2925         * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
2926         (std::unordered_multiset<>): Likewise.
2928 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
2930         * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
2931         trailing slash for domain level link.
2932         * doc/xml/faq.xml: Ditto.
2933         * doc/xml/manual/appendix_free.xml (software): Ditto.
2934         * doc/xml/manual/intro.xml: Ditto.
2935         * doc/xml/manual/spine.xml: Ditto.
2936         * doc/xml/spine.xml: Ditto.
2938 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
2940         * doc/xml/manual/documentation_hacking.xml: Adjust link to
2941         docbook.org.
2943 2018-03-17  Jonathan Wakely  <jwakely@redhat.com>
2945         * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
2946         to compile as C++98.
2948 2018-03-14  Jonathan Wakely  <jwakely@redhat.com>
2950         PR libstdc++/78420
2951         * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
2952         (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
2953         to ensure total order for pointers.
2954         (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
2955         Add operator() overloads for pointer arguments and make generic
2956         overloads dispatch to new _S_cmp functions when comparisons would
2957         use built-in operators for pointers.
2958         * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
2960 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
2962         PR libstdc++/84773
2963         PR libstdc++/83662
2964         * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
2965         * configure: Regenerate.
2966         * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
2967         (aligned_alloc): Add using-declaration.
2968         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
2970 2018-03-09  François Dumont  <fdumont@gcc.gnu.org>
2972         * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
2973         Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
2974         registration.
2976 2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
2978         PR libstdc++/84769
2979         * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
2980         Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
2982         src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
2983         src/filesystem/std-ops.cc (create_dir): Likewise.
2985 2018-03-08  François Dumont  <fdumont@gcc.gnu.org>
2987         * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
2988         (StdListIteratorPrinter): Inherit from latter.
2989         (StdFwdListIteratorPrinter): New, inherit from latter.
2990         (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
2991         when iterator has no associated container.
2992         (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
2993         __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
2994         registrations.
2995         * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
2996         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
2998 2018-03-06  Ville Voutilainen  <ville.voutilainen@gmail.com>
3000         PR libstdc++/84601
3001         * include/std/optional (_Optional_payload): Split into multiple
3002         specializations that can handle different cases of trivial or
3003         non-trivial assignment operators.
3004         * testsuite/20_util/optional/84601.cc: New.
3005         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
3007 2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
3009         PR libstdc++/84671
3010         * include/bits/parse_numbers.h (_Number_help): Add partial
3011         specialization to handle digit separators. Adjust partial
3012         specialization for recursion temrination to require _Pow == 1ULL.
3013         * testsuite/20_util/duration/literals/84671.cc: New
3015 2018-02-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
3017         Implement the missing bits of LWG 2769
3018         * include/std/any (any_cast(const any&)): Add static_assert.
3019         (any_cast(any&)): Likewise.
3020         (any_cast(any&&)): Likewise, and remove the handling
3021         for copyable-but-not-movable type.
3022         * testsuite/20_util/any/misc/any_cast.cc: Adjust.
3023         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
3024         add new tests.
3026 2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
3028         PR libstdc++/84532
3029         * include/std/thread (thread::__make_invoker): Construct tuple
3030         directly instead of using make_tuple.
3031         * testsuite/30_threads/async/84532.cc: New.
3032         * testsuite/30_threads/thread/84532.cc: New.
3034 2018-02-20  François Dumont  <fdumont@gcc.gnu.org>
3036         * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
3037         (template<> __aligned_buffer): Define as __aligned_membuf alias.
3039 2018-02-19  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
3041         PR target/84148
3042         * configure: Regenerate.
3044 2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
3046         PR libstdc++/81797
3047         * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
3048         * configure: Regenerate.
3049         * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
3050         defined.
3051         * include/Makefile.in: Regenerate.
3053 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
3055         PR libstdc++/83833
3056         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
3057         Add -ffloat-store to options for m68k and ia32.
3059         * doc/xml/faq.xml: Update copyright years.
3060         * doc/html/*: Regenerate.
3062         PR libstdc++/83658
3063         * include/std/any (any::__do_emplace): Only set _M_manager after
3064         constructing the contained object.
3065         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
3066         * testsuite/20_util/any/modifiers/83658.cc: New test.
3068 2018-01-25  Jonathan Wakely  <jwakely@redhat.com>
3070         PR libstdc++/81076
3071         * include/c_global/cstddef (__byte_operand): Define primary template.
3072         * testsuite/18_support/byte/81076.cc: New test.
3074 2018-01-19  Christophe Lyon  <christophe.lyon@linaro.org>
3076         * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
3077         dg-options and dg-add-options order.
3078         * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
3079         * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
3080         Likewise.
3081         * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
3082         * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
3083         Likewise.
3084         * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
3085         Likewise.
3086         * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
3087         * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
3088         Likewise.
3089         * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
3090         Likewise.
3091         * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
3092         Likewise.
3093         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
3094         Likewise.
3095         * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
3096         Likewise.
3097         * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
3098         Likewise.
3099         * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
3100         Likewise.
3101         * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
3102         Likewise.
3103         * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
3104         * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
3105         * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
3106         * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
3107         * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
3108         * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
3109         * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
3110         * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
3111         * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
3112         Likewise.
3113         * testsuite/special_functions/19_sph_bessel/check_nan.cc:
3114         Likewise.
3115         * testsuite/special_functions/20_sph_legendre/check_nan.cc:
3116         Likewise.
3117         * testsuite/special_functions/21_sph_neumann/check_nan.cc:
3118         Likewise.
3120 2018-01-18  Uros Bizjak  <ubizjak@gmail.com>
3122         * configure.ac (AC_CHECK_HEADERS): Add linux/types.h.  Conditionally
3123         include linux/types.h when checking linux/random.h header.
3124         * config.h.in: Regenerate.
3125         * configure: Ditto.
3126         * src/c++11/random.cc: Conditionally include linux/types.h.
3128 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
3130         * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
3132 2018-01-16  Jonathan Wakely  <jwakely@redhat.com>
3134         PR libstdc++/83834
3135         * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
3136         pattern with exact match for std::cerr.
3138 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
3140         PR libstdc++/83833
3141         * include/bits/random.h (chi_squared_distribution::param): Update
3142         gamma distribution parameter.
3143         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
3144         test.
3146         PR libstdc++/83830
3147         * include/std/type_traits (has_unique_object_representations_v): Add
3148         variable template.
3149         * testsuite/20_util/has_unique_object_representations/value.cc: Check
3150         variable template.
3152 2018-01-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
3154         Make optional conditionally
3155         trivially_{copy,move}_{constructible,assignable}
3156         * include/std/optional (_Optional_payload): Fix the comment in
3157         the class head and turn into a primary and one specialization.
3158         (_Optional_payload::_M_engaged): Strike the NSDMI.
3159         (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
3160         New.
3161         (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
3162         Likewise.
3163         (_Optional_payload<_Tp, false>::_M_get): Likewise.
3164         (_Optional_payload<_Tp, false>::_M_reset): Likewise.
3165         (_Optional_base_impl): Likewise.
3166         (_Optional_base): Turn into a primary and three specializations.
3167         (optional(nullopt)): Change the base init.
3168         * testsuite/20_util/optional/assignment/8.cc: New.
3169         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
3170         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
3172 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
3174         PR libstdc++/80276
3175         * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
3176         (get_template_arg_list): New.
3177         (StdVariantPrinter._template_args): Remove, use get_template_arg_list
3178         instead.
3179         (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
3180         of strings and regular expressions.
3181         (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
3182         (FilteringTypePrinter): Add docstring. Match using startswith. Use
3183         strip_inline_namespaces instead of strip_versioned_namespace.
3184         (add_one_type_printer): Prepend namespace to match argument.
3185         (register_type_printers): Add type printers for char16_t and char32_t
3186         string types and for types using cxx11 ABI. Update calls to
3187         add_one_template_type_printer to provide default argument dicts.
3188         * testsuite/libstdc++-prettyprinters/80276.cc: New test.
3189         * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
3190         basic_string<unsigned char> and basic_string<signed char>.
3191         * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
3192         to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
3194 2018-01-14  Andreas Schwab  <schwab@linux-m68k.org>
3196         PR libstdc++/81092
3197         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
3199 2018-01-13  Tim Shen  <timshen@google.com>
3201         PR libstdc++/83601
3202         * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
3203         * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
3204         * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
3206 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3208         PR libstdc++/64054
3209         * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
3210         Remove dg-xfail-run-if.
3212 2018-01-10  François Dumont  <fdumont@gcc.gnu.org>
3214         * include/bits/forward_list.h
3215         (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
3216         (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
3217         (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
3218         (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
3219         (_Fwd_list_impl()): Add noexcept qualification.
3220         (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
3221         (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
3222         (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
3223         (_Fwd_list_base()): Default.
3224         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
3225         (_Fwd_list_base(_Fwd_list_base&&)): Default.
3226         (forward_list<>()): Default.
3227         (forward_list<>(forward_list&&)): Default.
3228         (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
3229         (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
3230         (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
3231         * include/bits/forward_list.tcc
3232         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
3233         _M_impl._M_head move assignment.
3234         (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
3235         * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
3237 2018-01-09  Jonathan Wakely  <jwakely@redhat.com>
3239         PR libstdc++/80276
3240         * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
3241         (UniquePointerPrinter): Print correct template argument, not type of
3242         the pointer.
3243         (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
3244         a type.
3245         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
3246         array type.
3247         * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
3248         weak_ptr of array types.
3250 2018-01-09  François Dumont  <fdumont@gcc.gnu.org>
3252         PR libstdc++/83709
3253         * include/bits/hashtable_policy.h
3254         (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
3255         __first != __last.
3256         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
3257         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
3258         Add false_type parameter.
3259         (_Insert_base::insert): Adapt.
3260         * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
3261         Adapt.
3262         (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
3263          Add __n_elt parameter, defaulted to 1.
3264         (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
3265         policy _M_need_rehash.
3266         (_Hashtable::_M_merge_unique): Pass target number of elements to add to
3267         produce only 1 rehash if necessary.
3268         * testsuite/23_containers/unordered_map/insert/83709.cc: New.
3269         * testsuite/23_containers/unordered_set/insert/83709.cc: New.
3271 2018-01-09  Juraj Oršulić  <juraj.orsulic@fer.hr>
3272             Jonathan Wakely  <jwakely@redhat.com>
3274         PR libstdc++/59253 (partial)
3275         * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
3276         type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
3277         (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
3278         children.
3279         * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
3280         of unique_ptr printer.
3281         * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
3282         output of shared_ptr printer.
3284 2018-01-05  Jonathan Wakely  <jwakely@redhat.com>
3286         PR libstdc++/83626
3287         * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
3288         unnecessary symlink_status call.
3289         (remove_all(const path&, error_code&)): Use filesystem::remove.
3290         * src/filesystem/std-ops.cc: Likewise.
3292         PR libstdc++/83279
3293         * src/filesystem/std-ops.cc  (do_copy_file): Use non-null offset with
3294         sendfile.
3296         PR libstdc++/83626
3297         * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
3298         report an error for ENOENT.
3299         (remove_all(const path&)): Fix type of result variable.
3300         (remove_all(const path&, error_code&)): Use non-throwing increment
3301         for directory iterator. Call POSIX remove directly to avoid redundant
3302         calls to symlink_status. Do not report errors for ENOENT.
3303         * src/filesystem/std-ops.cc: Likewise.
3304         * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
3305         overload.
3306         * testsuite/experimental/filesystem/operations/remove_all.cc:
3307         Likewise.
3309 2018-01-04  Jonathan Wakely  <jwakely@redhat.com>
3311         PR libstdc++/83626
3312         * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
3313         redundant call to ec.clear().
3314         (remove_all(const path&, error_code&))): Do not return an error for
3315         non-existent paths.
3316         * src/filesystem/std-ops.cc: Likewise.
3317         * testsuite/27_io/filesystem/operations/remove.cc: New test.
3318         * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
3319         results for non-existent paths.
3320         * testsuite/experimental/filesystem/operations/remove.cc: New test.
3321         * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
3322         expected results for non-existent paths.
3324         * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
3325         check status_known once.
3326         * include/experimental/bits/fs_ops.h: Likewise.
3328         PR libstdc++/83607
3329         * include/std/functional (__is_byte_like): New trait.
3330         (__is_std_equal_to): Remove.
3331         (__boyer_moore_base_t): Use __is_byte_like instead of
3332         __is_std_equal_to.
3333         * include/experimental/functional (__is_std_equal_to): Remove.
3334         (__boyer_moore_base_t): Use __is_byte_like instead of
3335         __is_std_equal_to.
3336         * testsuite/20_util/function_objects/83607.cc: New test.
3338 2018-01-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
3340         Protect optional's deduction guide with the feature macro
3341         * include/std/optional: Use the feature macro.
3343 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
3345         Update copyright years.
3347 Copyright (C) 2018 Free Software Foundation, Inc.
3349 Copying and distribution of this file, with or without modification,
3350 are permitted in any medium without royalty provided the copyright
3351 notice and this notice are preserved.