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