re PR libstdc++/59548 (Abort after copying std::unordered_map in debug mode)
[gcc.git] / libstdc++-v3 / ChangeLog
1 2014-01-24 Jonathan Wakely <jwakely@redhat.com>
2
3 PR libstdc++/59548
4 * include/debug/safe_base.h (_Safe_sequence_base): Define copy
5 constructor to prevent it being implicitly defined as deleted, but
6 do not copy anything.
7 * include/debug/safe_unordered_base.h (_Safe_unordered_container_base):
8 Define copy and move constructors similar to _Safe_sequence_base's.
9 * testsuite/23_containers/unordered_map/59548.cc: New.
10
11 2014-01-23 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
12 Steve Ellcey <sellcey@mips.com>
13
14 * acinclude.m4 (GLIBCXX_CHECK_TMPNAM): New check for tmpnam
15 function.
16 * configure.ac: Use GLIBCXX_CHECK_TMPNAM.
17 * (configure, config.h.in): Regenerate.
18 * include/c_global/cstdio: Guard ::tmpnam with _GLIBCXX_USE_TMPNAM
19
20 2014-01-23 Jonathan Wakely <jwakely@redhat.com>
21
22 * doc/xml/faq.xml (a-how_to_set_paths): Expand FAQ answer.
23 * doc/xml/manual/abi.xml (abi.versioning.history): Correct symver.
24
25 PR libstdc++/59872
26 * include/bits/stl_map.h (map::operator=(map&&)): Fix comment.
27 * include/bits/stl_multimap.h (multimap::operator=(multimap&&)):
28 Likewise.
29 * include/bits/stl_multiset.h (multiset::operator=(multiset&&)):
30 Likewise.
31 * include/bits/stl_set.h (set::operator=(set&&)): Likewise.
32 * include/bits/stl_tree.h (_Rb_tree::_M_move_data): New overloaded
33 functions to perform moving or copying of elements from rvalue tree.
34 (_Rb_tree::_Rb_tree(_Rb_tree&&)): Use _M_move_data.
35 (_Rb_tree::_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Likewise.
36 * testsuite/23_containers/map/59872.cc: New.
37 * testsuite/23_containers/map/56613.cc: Remove duplicate include.
38
39 2014-01-22 Jonathan Wakely <jwakely@redhat.com>
40
41 * include/bits/stl_deque.h (_Deque_impl): Move comment.
42
43 PR libstdc++/58764
44 * include/bits/stl_deque.h (deque::deque(const allocator_type&):
45 Split into separate default constructor and constructor taking
46 allocator.
47 * include/bits/stl_list.h (list::list(const allocator_type&): Likewise.
48 * include/bits/stl_vector.h (vector::vector(const allocator_type&):
49 Likewise.
50 * include/debug/deque (deque::deque(const allocator_type&)): Likewise.
51 * include/debug/list (list::list(const _Allocator&)): Likewise.
52 * include/debug/map.h (map::map(const _Compare&, const _Allocator&)):
53 Likewise.
54 * include/debug/multimap.h
55 (multimap::multimap(const _Compare&, const _Allocator&)): Likewise.
56 * include/debug/set.h (set::set(const _Compare&, const _Allocator&)):
57 Likewise.
58 * include/debug/multiset.h
59 (multiset::multiset(const _Compare&, const _Allocator&)): Likewise.
60 * include/debug/vector (vector::vector(const allocator_type&)):
61 Likewise.
62 * include/profile/deque (deque::deque(const _Allocator&)): Likewise.
63 * include/profile/list (list::list(const _Allocator&)): Likewise.
64 * include/profile/map.h
65 (map::map(const _Compare&, const _Allocator&)): Likewise.
66 * include/profile/multimap.h
67 (multimap::multimap(const _Compare&, const _Allocator&)): Likewise.
68 * include/profile/set.h
69 (set::set(const _Compare&, const _Allocator&)): Likewise.
70 * include/profile/multiset.h
71 (multiset::multiset(const _Compare&, const _Allocator&)): Likewise.
72 * include/profile/vector (vector::vector(const _Allocator&)):
73 Likewise.
74 * testsuite/23_containers/deque/58764.cc: New.
75 * testsuite/23_containers/list/58764.cc: New.
76 * testsuite/23_containers/map/58764.cc: New.
77 * testsuite/23_containers/multimap/58764.cc: New.
78 * testsuite/23_containers/set/58764.cc: New.
79 * testsuite/23_containers/multiset/58764.cc: New.
80 * testsuite/23_containers/vector/58764.cc: New.
81 * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
82 Adjust dg-error line number.
83 * testsuite/23_containers/deque/requirements/dr438/
84 constructor_1_neg.cc: Likewise.
85 * testsuite/23_containers/deque/requirements/dr438/
86 constructor_2_neg.cc: Likewise.
87 * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
88 Likewise.
89 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
90 Likewise.
91 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
92 Likewise.
93 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
94 Likewise.
95 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
96 Likewise.
97 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
98 Likewise.
99 * testsuite/23_containers/vector/requirements/dr438/
100 constructor_1_neg.cc: Likewise.
101 * testsuite/23_containers/vector/requirements/dr438/
102 constructor_2_neg.cc: Likewise.
103 * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
104 Likewise.
105
106 PR libstdc++/58764 (again)
107 * include/bits/stl_list.h (list): Make default constructor's exception
108 specification conditional.
109 * include/bits/stl_vector.h (vector): Likewise.
110 * testsuite/util/testsuite_allocator.h (SimpleAllocator): Add noexcept
111 to default constructor.
112 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
113 Adjust dg-error line number.
114 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
115 Likewise.
116 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
117 Likewise.
118 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
119 Likewise.
120 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
121 Likewise.
122 * testsuite/23_containers/vector/requirements/dr438/
123 constructor_1_neg.cc: Likewise.
124 * testsuite/23_containers/vector/requirements/dr438/
125 constructor_2_neg.cc: Likewise.
126 * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
127 Likewise.
128
129 2014-01-21 Tim Shen <timshen91@gmail.com>
130
131 * include/bits/regex.tcc: Remove incorrect `nosubs` handling.
132 * include/bits/regex_scanner.tcc: Handle `nosubs` correctly.
133 * testsuite/28_regex/constants/syntax_option_type.cc: Add a test case.
134
135 2014-01-21 Jonathan Wakely <jwakely@redhat.com>
136
137 PR libstdc++/56267
138 * include/bits/hashtable.h (__cache_default): Do not depend on
139 whether the hash function is DefaultConstructible or CopyAssignable.
140 (_Hashtable): Adjust static assertions.
141 * doc/xml/manual/containers.xml (containers.unordered.cache): Update.
142 * testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
143 dg-error line number.
144 * testsuite/23_containers/unordered_set/
145 not_default_constructible_hash_neg.cc: Remove.
146
147 2014-01-20 François Dumont <fdumont@gcc.gnu.org>
148
149 * scripts/create_testsuite_files: Add testsuite/experimental in
150 the list of folders to search for tests.
151 * include/experimental/string_view
152 (basic_string_view<>::operator[]): Comment _GLIBCXX_DEBUG_ASSERT,
153 incompatible with constexpr qualifier.
154 (basic_string_view<>::front()): Likewise.
155 (basic_string_view<>::back()): Likewise.
156 * testsuite/experimental/string_view/element_access/wchar_t/2.cc:
157 Merge dg-options directives into one.
158 * testsuite/experimental/string_view/element_access/char/2.cc:
159 Likewise. Remove invalid experimental namespace scope on
160 string_view_type.
161
162 2014-01-20 Jonathan Wakely <jwakely@redhat.com>
163
164 PR libstdc++/56267
165 * include/bits/hashtable_policy.h (_Hash_code_base<... false>): Grant
166 friendship to _Local_iterator_base<..., false>.
167 (_Local_iterator_base): Give protected access to all existing members.
168 (_Local_iterator_base::_M_curr()): New public accessor.
169 (_Local_iterator_base::_M_get_bucket()): New public accessor.
170 (_Local_iterator_base<..., false>::_M_init()): New function to manage
171 the lifetime of the _Hash_code_base explicitly.
172 (_Local_iterator_base<..., false>::_M_destroy()): Likewise.
173 (_Local_iterator_base<..., false>): Define copy constructor and copy
174 assignment operator that use new functions to manage _Hash_code_base.
175 (operator==(const _Local_iterator_base&, const _Local_iterator_base&),
176 operator==(const _Local_iterator_base&, const _Local_iterator_base&)):
177 Use public API for _Local_iterator_base.
178 * include/debug/safe_local_iterator.h (_Safe_local_iterator): Likewise.
179 * include/debug/unordered_map (__debug::unordered_map::erase(),
180 __debug::unordered_multimap::erase()): Likewise.
181 * include/debug/unordered_set (__debug::unordered_set::erase(),
182 __debug::unordered_multiset::erase()): Likewise.
183 * testsuite/23_containers/unordered_set/56267-2.cc: New test.
184
185 2014-01-19 Tim Shen <timshen91@gmail.com>
186
187 * include/bits/regex_compiler.h (_Comipler<>::_M_quantifier()):
188 Fix parse error of multiple consecutive quantifiers like "a**".
189 * include/bits/regex_compiler.tcc (_Comipler<>::_M_quantifier()):
190 Likewise.
191 * testsuite/28_regex/basic_regex/multiple_quantifiers.cc: New.
192
193 2014-01-17 François Dumont <fdumont@gcc.gnu.org>
194
195 * include/profile/set.h (set): Implement C++11 allocator-aware
196 container requirements.
197 * include/profile/map.h (map): Likewise.
198 * include/profile/multiset.h (multiset): Likewise.
199 * include/profile/multimap.h (multimap): Likewise.
200 * include/profile/set.h
201 (set::operator=(const set&)): Define as default in C++11 mode.
202 (set::operator=(set&&)): Likewise.
203 * include/profile/map.h
204 (map::operator=(const map&)): Likewise.
205 (map::operator=(map&&)): Likewise.
206 * include/profile/multiset.h
207 (multiset::operator=(const multiset&)): Likewise.
208 (multiset::operator=(multiset&&)): Likewise.
209 * include/profile/multimap.h
210 (multimap::operator=(const multimap&)): Likewise.
211 (multimap::operator=(multimap&&)): Likewise.
212 * include/profile/set.h (set::operator=(std::initializer_list<>)):
213 Rely on the same operator from normal mode.
214 * include/profile/map.h (map::operator=(std::initializer_list<>)):
215 Likewise.
216 * include/profile/multiset.h
217 (multiset::operator=(std::initializer_list<>)): Likewise.
218 * include/profile/multimap.h
219 (multimap::operator=(std::initializer_list<>)): Likewise.
220 * include/profile/set.h (set::swap(set&)): Add noexcept
221 specification.
222 * include/profile/map.h (map::swap(map&)): Likewise.
223 * include/profile/multiset.h (multiset::swap(multiset&)): Likewise.
224 * include/profile/multimap.h (multimap::swap(multimap&)): Likewise.
225
226 2014-01-17 Tim Shen <timshen91@gmail.com>
227
228 * include/bits/regex_automaton.tcc (_StateSeq<>::_M_clone()): Do not
229 use std::map.
230 * include/bits/regex_automaton.h: Do not use std::set.
231 * include/bits/regex_compiler.h (_BracketMatcher<>::_M_add_char(),
232 _BracketMatcher<>::_M_add_collating_element(),
233 _BracketMatcher<>::_M_add_equivalence_class(),
234 _BracketMatcher<>::_M_make_range()): Likewise.
235 * include/bits/regex_compiler.tcc (_BracketMatcher<>::_M_apply()):
236 Likewise.
237 * include/bits/regex_executor.h: Do not use std::queue.
238 * include/bits/regex_executor.tcc (_Executor<>::_M_main(),
239 _Executor<>::_M_dfs()): Likewise.
240 * include/std/regex: Remove <map>, <set> and <queue>.
241
242 2014-01-17 Tim Shen <timshen91@gmail.com>
243
244 * include/bits/regex.h (__compile_nfa<>(), basic_regex<>::basic_regex(),
245 basic_regex<>::assign()): Change __compile_nfa to accept
246 const _CharT* only.
247 * include/bits/regex_compiler.h: Change _Compiler's template
248 argument from <_FwdIter, _TraitsT> to <_TraitsT>.
249 * include/bits/regex_compiler.tcc: Likewise.
250
251 2014-01-17 Tim Shen <timshen91@gmail.com>
252
253 * include/bits/regex_compiler.h: Change _ScannerT into char-type
254 templated.
255 * include/bits/regex_scanner.h (_Scanner<>::_Scanner()): Separate
256 _ScannerBase from _Scanner; Change _Scanner's template argument from
257 _FwdIter to _CharT. Avoid use of std::map and std::set by using arrays
258 instead.
259 * include/bits/regex_scanner.tcc (_Scanner<>::_Scanner(),
260 _Scanner<>::_M_scan_normal(), _Scanner<>::_M_eat_escape_ecma(),
261 _Scanner<>::_M_eat_escape_posix(), _Scanner<>::_M_eat_escape_awk()):
262 Likewise.
263 * include/std/regex: Add <cstring> for using strchr.
264
265 2014-01-17 Tim Shen <timshen91@gmail.com>
266
267 * bits/regex_automaton.tcc: Indentation fix.
268 * bits/regex_compiler.h (__compile_nfa<>(), _Compiler<>,
269 _RegexTranslator<> _AnyMatcher<>, _CharMatcher<>,
270 _BracketMatcher<>): Add bool option template parameters and
271 specializations to make matching more efficient and space saving.
272 * bits/regex_compiler.tcc: Likewise.
273
274 2014-01-15 François Dumont <fdumont@gcc.gnu.org>
275
276 PR libstdc++/59712
277 * include/bits/hashtable_policy.h: Fix some long lines.
278 * include/bits/hashtable.h (__hash_code_base_access): Define and
279 use it to check its _M_bucket_index noexcept qualification. Use
280 also in place of...
281 (__access_protected_ctor): ...this.
282 * testsuite/23_containers/unordered_set/instantiation_neg.cc:
283 Adapt line number.
284 * testsuite/23_containers/unordered_set/
285 not_default_constructible_hash_neg.cc: Likewise.
286
287 2014-01-13 François Dumont <fdumont@gcc.gnu.org>
288
289 * include/debug/set.h (set): Implement C++11 allocator-aware
290 container requirements.
291 * include/debug/map.h (map): Likewise.
292 * include/debug/multiset.h (multiset): Likewise.
293 * include/debug/multimap.h (multimap): Likewise.
294 * include/debug/set.h (set::operator=(set&&)): Add noexcept and
295 fix implementation regarding management of safe iterators.
296 * include/debug/map.h (map::operator=(map&&)): Likewise.
297 * include/debug/multiset.h (multiset::operator=(multiset&&)): Likewise.
298 * include/debug/multimap.h (multimap::operator=(multimap&&)):
299 Likewise.
300 * include/debug/set.h (set::operator=(std::initializer_list<>)):
301 Rely on the same operator from normal mode.
302 * include/debug/map.h (map::operator=(std::initializer_list<>)):
303 Likewise.
304 * include/debug/multiset.h
305 (multiset::operator=(std::initializer_list<>)): Likewise.
306 * include/debug/multimap.h
307 (multimap::operator=(std::initializer_list<>)): Likewise.
308 * include/debug/set.h (set::swap(set&)): Add noexcept
309 specification, add allocator equality check.
310 * include/debug/map.h (map::swap(map&)): Likewise.
311 * include/debug/multiset.h (multiset::swap(multiset&)): Likewise.
312 * include/debug/multimap.h (multimap::swap(multimap&)): Likewise.
313
314 2014-01-10 Jonathan Wakely <jwakely@redhat.com>
315
316 PR libstdc++/59698
317 * doc/xml/manual/status_cxx1998.xml (iso.1998.specific): Markup
318 and stylistic improvements.
319 * doc/xml/manual/codecvt.xml (std.localization.facet.codecvt): Likewise
320 and update for C++11.
321 * doc/xml/manual/ctype.xml (std.localization.facet.ctype): Likewise.
322
323 PR libstdc++/59687
324 * doc/xml/manual/backwards_compatibility.xml
325 (backwards.third.nocreate_noreplace): Correct and expand.
326
327 PR libstdc++/59699
328 * doc/xml/manual/support.xml (std.support.types.null): Update links.
329
330 2014-01-09 Jonathan Wakely <jwakely@redhat.com>
331
332 PR libstdc++/59738
333 * include/bits/stl_vector.h (vector<>::_M_move_assign): Restore
334 support for non-Movable types.
335
336 PR libstdc++/59680
337 * src/c++11/thread.cc (__sleep_for): Fix call to ::sleep.
338
339 2014-01-08 François Dumont <fdumont@gcc.gnu.org>
340
341 * include/bits/stl_vector.h (std::vector<>::_M_move_assign): Pass
342 *this allocator instance when building temporary vector instance
343 so that *this allocator does not get moved.
344 * include/debug/safe_base.h
345 (_Safe_sequence_base(_Safe_sequence_base&&)): New.
346 * include/debug/vector (__gnu_debug::vector<>(vector&&)): Use new
347 move constructor from _Safe_sequence_base.
348 (__gnu_debug::vector<>(vector&&, const allocator_type&)): Swap
349 safe iterators if the instance is moved.
350 (__gnu_debug::vector<>::operator=(vector&&)): Likewise.
351 * testsuite/23_containers/vector/allocator/move.cc (test01): Add
352 check on a vector iterator.
353 * testsuite/23_containers/vector/allocator/move_assign.cc
354 (test02): Likewise.
355 (test03): New, test with a non-propagating allocator.
356 * testsuite/23_containers/vector/debug/move_assign_neg.cc: New.
357
358 2014-01-07 Tim Shen <timshen91@gmail.com>
359
360 * include/bits/regex_compiler.h (_AnyMatcher<>::_AnyMatcher(),
361 _AnyMatcher<>::operator(), _AnyMatcher<>::_M_apply(),
362 _CharMatcher<>::_CharMatcher(), _CharMatcher<>::_M_translate(),
363 _BracketMatcher<>::_BracketMatcher(), _BracketMatcher<>::operator(),
364 _BracketMatcher<>::_M_add_char(),
365 _BracketMatcher<>::_M_add_collating_element(),
366 _BracketMatcher<>::_M_add_equivalence_class(),
367 _BracketMatcher<>::_M_add_character_class(),
368 _BracketMatcher<>::_M_make_range(), _BracketMatcher<>::_M_ready(),
369 _BracketMatcher<>::_M_apply(), _BracketMatcher<>::_M_make_cache()):
370 Fix _AnyMatcher behavior of POSIX style and move _M_flags
371 to template parameter; Add cache for _BracketMatcher. Adjust
372 declarations from here...
373 * include/bits/regex.h (basic_regex<>::imbue()): ...to here. Also,
374 imbuing a regex will trigger a recompilation to rebuild the cache.
375 * include/bits/regex_compiler.tcc (_Compiler<>::_M_atom(),
376 _Compiler<>::_M_bracket_expression()): Adjust matchers' caller for
377 different template bool parameters.
378 * include/bits/regex_executor.h: Remove unnecessary declarations.
379 * include/std/regex: Adjust including orders.
380 * testsuite/28_regex/traits/char/user_defined.cc: New.
381 * testsuite/28_regex/traits/wchar_t/user_defined.cc: New.
382
383 2014-01-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
384
385 * config/abi/post/solaris2.9/baseline_symbols.txt: Regenerate.
386 * config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt: Likewise.
387 * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
388 * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
389 * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
390
391 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
392
393 Update copyright years
394
395 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
396
397 * testsuite/18_support/new_handler.cc,
398 testsuite/18_support/terminate_handler.cc,
399 testsuite/18_support/unexpected_handler.cc: Use the standard form for
400 the copyright notice.
401 \f
402 Copyright (C) 2014 Free Software Foundation, Inc.
403
404 Copying and distribution of this file, with or without modification,
405 are permitted in any medium without royalty provided the copyright
406 notice and this notice are preserved.