Commit Graph

3164 Commits

Author SHA1 Message Date
Andrew MacLeod 3b04e1e4c4 re PR libstdc++/51102 (missing macros in <atomic>)
2011-11-16  Andrew MacLeod  <amacleod@redhat.com>

	PR libstdc++/51102
	* include/bits/atomic_base.h (ATOMIC_BOOL_LOCK_FREE,
	ATOMIC_POINTER_LOCK_FREE): New. Add missing macros.

From-SVN: r181414
2011-11-16 15:43:15 +00:00
Paolo Carlini 6dc88283f6 re PR libstdc++/51142 ([C++0x] map::erase(key) doesn't compile with -D_GLIBCXX_DEBUG.)
2011-11-15  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/51142
	* include/debug/unordered_map (unordered_map<>::erase(iterator),
	unordered_multimap<>::erase(iterator)): Add, consistently with
	LWG 2059.
	* include/debug/unordered_set (unordered_set<>::erase(iterator),
	unordered_multiset<>::erase(iterator)): Likewise.
	* include/debug/map.h (map<>::erase(iterator)): Likewise.
	* include/debug/multimap.h (multimap<>::erase(iterator)): Likewise.
	* include/profile/map.h (map<>::erase(iterator)): Likewise.
	* include/profile/multimap.h (multimap<>::erase(iterator)): Likewise.
	* include/bits/hashtable.h (_Hashtable<>::erase(iterator)): Likewise.
	* include/bits/stl_map.h (map<>::erase(iterator)): Likewise.
	* include/bits/stl_multimap.h (multimap<>::erase(iterator)): Likewise.
	* include/bits/stl_tree.h (_Rb_tree<>::erase(iterator)): Likewise.
	* testsuite/23_containers/unordered_map/erase/51142.cc: New.
	* testsuite/23_containers/multimap/modifiers/erase/51142.cc: Likewise.
	* testsuite/23_containers/set/modifiers/erase/51142.cc: Likewise.
	* testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
	* testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
	* testsuite/23_containers/multiset/modifiers/erase/51142.cc: Likewise.
	* testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
	* testsuite/23_containers/map/modifiers/erase/51142.cc: Likewise.

From-SVN: r181394
2011-11-15 23:28:49 +00:00
Andrew MacLeod d660c35ea2 re PR middle-end/51038 (29_atomics/atomic_flag/clear/1.cc test_and_set/explicit.cc implicit.cc)
PR middle-end/51038

	libstdc++-v3
	* include/bits/atomic_base.h (atomic_thread_fence): Call built-in.
	(atomic_signal_fence): Call built-in.
	(test_and_set, clear): Call new atomic built-ins.

	gcc
	* builtins.c (expand_builtin_atomic_clear): New.  Expand atomic_clear.
	(expand_builtin_atomic_test_and_set): New.  Expand atomic test_and_set.
	(expand_builtin): Add cases for test_and_set and clear.
	* sync-builtins.def (BUILT_IN_ATOMIC_TEST_AND_SET): New.
	(BUILT_IN_ATOMIC_CLEAR): New.

	testsuite
	* gcc.dg/atomic-invalid.c: Add test for invalid __atomic_clear models.
	* gcc.dg/atomic-flag.c: New.  Test __atomic_test_and_set and
	__atomic_clear.

From-SVN: r181271
2011-11-10 20:38:33 +00:00
Jonathan Wakely 5ed56cbbee allocator.h (__shrink_to_fit_aux::_S_do_it): Create the new object with the same allocator.
* include/bits/allocator.h (__shrink_to_fit_aux::_S_do_it): Create
	the new object with the same allocator.
	* testsuite/23_containers/vector/capacity/shrink_to_fit2.cc: New.

From-SVN: r181235
2011-11-09 21:14:03 +00:00
Jonathan Wakely 425006751b stl_vector.h (vector::_Alloc_traits): Make private.
* include/bits/stl_vector.h (vector::_Alloc_traits): Make private.
	* include/debug/vector: Add allocator-extended constructors, ensure
	move assignment and swap have same allocator propagation semantics
	and exceptions specification as base class.
	* include/profile/vector: Likewise.
	(vector::push_back(_Tp&&)): Forward argument as rvalue.
	* testsuite/23_containers/vector/debug/alloc_prop.cc: New.
	* doc/xml/manual/status_cxx2011.xml: Clarify status of container
	requirements with respect to allocators.
	(status.iso.200x): Add anchor for old ID to preserve existing links.

From-SVN: r181189
2011-11-09 01:26:04 +00:00
Jonathan Wakely a58a38b32c shared_ptr_base.h (_Sp_counted_ptr): Make 'final'.
* include/bits/shared_ptr_base.h (_Sp_counted_ptr): Make 'final'.
	(_Sp_counted_deleter): Make 'final'. Use allocator_traits.
	(_Sp_counted_ptr_inplace): Make 'final'. Use allocator_traits.
	Derive from _Sp_counted_ptr instead of _Sp_counted_deleter to use EBO
	for the allocator.
	(__shared_count, __shared_ptr): Use allocator_traits.
	* include/std/future (__future_base::_Result_alloc): Make 'final'. Use
	allocator traits.
	(__future_base::_Task_state): Make 'final'.
	(__future_base::_Deferred_state): Likewise.
	(__future_base::_Async_state): Likewise.
	* testsuite/20_util/shared_ptr/cons/alloc_min.cc: New.
	* testsuite/20_util/shared_ptr/creation/alloc_min.cc: New.
	* testsuite/20_util/shared_ptr/creation/private.cc: New.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers.
	* testsuite/30_threads/packaged_task/cons/alloc_min.cc: New.
	* testsuite/30_threads/promise/cons/alloc_min.cc: New.

From-SVN: r181171
2011-11-08 16:45:54 +00:00
Jonathan Wakely 7579d15b58 ptr_traits.h (__rebind): Replace with...
* include/bits/ptr_traits.h (__rebind): Replace with...
	(rebind): Implement using alias-declaration.
	* include/ext/pointer.h (__rebind): Replace with...
	(rebind): Implement using alias-declaration.
	* include/bits/alloc_traits.h (__rebind_alloc, __rebind_traits):
	Replace with...
	(rebind_alloc, rebind_traits): Implement using alias-declaration.
	* include/ext/alloc_traits.h (rebind): Use rebind_alloc instead of
	__rebind_alloc.
	* include/std/scoped_allocator (rebind): Likewise.

From-SVN: r181139
2011-11-08 00:33:45 +00:00
Andrew MacLeod 6577e39c94 atomic_base.h (atomic_thread_fence): Revert.
2011-11-07  Andrew MacLeod  <amacleod@redhat.com>

	* include/bits/atomic_base.h (atomic_thread_fence): Revert.
	(atomic_signal_fence): Revert.

From-SVN: r181119
2011-11-07 21:32:52 +00:00
Andrew MacLeod 0669295b1e atomic_base.h (atomic_thread_fence): Call builtin.
2011-11-07  Andrew MacLeod  <amacleod@redhat.com>

	libstdc++-v3
	* include/bits/atomic_base.h (atomic_thread_fence): Call builtin.
	(atomic_signal_fence): Call builtin.
	(atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree,
	otherwise fall back to call __sync_lock_test_and_set.
	(atomic_flag::clear): Call __atomic_store when it is lockfree,
	otherwise fall back to call __sync_lock_release.

	gcc
	* doc/extend.texi: Docuemnt behaviour change for __atomic_exchange and
	__atomic_store.
	* optabs.c (expand_atomic_exchange): Expand to __sync_lock_test_and_set
	only when originated from that builtin.
	(expand_atomic_store): Expand to __sync_lock_release when originated
	from that builtin.
	* builtins.c (expand_builtin_sync_lock_test_and_set): Add flag that
	expand_atomic_exchange call originated from here.
	(expand_builtin_sync_lock_release): Add flag that expand_atomic_store
	call originated from here.
	(expand_builtin_atomic_exchange): Add origination flag.
	(expand_builtin_atomic_store): Add origination flag.
	* expr.h (expand_atomic_exchange, expand_atomic_store): Add boolean 
	parameters to indicate implementation fall back options.

From-SVN: r181111
2011-11-07 20:06:39 +00:00
Jonathan Wakely f1e09f0d14 basic_string.h (basic_string::at): Move adjacent to other overload.
* include/bits/basic_string.h (basic_string::at): Move adjacent to other
	overload.
	(basic_string::pop_back): Define.
	* include/debug/string (__gnu_debug::basic_string::pop_back): Likewise.
	* include/ext/vstring.h (__versa_string::pop_back): Likewise.
	* config/abi/pre/gnu.ver: Add new symbols.
	* testsuite/21_strings/basic_string/modifiers/char/pop_back.cc: New.
	* testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc: New.
	* testsuite/21_strings/basic_string/range_access.cc: Split to ...
	* testsuite/21_strings/basic_string/range_access/char/1.cc: Here and ...
	* testsuite/21_strings/basic_string/range_access/wchar_t/1.cc: Here.
	* testsuite/ext/vstring/modifiers/char/pop_back.cc: New.
	* testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc: New.

From-SVN: r181049
2011-11-07 00:06:23 +00:00
Andrew Macleod 86951993f8 Check in patch/merge from cxx-mem-model Branch
From-SVN: r181031
2011-11-06 14:55:48 +00:00
Paolo Carlini 3164517929 re PR libstdc++/50951 (state of subtract_with_carry_engine not saved correctly to output stream)
2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/50951
	* include/bits/random.tcc (operator<<(basic_ostream<>&,
	const mersenne_twister_engine<>&): Output _M_p too.
	(operator<<(basic_ostream<>&, const
	subtract_with_carry_engine<>&): Likewise.
	(operator>>(basic_istream<>&, mersenne_twister_engine<>&):
	Reload it.
	(operator>>(basic_istream<>&, subtract_with_carry_engine<>&):
	Likewise.
	* include/bits/random.h (mersenne_twister_engine<>::operator==):
	Compare _M_p too.
	(subtract_with_carry_engine<>::operator==): Compare _M_carry
	and _M_p too.
	(shuffle_order_engine<>::operator==): Compare _M_v(s) and _M_y too.
	* testsuite/26_numerics/random/independent_bits_engine/
	operators/serialize.cc: Extend.
	* testsuite/26_numerics/random/subtract_with_carry_engine/
	operators/serialize.cc: Likewise.
	* testsuite/26_numerics/random/discard_block_engine/
	operators/serialize.cc: Likewise.
	* testsuite/26_numerics/random/mersenne_twister_engine/
	operators/serialize.cc: Likewise.
	* testsuite/26_numerics/random/linear_congruential_engine/
	operators/serialize.cc: Likewise.
	* testsuite/26_numerics/random/shuffle_order_engine/
	operators/serialize.cc: Likewise.

From-SVN: r180764
2011-11-02 10:06:08 +00:00
Benjamin Kosnik 08624e906d c++config: Add tr2 to versioned namespaces.
2011-11-02  Benjamin Kosnik  <bkoz@redhat.com>

	* include/bits/c++config: Add tr2 to versioned namespaces.
	* scripts/run_doxygen: Adjust generated man files as well.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.

From-SVN: r180760
2011-11-02 04:23:33 +00:00
Jason Merrill a7d5d7e221 Makefile.am (install-freestanding-headers): Install c++0x_warning.h.
* include/Makefile.am (install-freestanding-headers): Install
	c++0x_warning.h.
	* libsupc++/initializer_list: Include it.

From-SVN: r180727
2011-11-01 00:02:45 -04:00
Jason Merrill 97e3ad20b1 re PR c++/50920 (add a -std=c++11 option to the driver)
PR c++/50920
gcc/c-family
	* c-common.h (cxx_dialect): Add cxx11 and cxx03.
	* c.opt: Add -std=c++11, -std=gnu++11, -std=gnu++03,
	and -Wc++11-compat.
	* c-opts.c (set_std_cxx11): Rename from set_std_cxx0x.
gcc/cp
	* class.c (check_field_decl): Change c++0x in diags to c++11.
	* error.c (maybe_warn_cpp0x): Likewise.
	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
	* pt.c (check_default_tmpl_args): Likewise.
libcpp
	* include/cpplib.h (enum c_lang): Rename CLK_CXX0X to CLK_CXX11,
	CLK_GNUCXX0X to CLK_GNUCXX11.
libstdc++-v3
	* include/bits/c++0x_warning.h: Change -std=c++0x to -std=c++11.

From-SVN: r180707
2011-10-31 15:34:14 -04:00
Jason Merrill a2e70335e2 re PR c++/50500 ([C++0x] [DR 1082] move constructor should cause copy constructor to be deleted, but still declared)
PR c++/50500
	DR 1082
	* class.c (type_has_user_declared_move_constructor): New.
	(type_has_user_declared_move_assign): New.
	(add_implicitly_declared_members): Add lazy copy ops
	even if there's a move.
	* method.c (lazily_declare_fn): Delete implicit copies
	if there's a move.
	(maybe_explain_implicit_delete): Explain this.  Use inform rather
	than error.
	* cp-tree.h: Declare new fns.

From-SVN: r180159
2011-10-18 13:39:15 -04:00
Jonathan Yong d7a3ef9794 configure.host: Use config/os/mingw32-w64 instead of config/os/mingw32 if vendor key is "w64".
2011-10-14  Jonathan Yong  <jon_y@users.sourceforge.net>

	* configure.host: Use config/os/mingw32-w64 instead of
	config/os/mingw32 if vendor key is "w64".
	* config/os/mingw32-w64: Duplicate from config/os/mingw32.
	* config/os/mingw32-w64/os_defines.h: Enable
	_GLIBCXX_FULLY_DYNAMIC_STRING if undefined.
	* acinclude.m4: Set fully-dynamic-string to 1 when enabled,
	0 when disabled or undefined if unset by user.
	* include/bits/basic_string.h: Check if
	_GLIBCXX_FULLY_DYNAMIC_STRING is set to 0 instead of undefined.
	include/bits/basic_string.tcc: Likewise.
	* configure: Regenerated.
	* config.h.in: Likewise.

From-SVN: r179961
2011-10-14 08:57:55 +02:00
Paolo Carlini b78eebe4f5 re PR libstdc++/50714 (codecvt_byname::codecvt::_M_c_locale_codecvt not initialized by destroyed)
2011-10-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/50714
	* include/bits/codecvt.h (codecvt<>::codecvt(size_t)): Initialize
	_M_c_locale_codecvt member.
	* testsuite/22_locale/codecvt_byname/50714.cc: New.

From-SVN: r179948
2011-10-14 00:12:40 +00:00
Paolo Carlini 578f023490 re PR c++/50594 (Option -fwhole-program discards replaced new operator for std::string)
2011-10-12  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/50594
	* decl.c (cxx_init_decl_processing): Add
	__attribute__((externally_visible)) to operator new and
	operator delete library fn.

2011-10-12  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/50594
	* libsupc++/new (operator new, operator delete): Decorate with
	__attribute__((__externally_visible__)).
	* include/bits/c++config: Add _GLIBCXX_THROW.
	* libsupc++/del_op.cc: Adjust.
	* libsupc++/del_opv.cc: Likewise.
	* libsupc++/del_opnt.cc: Likewise.
	* libsupc++/del_opvnt.cc: Likewise.
	* libsupc++/new_op.cc: Likewise.
	* libsupc++/new_opv.cc: Likewise.
	* libsupc++/new_opnt.cc: Likewise.
	* libsupc++/new_opvnt.cc: Likewise.
	* testsuite/18_support/50594.cc: New.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
	line number.

From-SVN: r179863
2011-10-12 18:40:58 +00:00
Emil Wojak 92b2342a6e re PR libstdc++/50661 (std::equal should use more efficient version for arrays of pointers)
2011-10-11  Emil Wojak  <emil@wojak.eu>

	PR c++/50661
	* include/bits/stl_algobase.h (equal): Compare arrays of pointers
	too with memcmp.

From-SVN: r179801
2011-10-11 12:39:18 +00:00
Paolo Carlini 0e83f45aa6 re PR libstdc++/49561 ([C++0x] std::list::size complexity)
2011-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/49561
	* include/bits/stl_list.h (_List_base<>::_List_impl::_M_size):
	Add in C++0x mode.
	(_List_base<>::_List_impl, _List_base<>::_M_get_node,
	_List_base<>::_M_put_node, _List_base<>::_List_base(_List_base&&),
	list<>::size, list<>::swap, list<>::splice): Use it.
	(operator==(const list<>&, const list<>&)): Rewrite in C++0x mode.
	* include/bits/list.tcc (list<>::erase): Likewise.
	(list<>::merge): Adjust in C++0x mode.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_2_neg.cc: Likewise.

From-SVN: r179528
2011-10-04 22:19:44 +00:00
Jonathan Wakely 73f0503101 alloc_traits.h (__alloc_traits::max_size): Define.
2011-10-04  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/ext/alloc_traits.h (__alloc_traits::max_size): Define.
	(__alloc_traits::rebind): Define.
	* include/bits/stl_vector.h: Use them.
	* testsuite/util/testsuite_allocator.h (SimpleAllocator): Define.
	* testsuite/23_containers/vector/allocator/minimal.cc: New.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust dg-error line numbers.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_2_neg.cc: Likewise.

From-SVN: r179523
2011-10-04 21:34:54 +01:00
Paolo Carlini 1c29961267 hashtable.h (_Hashtable<>::insert(value_type&&), [...]): Don't define here...
2011-10-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable.h (_Hashtable<>::insert(value_type&&),
	insert(const_iterator, value_type&&)): Don't define here...
	* include/bits/unordered_set.h (__unordered_set<>,
	__unordered_multiset<>): ... define here instead.

From-SVN: r179464
2011-10-03 15:28:47 +00:00
Paolo Carlini b24a983561 hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)): Remove noexcept from declaration too.
2011-09-29  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
	Remove noexcept from declaration too.

From-SVN: r179360
2011-09-29 17:26:32 +00:00
Paolo Carlini a7cee01d32 re PR libstdc++/50529 ([C++0x] std::vector::erase invokes undefined behavior with empty range)
2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/50529
	* include/bits/vector.tcc (vector<>::erase(iterator, iterator)):
	Fix to do nothing if the range is empty.
	* include/bits/stl_bvector.h: Likewise.
	* include/bits/deque.tcc: Likewise.
	* include/debug/vector: Adjust.
	* include/debug/deque: Likewise.
	* testsuite/23_containers/vector/modifiers/erase/50529.cc: New.
	* testsuite/23_containers/deque/modifiers/erase/50529.cc: Likewise.
	* testsuite/23_containers/deque/modifiers/erase/3.cc: Adjust.

From-SVN: r179234
2011-09-27 02:39:34 +00:00
Benjamin Kosnik 2799d97293 re PR libstdc++/48698 (gnu-versioned-namespace problems)
2011-09-26  Benjamin Kosnik  <bkoz@redhat.com
            Jonathan Wakely  <jwakely.gcc@gmail.com>

	PR libstdc++/48698
	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Set libtool_VERSION here.
	* configure.ac: Move AC_SUBST of libtool_VERSION past call to
	GLIBCXX_ENABLE_SYMVERS.
	* configure: Regenerate.
	* include/bits/c++config: Use __7 as versioned namespace name.
	* config/abi/pre/gnu-versioned-namespace.ver: Change mangling as
	per above.
	* include/c_global/cwchar: Adjust nested namespaces.
	* testsuite/20_util/bind/48698.cc: Add test case.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Change line number.

From-SVN: r179221
2011-09-27 00:02:54 +00:00
John Salmon 82582df651 re PR libstdc++/50510 ([C++0x] transposed variable names in std::seed_seq::generate)
2011-09-24  John Salmon  <john.salmon@deshaw.com>

	PR libstdc++/50510
	* include/bits/random.tcc (seed_seq::generate): Fix computation.

From-SVN: r179149
2011-09-24 22:34:50 +00:00
John Salmon 9d1f3ce6ff re PR libstdc++/50509 ([C++0x] incorrect code in std::seed_seq::generate)
2011-09-24  John Salmon  <john.salmon@deshaw.com>

	PR libstdc++/50509
	* include/bits/random.tcc (seed_seq::generate): Fix computation.

From-SVN: r179144
2011-09-24 18:28:36 +00:00
François Dumont 1c56f7cb72 hashtable.h (_Hashtable<>::__rehash_policy(const _RehashPolicy&)): Commit the modification of the policy only if no exception occured.
2011-09-17  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable.h (_Hashtable<>::__rehash_policy(const
	_RehashPolicy&)): Commit the modification of the policy only if no
	exception occured.
	* testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
	New.

From-SVN: r178927
2011-09-17 09:12:24 +00:00
François Dumont 7e5ac0a4f5 hashtable.h (_Hashtable<>::_M_rehash): Take and restore hash policy _M_prev_resize on exception.
2011-09-14  François Dumont  <fdumont@gcc.gnu.org>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable.h (_Hashtable<>::_M_rehash): Take and restore
	hash policy _M_prev_resize on exception.
	(_Hashtable<>::_M_insert_bucket): Capture hash policy next resize
	before using it and use latter method to have it restored on exception.
	(_Hashtable<>::_M_insert(_Arg&& __v, std::false_type): Likewise.
	(_Hashtable<>::insert(_InputIterator, _InputIterator): Likewise.
	(_Hashtable<>::rehash): Likewise.
	* testsuite/23_containers/unordered_set/insert/hash_policy.cc: New.
	* testsuite/23_containers/unordered_multiset/insert/hash_policy.cc:
	Likewise.


Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r178861
2011-09-14 19:50:20 +00:00
Paolo Carlini 049d289351 tuple: Use everywhere std::size_t...
2011-09-09  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/tuple: Use everywhere std::size_t... instead of int...
	* include/std/functional: Likewise.
	* include/std/scoped_allocator: Likewise.
	* include/bits/stl_pair.h: Likewise.

From-SVN: r178746
2011-09-10 00:47:02 +00:00
Paolo Carlini ebb6e4af61 re PR libstdc++/50336 (LWG issue 445)
2011-09-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/50336
	* include/bits/streambuf_iterator.h (class istreambuf_iterator):
	Implement LWG 445 in C++0x mode.
	* testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc:
	New.

From-SVN: r178713
2011-09-08 22:42:21 +00:00
François Dumont e25fc78ff5 hashtable_policy.h (_Prime_rehash_policy:: _M_next_bkt): Cast _M_max_load_factor to long double.
2011-09-06  François Dumont  <fdumont@gcc.gnu.org>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable_policy.h (_Prime_rehash_policy::
	_M_next_bkt): Cast _M_max_load_factor to long double.
	(_Prime_rehash_policy::_M_bkt_for_elements): Use _M_next_bkt.
	(_Prime_rehash_policy::_M_need_rehash): Likewise; cast all
	float quantities to long double.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r178615
2011-09-06 22:13:46 +00:00
Paolo Carlini 4cdccf2665 re PR libstdc++/50257 ([C++0x] unordered_map slow initialization due to huge __prime_list)
2011-09-06  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/50257
	* include/bits/hashtable_policy.h (_Prime_rehash_policy::
   	_M_next_bkt): Optimize for small argument.

From-SVN: r178581
2011-09-06 10:22:21 +00:00
Paolo Carlini 290df23d48 hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)): Remove noexcept, the move constructor allocates memory...
2011-09-01  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
	Remove noexcept, the move constructor allocates memory; rearrange
	the code in the body to consistently update __ht._M_rehash_policy
	before using _M_next_bkt on it.
	* include/debug/unordered_map: Adjust.
	* include/debug/unordered_set: Likewise.
	* include/profile/unordered_map: Likewise.
	* include/profile/unordered_set: Likewise.
	* testsuite/23_containers/unordered_map/cons/
	noexcept_move_construct.cc: Remove.
	* testsuite/23_containers/unordered_set/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/unordered_multimap/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/unordered_multiset/cons/
	noexcept_move_construct.cc: Likewise.

From-SVN: r178423
2011-09-01 15:45:20 +00:00
Paolo Carlini b671737962 stl_iterator.h (make_move_iterator): Implement DR2061.
2011-08-30  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_iterator.h (make_move_iterator): Implement DR2061.
	* testsuite/24_iterators/move_iterator/dr2061.cc: New.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
	line numbers.

From-SVN: r178330
2011-08-30 15:34:50 +00:00
Paolo Carlini ff15f019e0 re PR libstdc++/50118 (node-based containers cannot use allocators with explicit constructor template)
2011-08-29  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/50118
	* include/bits/stl_list.h (_List_base<>::
	_List_base(const allocator_type&)): Remove.
	(_List_base<>::_List_base(const _Node_alloc_type&)): Add.
	(list<>:list(const allocator_type&), list(size_type, const
	value_type&, const allocator_type&),
	list(initializer_list<, const allocator_type&),
	list(_InputIterator, _InputIterator, const allocator_type&),
	insert(iterator, size_type, const value_type&),
	insert(iterator, _InputIterator, _InputIterator)): Adjust.
	* include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree(const _Compare&,
	const allocator_type&)): Fix.
	* include/bits/stl_map.h (map<>::map(const _Compare&,
 	const allocator_type&), map(initializer_list<>,
	const _Compare&, const allocator_type&), map(_InputIterator,
	_InputIterator, const _Compare&, const allocator_type&),
	get_allocator): Adjust.
	* include/bits/stl_set.h (set<>::set(const _Compare&,
 	const allocator_type&), set(initializer_list<>,
	const _Compare&, const allocator_type&), set(_InputIterator,
	_InputIterator, const _Compare&, const allocator_type&),
	get_allocator): Likewise.
	* include/bits/stl_multimap.h (multimap<>::multimap(const _Compare&,
 	const allocator_type&), multimap(initializer_list<>,
	const _Compare&, const allocator_type&), multimap(_InputIterator,
	_InputIterator, const _Compare&, const allocator_type&),
	get_allocator): Likewise.
	* include/bits/stl_multiset.h (multiset<>::multiset(const _Compare&,
 	const allocator_type&), multiset(initializer_list<>,
	const _Compare&, const allocator_type&), multiset(_InputIterator,
	_InputIterator, const _Compare&, const allocator_type&),
	get_allocator): Likewise.
	* include/bits/forward_list.h (_Fwd_list_base<>::
	_Fwd_list_base(const _Alloc&), _Fwd_list_base(const _Fwd_list_base&,
	const _Alloc&), _Fwd_list_base(_Fwd_list_base&&, const _Alloc&)):
	Remove.
	(_Fwd_list_base<>::_Fwd_list_base(const _Node_alloc_type&),
	_Fwd_list_base(const _Fwd_list_base&,
	const _Node_alloc_type&), _Fwd_list_base(_Fwd_list_base&&,
	const _Node_alloc_type&)): Add.
	(forward_list<>::forward_list(const _Alloc&),
	forward_list(const forward_list&, const _Alloc&),
	forward_list(forward_list&&, const _Alloc&),
	forward_list(size_type, const _Tp&, const _Alloc&),
	forward_list(_InputIterator, _InputIterator, const _Alloc&),
	forward_list(std::initializer_list<>, const _Alloc&),
	get_allocator): Adjust.
	* include/bits/forward_list.tcc
	* testsuite/util/testsuite_allocator.h (ExplicitConsAlloc): Add.
	* testsuite/23_containers/unordered_map/requirements/
	explicit_instantiation/5.cc: New.
	* testsuite/23_containers/multimap/requirements/
	explicit_instantiation/5.cc: Likewise.
	* testsuite/23_containers/multimap/requirements/
	explicit_instantiation/5_c++0x.cc: Likewise.
	* testsuite/23_containers/set/requirements/explicit_instantiation/
	5.cc: Likewise.
	* testsuite/23_containers/set/requirements/explicit_instantiation/
	5_c++0x.cc: Likewise.
	* testsuite/23_containers/unordered_multimap/requirements/
	explicit_instantiation/5.cc: Likewise.
	* testsuite/23_containers/forward_list/requirements/
	explicit_instantiation/5.cc: Likewise.
	* testsuite/23_containers/unordered_set/requirements/
	explicit_instantiation/5.cc: Likewise.
	testsuite/23_containers/multiset/requirements/explicit_instantiation/
	5.cc: Likewise.
	* testsuite/23_containers/multiset/requirements/
	explicit_instantiation/5_c++0x.cc: Likewise.
	* testsuite/23_containers/list/requirements/explicit_instantiation/
	5_c++0x.cc: Likewise.
	* testsuite/23_containers/list/requirements/explicit_instantiation/
	5.cc: Likewise.
	* testsuite/23_containers/unordered_multiset/requirements/
	explicit_instantiation/5.cc: Likewise.
	* testsuite/23_containers/map/requirements/explicit_instantiation/
	5.cc: Likewise.
	* testsuite/23_containers/map/requirements/explicit_instantiation/
	5_c++0x.cc: Likewise.
	* testsuite/23_containers/forward_list/requirements/dr438/
	assign_neg.cc: Adjust dg-error line number.
	* testsuite/23_containers/forward_list/requirements/dr438/
	insert_neg.cc: Likewise.
	* testsuite/23_containers/forward_list/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/forward_list/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_2_neg.cc: Likewise.

From-SVN: r178230
2011-08-29 13:40:33 +00:00
Paolo Carlini 75f5cbb17b move.h (swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Remove workaround for c++/49045.
2011-08-28  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/move.h (swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Remove
	workaround for c++/49045.
	* include/bits/algorithmfwd.h: Likewise.

From-SVN: r178147
2011-08-28 21:05:48 +00:00
Paolo Carlini 6ba30237b9 re PR libstdc++/50119 ([C++0x] copy_n advances InputIterator one more time than necessary)
2011-08-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/50119
	* include/bits/stl_algo.h (__copy_n(_InputIterator, _Size,
	_OutputIterator, input_iterator_tag)): Fix.
	* testsuite/25_algorithms/copy_n/50119.cc: New.

From-SVN: r177871
2011-08-18 16:32:23 +00:00
Paolo Carlini a4eeb82207 future: constexpr functions are implicitly inline.
2011-08-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/future: constexpr functions are implicitly inline.
	* include/std/chrono: Likewise.
	* include/std/complex: Likewise.
	* include/bits/move.h: Likewise.
	* include/bits/stl_pair.h: Likewise.

From-SVN: r177679
2011-08-11 17:53:05 +00:00
Jonathan Wakely a5db4ced81 alloc_traits.h: Fix doxygen @headername.
2011-08-07  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/alloc_traits.h: Fix doxygen @headername.

From-SVN: r177546
2011-08-07 13:25:48 +01:00
Benjamin Kosnik 93c66bc68a user.cfg.in (PDF_HYPERLINKS): To NO.
2011-08-06  Benjamin Kosnik  <bkoz@redhat.com>

	* doc/doxygen/user.cfg.in (PDF_HYPERLINKS): To NO.

2011-08-06  Benjamin Kosnik  <bkoz@redhat.com>

	* doc/doxygen/user.cfg.in: Add scoped_allocator.

	* include/debug/safe_sequence.h: Fix doxygen markup.
	* include/debug/safe_unordered_base.h: Same.
	* include/debug/safe_local_iterator.tcc: Same.
	* include/debug/safe_unordered_container.h: Same.
	* include/std/valarray: Same.
	* include/std/iomanip: Same.
	* include/std/streambuf: Same.
	* include/std/bitset: Same.
	* include/std/fstream: Same.
	* include/std/functional: Same.
	* include/std/istream: Same.
	* include/std/ostream: Same.
	* include/std/scoped_allocator: Same.
	* include/std/sstream: Same.
	* include/parallel/multiway_merge.h: Same.
	* include/parallel/base.h: Same.
	* include/parallel/for_each_selectors.h: Same.
	* include/parallel/multiway_mergesort.h: Same.
	* include/parallel/search.h: Same.
	* include/parallel/partial_sum.h: Same.
	* include/parallel/queue.h: Same.
	* include/parallel/sort.h: Same.
	* include/parallel/random_number.h: Same.
	* include/ext/vstring.h: Same.
	* include/ext/algorithm: Same.
	* include/ext/pb_ds/assoc_container.h: Same.
	* include/ext/bitmap_allocator.h: Same.
	* include/ext/stdio_filebuf.h: Same.
	* include/ext/memory: Same.
	* include/ext/functional: Same.
	* include/bits/basic_ios.h: Same.
	* include/bits/stl_list.h: Same.
	* include/bits/stl_map.h: Same.
	* include/bits/stl_algobase.h: Same.
	* include/bits/stl_queue.h: Same.
	* include/bits/gslice.h: Same.
	* include/bits/locale_classes.h: Same.
	* include/bits/stl_set.h: Same.
	* include/bits/locale_facets.h: Same.
	* include/bits/stl_stack.h: Same.
	* include/bits/stl_heap.h: Same.
	* include/bits/forward_list.h: Same.
	* include/bits/stream_iterator.h: Same.
	* include/bits/basic_string.h: Same.
	* include/bits/stl_multimap.h: Same.
	* include/bits/stl_pair.h: Same.
	* include/bits/ios_base.h: Same.
	* include/bits/stl_numeric.h: Same.
	* include/bits/stl_vector.h: Same.
	* include/bits/stl_deque.h: Same.
	* include/bits/codecvt.h: Same.
	* include/bits/stl_multiset.h: Same.
	* include/bits/stl_uninitialized.h: Same.
	* include/bits/ptr_traits.h: Same.
	* include/bits/slice_array.h: Same.
	* include/bits/stl_iterator_base_funcs.h: Same.
	* include/bits/stl_algo.h: Same.
	* include/bits/stl_iterator.h: Same.
	* include/bits/stl_tempbuf.h: Same.
	* include/bits/regex.h: Same.
	* include/bits/range_access.h: Same.
	* include/bits/random.h: Same.
	* include/bits/alloc_traits.h: Same.
	* include/bits/regex_error.h: Same.
	* include/bits/locale_facets_nonio.h: Same.
	* include/bits/stl_relops.h: Same.
	* include/backward/auto_ptr.h: Same.
	* libsupc++/initializer_list: Same.

	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust line numbers.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
	Same.
	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
	Same.

From-SVN: r177542
2011-08-07 07:27:06 +00:00
Paolo Carlini bdc05efbc8 atomic.cc: Use noexcept.
2011-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

	* src/atomic.cc: Use noexcept.
	* include/std/atomic: Likewise.
	* include/bits/atomic_0.h: Likewise.
	* include/bits/atomic_2.h: Likewise.
	* include/bits/atomic_base.h: Likewise.

From-SVN: r177413
2011-08-04 19:57:48 +00:00
Paolo Carlini 3096f51bf6 re PR libstdc++/49925 ([C++0x] ADL bug mixing boost::shared_ptr and std::make_shared<>)
2011-07-31  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/49925
	* include/bits/shared_ptr.h (make_shared): Qualify allocate_shared
	with std::.
	* include/bits/shared_ptr_base.h (__make_shared): Likewise.

From-SVN: r176985
2011-07-31 20:28:45 +00:00
Paolo Carlini cc2ba8e30f re PR libstdc++/49836 ([C++0x] vector<T>::push_back() should not require T to be (move-)assignable)
2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
	    Nathan Ridge  <zeratul976@hotmail.com>

	PR libstdc++/49836
	* include/bits/stl_vector.h (vector<>::_M_emplace_back_aux):
	Declare.
	(vector<>::push_back(const value_type&)): Use it.
	* include/bits/vector.tcc: Define.
	(vector<>::emplace_back(_Args&&...)): Use it.
	* testsuite/util/testsuite_tr1.h (CopyConsOnlyType, MoveConsOnlyType):
	Add.
	* testsuite/23_containers/vector/modifiers/push_back/49836.cc: New.
	* testsuite/23_containers/deque/modifiers/push_back/49836.cc:
	Likewise.
	* testsuite/23_containers/deque/modifiers/push_front/49836.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_2_neg.cc: Likewise.

Co-Authored-By: Nathan Ridge <zeratul976@hotmail.com>

From-SVN: r176761
2011-07-25 17:08:48 +00:00
Paolo Carlini 73645647f9 hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt, [...]): Fix typos in the last commit.
2011-07-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt,
	_M_bkt_for_elements, _M_need_rehash): Fix typos in the last commit.

From-SVN: r176718
2011-07-24 19:47:04 +00:00
François Dumont 4f7b188f20 hashtable_policy.h (_Prime_rehash_policy): Use __builtin_floor rather than __builtin_ceil to compute next resize value.
2011-07-24  François Dumont  <francois.cppdevs@free.fr>

        * include/bits/hashtable_policy.h (_Prime_rehash_policy): Use
        __builtin_floor rather than __builtin_ceil to compute next resize
        value.
        * testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
        New.

From-SVN: r176717
2011-07-24 19:20:26 +00:00
Benjamin Kosnik 9b9e81a0a9 move.h (move, forward): Mark constexpr.
2011-07-22  Benjamin Kosnik  <bkoz@redhat.com>
	    Daniel Krugler  <daniel.kruegler@googlemail.com>

	* include/bits/move.h (move, forward): Mark constexpr.
	* include/bits/stl_pair.h (pair): Mark move ctors constexpr.
	* testsuite/20_util/pair/make_pair/constexpr.cc: New.
	* testsuite/20_util/pair/cons/constexpr.cc: Add tests.


Co-Authored-By: Daniel Krugler <daniel.kruegler@googlemail.com>

From-SVN: r176672
2011-07-23 03:17:11 +00:00
Paolo Carlini 9992d56429 re PR libstdc++/48430 (std::hash partial specialization for std::unique_ptr and std::shared_ptr are using unary_function)
2011-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/48430
	* include/bits/shared_ptr.h (struct hash<shared_ptr<>>): Use
	__hash_base.
	* include/bits/unique_ptr.h (struct hash<unique_ptr<>>): Likewise.

From-SVN: r176405
2011-07-18 16:07:24 +00:00
Paolo Carlini 848ca96f30 re PR libstdc++/49559 ([C++0x] stable_sort calls self-move-assignment operator)
2011-07-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/49559
	* include/bits/stl_algo.h (__move_merge_backward): Remove.
	(__move_merge_adaptive, __move_merge_adaptive_backward): New.
	(__merge_adaptive): Use the latter two.
	(__rotate_adaptive): Avoid self move-assignment.
	* include/bits/stl_algobase.h (move_backward): Fix comment.
	* testsuite/25_algorithms/stable_sort/49559.cc: New.
	* testsuite/25_algorithms/inplace_merge/49559.cc: Likewise.
	* testsuite/25_algorithms/inplace_merge/moveable.cc: Extend.
	* testsuite/25_algorithms/inplace_merge/moveable2.cc: Likewise.
	* testsuite/util/testsuite_rvalref.h (rvalstruct::operator=
	(rvalstruct&&)): Check for self move-assignment.

From-SVN: r176174
2011-07-11 18:38:54 +00:00
Jonathan Wakely bd8485dc9f stl_vector.h: Use new allocator model in C++0x mode.
2011-07-09  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/stl_vector.h: Use new allocator model in C++0x mode.
	* include/bits/vector.tcc: Likewise.
	* testsuite/util/testsuite_allocator.h (propagating_allocator): Define.
	* testsuite/23_containers/vector/allocator/copy_assign.cc: New.
	* testsuite/23_containers/vector/allocator/noexcept.cc: New.
	* testsuite/23_containers/vector/allocator/copy.cc: New.
	* testsuite/23_containers/vector/allocator/swap.cc: New.
	* testsuite/23_containers/vector/allocator/move_assign.cc: New.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust dg-error line numbers.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc:
	Likewise.

From-SVN: r176078
2011-07-09 14:06:29 +01:00
Paolo Carlini bd9db3b8dd stl_construct.h: Update Copyright years.
2011-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_construct.h: Update Copyright years.
	* include/bits/stl_uninitialized.h: Likewise.

From-SVN: r175309
2011-06-22 20:27:21 +00:00
Jonathan Wakely e8eb60bd92 Makefile.am: Add alloc_traits.h headers.
2011-06-22  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/Makefile.am: Add alloc_traits.h headers.
	* include/Makefile.in: Regenerate.
	* include/std/memory: Include uses_allocator.h explicitly.
	* include/bits/allocator.h (allocator_traits): Move to ...
	* include/bits/alloc_traits.h: New header.
	* include/ext/alloc_traits.h (__alloc_traits): Extension to provide
	a common allocator interface for C++98 and C++0x.
	* include/bits/stl_construct.h: Use __alloc_traits.
	* include/bits/stl_uninitialized.h: Likewise.

From-SVN: r175305
2011-06-22 20:57:12 +01:00
Daniel Krugler ccb4f5a707 move.h (__is_nothrow_swappable): Add.
2011-06-22  Daniel Krugler  <daniel.kruegler@googlemail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/move.h (__is_nothrow_swappable): Add.
	(swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Use noexcept.
	* include/bits/algorithmfwd.h: Adjust.
	* testsuite/25_algorithms/swap/noexcept.cc: New.


Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r175277
2011-06-21 23:01:03 +00:00
Jonathan Wakely d2393b3adb ptr_traits.h (pointer_traits<T*>::pointer_to): Use noexcept.
2011-06-14  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/ptr_traits.h (pointer_traits<T*>::pointer_to): Use
	noexcept.

From-SVN: r175057
2011-06-14 23:08:24 +01:00
Paolo Carlini 6a97dbf748 valarray (~valarray): Use noexcept.
2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/valarray (~valarray): Use noexcept.
	* include/bits/unique_ptr.h (~unique_ptr): Likewise.
	* testsuite/26_numerics/valarray/noexcept_move_construct.cc: New.
	* testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
	Likewise.
	* testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc:
	Likewise.
	* testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
	Likewise.

From-SVN: r175039
2011-06-14 17:48:29 +00:00
Paolo Carlini 6b14c6d7ff functional: Use noexcept.
2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/functional: Use noexcept.
	* include/bits/stl_tempbuf.h: Likewise.

From-SVN: r175026
2011-06-14 15:09:14 +00:00
François Dumont 8a752dfea6 allocator.h (__shrink_to_fit): Rename to __shrink_to_fit_aux, fix.
2011-06-12  François Dumont  <francois.cppdevs@free.fr>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/allocator.h (__shrink_to_fit): Rename to
	__shrink_to_fit_aux, fix.
	* include/bits/stl_vector.h (_M_shrink_to_fit): Declare.
	(shrink_to_fit): Use the latter.
	* include/debug/vector (shrink_to_fit): Likewise.
	* include/bits/vector.tcc (_M_shrink_to_fit): Define.
	* include/bits/stl_deque.h (_M_shrink_to_fit): Declare.
	(shrink_to_fit): Use the latter.
	* include/debug/deque (shrink_to_fit): Likewise.
	* include/bits/deque.tcc (_M_shrink_to_fit): Define.
	* include/bits/vector.tcc (vector<bool>::_M_reallocate): Add.
	* include/bits/stl_bvector.h (_M_shrink_to_fit): Declare.
	(shrink_to_fit): Use the latter.
	(reserve): Use _M_reallocate, move inline.
	(_Bvector_base<>::_S_nword): Add, use it throughout.
	* include/debug/string (shrink_to_fit): Redo.
	* include/ext/vstring.h (shrink_to_fit): Optimize.
	* include/bits/basic_string.h (shrink_to_fit): Likewise.
	* testsuite/21_strings/debug/shrink_to_fit.cc: New.
	* testsuite/23_containers/vector/debug/shrink_to_fit.cc: Likewise.
	* testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc:
	Likewise.
	* testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc:
	Likewise.
	* testsuite/23_containers/deque/debug/shrink_to_fit.cc: Likewise.



Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r174967
2011-06-12 15:51:36 +00:00
Paolo Carlini 545dc5e324 extptr_allocator.h: Include <ext/numeric_traits.h> instead of <limits>.
2011-06-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/ext/extptr_allocator.h: Include <ext/numeric_traits.h>
	instead of <limits>.
	* include/bits/allocator.h: Likewise.

	* include/std/chrono (duration_values<>::min): Call lowest, not min.

From-SVN: r174805
2011-06-08 12:12:00 +00:00
Paolo Carlini 76aa78e9eb allocator.h (__shrink_to_fit): Simplify.
2011-06-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/allocator.h (__shrink_to_fit): Simplify.
	* include/bits/stl_vector.h (vector<>::shrink_to_fit): Adjust.
	* include/bits/stl_deque.h: Likewise.
	* include/bits/stl_bvector.h: Likewise.

From-SVN: r174802
2011-06-08 11:07:24 +00:00
Paolo Carlini 74a2a1b4f6 move.h (struct __move_if_noexcept_cond): Add.
2011-06-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/move.h (struct __move_if_noexcept_cond): Add.
	(move_if_noexcept): Use the latter.
	* include/bits/stl_iterator.h (__make_move_if_noexcept_iterator,
	_GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR): Add.
	* include/bits/stl_uninitialized.h
	(__uninitialized_move_if_noexcept_a): Add.
	* include/bits/vector.tcc (vector<>::reserve): Use
	_GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR.
	(vector<>::_M_insert_aux, _M_fill_insert, _M_default_append,
	_M_range_insert): Use __uninitialized_move_if_noexcept_a.
	* testsuite/23_containers/vector/modifiers/moveable2.cc: New.
	* testsuite/23_containers/vector/capacity/resize/moveable2.cc:
	Likewise.
	* testsuite/23_containers/vector/capacity/reserve/moveable2.cc:
	Likewise.

From-SVN: r174756
2011-06-07 16:11:36 +00:00
Paolo Carlini 7aca3d94be move.h (move_if_noexcept): Use __and_ and __not_.
2011-06-06  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/move.h (move_if_noexcept): Use __and_ and __not_.

From-SVN: r174708
2011-06-06 16:39:29 +00:00
Jonathan Wakely 428319bb9a ptr_traits.h (pointer_traits): Fix typos.
2011-06-05  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/ptr_traits.h (pointer_traits): Fix typos.
	* include/ext/pointer.h (pointer_traits): Add partial specialization
	for _Pointer_adapter.

From-SVN: r174661
2011-06-05 21:28:38 +01:00
Paolo Carlini 6f59ea252b hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)): Use std::move on the allocator, use noexcept.
2011-06-01  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
	Use std::move on the allocator, use noexcept.
	(_Hashtable<>::~_Hashtable): Use noexcept.
	* include/bits/stl_list.h: Likewise.
	* include/bits/forward_list.h: Likewise.
	* include/bits/stl_vector.h: Likewise.
	* include/bits/stl_bvector.h: Likewise.
	* include/bits/stl_map.h (map<>::map(map&&)): Use noexcept. 
	* include/bits/stl_set.h: Likewise.
	* include/bits/stl_multimap.h: Likewise.
	* include/bits/stl_multiset.h: Likewise.
	* include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree(_Rb_tree&&)): Use
	std::move on the allocator.
	(_Rb_tree<>::~_Rb_tree): Use noexcept.
	* include/bits/stl_deque.h: Likewise.
	* include/bits/basic_string.h (basic_string<>::~basic_string): Use
	noexcept.
	* include/ext/vstring.h (__versa_string<>::~__versa_string): Likewise.
	* include/debug/set.h: Adjust.
	* include/debug/unordered_map: Likewise.
	* include/debug/multiset.h: Likewise.
	* include/debug/forward_list: Likewise.
	* include/debug/vector: Likewise.
	* include/debug/unordered_set: Likewise.
	* include/debug/deque: Likewise.
	* include/debug/map.h: Likewise.
	* include/debug/string: Likewise.
	* include/debug/list: Likewise.
	* include/debug/multimap.h: Likewise.
	* include/profile/set.h: Likewise.
	* include/profile/unordered_map: Likewise.
	* include/profile/multiset.h: Likewise.
	* include/profile/forward_list: Likewise.
	* include/profile/unordered_set: Likewise.
	* include/profile/vector: Likewise.
	* include/profile/deque: Likewise.
	* include/profile/map.h: Likewise.
	* include/profile/list: Likewise.
	* include/profile/multimap.h: Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/
	noexcept_move_construct.cc: New.
	* testsuite/21_strings/basic_string/cons/char/
	noexcept_move_construct.cc: Likewise.
	* testsuite/ext/vstring/cons/noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/unordered_map/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/multimap/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/set/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/unordered_multimap/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/forward_list/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/unordered_set/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/vector/bool/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/vector/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/multiset/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/list/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/unordered_multiset/cons/
	noexcept_move_construct.cc: Likewise.
	* testsuite/23_containers/map/cons/noexcept_move_construct.cc
	* testsuite/23_containers/forward_list/requirements/dr438/
	assign_neg.cc: Adjust dg-error line numbers.
	* testsuite/23_containers/forward_list/requirements/dr438/
	insert_neg.cc: Likewise.
	* testsuite/23_containers/forward_list/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/forward_list/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	assign_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	insert_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/
	assign_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/
	insert_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	assign_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	insert_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_2_neg.cc: Likewise.

	* include/bits/move.h (swap): Use __and_ in the noexcept.
	* include/bits/algorithmfwd.h: Adjust.

From-SVN: r174525
2011-06-01 14:16:19 +00:00
Paolo Carlini cea8c6deef basic_string.h: Use noexcept per the FDIS (minus compare(const string&)...
2011-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/basic_string.h: Use noexcept per the FDIS (minus
	compare(const string&), which uses char_traits::compare, which
	isn't noexcept; also no noexcept in the move assignment operator
	and move assign, see c++std-lib-30855).
	* include/bits/basic_string.tcc: Likewise.
	* include/ext/vstring.h: Likewise.
	* include/ext/vstring.tcc: Likewise.
	* include/debug/string: Likewise.

From-SVN: r174479
2011-05-31 12:50:31 +00:00
Paolo Carlini dd7b175ec3 type_traits (__or_, __and_): Add trivial definitions for a single element.
2011-05-30  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/type_traits (__or_, __and_): Add trivial definitions
	for a single element.
	* include/bits/stl_pair.h: Use __and_ in noexcept specs and
	constraints.
	(pair<>::pair(pair&&)): Define.
	(pair<>::pair(const pair<>&)): Constrain with is_convertible.
	(pair<>::pair(pair<>&&)): Likewise, remove noexcept.
	* include/std/tuple: Use __and_ in noexcept specs and constraints.
	(_Tuple_impl<>::_Tuple_impl(allocator_arg_t, const _Alloc&,
	_Tuple_impl&&)): Remove noexcept.
	(tuple<>::tuple(_UElements&&...), tuple(const tuple<_UElements...>&),
	tuple(tuple<_UElements...>&&), tuple(const pair<_U1, _U2>&),
	tuple(pair<_U1, _U2>&&)): Constrain with is_convertible.
	* testsuite/20_util/tuple/moveable2.cc: Use = delete.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
	Adjust dg-error line numbers.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.
	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.

From-SVN: r174464
2011-05-31 02:29:22 +00:00
Jonathan Wakely b821466067 tuple: Implement uses-allocator construction.
2011-05-30  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/std/tuple: Implement uses-allocator construction.
	* include/bits/allocator.h (uses_allocator): Move to ...
	* include/bits/uses_allocator.h: New file.
	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* testsuite/20_util/uses_allocator/cons_neg.cc: New.
	* testsuite/20_util/uses_allocator/construction.cc: New.
	* testsuite/20_util/tuple/cons/allocate_noncopyable.cc: New.
	* testsuite/20_util/tuple/cons/allocators.cc: New.

From-SVN: r174443
2011-05-30 17:31:17 +01:00
Jonathan Wakely 45ba8f9f8f Makefile.am: Add new ptr_traits.h header.
2011-05-28  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/Makefile.am: Add new ptr_traits.h header.
	* include/Makefile.in: Regenerate.
	* include/bits/ptr_traits.h (pointer_traits): New.
	* include/bits/allocator.h (allocator_traits): Add.
	* include/ext/array_allocator.h (construct, destroy): Update C++0x
	versions.
	* include/ext/bitmap_allocator.h (construct, destroy): Likewise.
	* include/ext/extptr_allocator.h (construct, destroy): Likewise.
	* include/ext/malloc_allocator.h (construct, destroy): Likewise.
	* include/ext/mt_allocator.h (construct, destroy): Likewise.
	* include/ext/new_allocator.h (construct, destroy): Likewise.
	* include/ext/pool_allocator.h (construct, destroy): Likewise.
	* include/ext/throw_allocator.h (construct, destroy): Likewise.
	* testsuite/20_util/allocator_traits/requirements/typedefs.cc: New.
	* testsuite/20_util/allocator_traits/requirements/
	explicit_instantiation.cc: New.
	* testsuite/20_util/allocator_traits/members/max_size.cc: New.
	* testsuite/20_util/allocator_traits/members/select.cc: New.
	* testsuite/20_util/allocator_traits/members/construct.cc: New.
	* testsuite/20_util/allocator_traits/members/allocate_hint.cc: New.
	* testsuite/20_util/allocator_traits/members/destroy.cc: New.
	* testsuite/20_util/pointer_traits/requirements/typedefs.cc: New.
	* testsuite/20_util/pointer_traits/requirements/
	explicit_instantiation.cc: New.

From-SVN: r174380
2011-05-28 14:27:43 +01:00
Paolo Carlini d3677132a2 list.cc: Use noexcept per the FDIS.
2011-05-26  Paolo Carlini  <paolo.carlini@oracle.com>

	* src/list.cc: Use noexcept per the FDIS.
	* src/compatibility-list-2.cc: Likewise.
	* include/debug/set.h: Likewise.
	* include/debug/unordered_map: Likewise.
	* include/debug/multiset.h: Likewise.
	* include/debug/forward_list: Likewise.
	* include/debug/unordered_set: Likewise.
	* include/debug/vector: Likewise.
	* include/debug/map.h: Likewise.
	* include/debug/deque: Likewise.
	* include/debug/list: Likewise.
	* include/debug/multimap.h: Likewise.
	* include/profile/set.h: Likewise.
	* include/profile/unordered_map: Likewise.
	* include/profile/multiset.h: Likewise.
	* include/profile/forward_list: Likewise.
	* include/profile/vector: Likewise.
	* include/profile/unordered_set: Likewise.
	* include/profile/map.h: Likewise.
	* include/profile/deque: Likewise.
	* include/profile/list: Likewise.
	* include/profile/multimap.h: Likewise.
	* include/bits/hashtable.h: Likewise.
	* include/bits/stl_list.h: Likewise.
	* include/bits/stl_map.h: Likewise.
	* include/bits/hashtable_policy.h: Likewise.
	* include/bits/stl_set.h: Likewise.
	* include/bits/forward_list.h: Likewise.
	* include/bits/stl_multimap.h: Likewise.
	* include/bits/stl_vector.h: Likewise.
	* include/bits/stl_deque.h: Likewise.
	* include/bits/stl_multiset.h: Likewise.
	* include/bits/stl_bvector.h: Likewise.
	* include/bits/stl_tree.h: Likewise.

From-SVN: r174295
2011-05-26 15:35:02 +00:00
Paolo Carlini c688bbdd63 stl_queue.h: Use noexcept per the FDIS.
2011-05-25  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_queue.h: Use noexcept per the FDIS.
	* include/bits/stl_stack.h: Likewise.

From-SVN: r174254
2011-05-26 00:36:35 +00:00
Paolo Carlini deaf34a90b random.h (random_device::min, max): Specify constexpr.
2011-05-25  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/random.h (random_device::min, max): Specify constexpr.

From-SVN: r174219
2011-05-25 17:55:40 +00:00
Paolo Carlini 782378a6ae c++config (_GLIBCXX_NOTHROW): Update for noexcept.
2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/c++config (_GLIBCXX_NOTHROW): Update for noexcept.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
	line number.

From-SVN: r174107
2011-05-24 10:28:13 +00:00
Paolo Carlini 23e4c4eec2 streambuf_iterator.h: Use noexcept per the FDIS.
2011-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/streambuf_iterator.h: Use noexcept per the FDIS.
	(istreambuf_iterator<>::istreambuf_iterator(const
	istreambuf_iterator&),  ~istreambuf_iterator()): Add defaulted
	in C++0x mode.

From-SVN: r174094
2011-05-23 23:03:42 +00:00
Paolo Carlini 525fe1cf88 unique_ptr.h: Use noexcept per the FDIS.
2011-05-21  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/unique_ptr.h: Use noexcept per the FDIS.

From-SVN: r174004
2011-05-21 21:50:39 +00:00
Paolo Carlini 2789f415a1 char_traits.h: Use noexcept throughout.
2011-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/char_traits.h: Use noexcept throughout.
	* include/std/typeindex: Likewise.

	* include/std/tuple (_Tuple_impl<>_Tuple_impl(_Tuple_impl&&)): Use
	noexcept; adjust callers.
	* include/bits/stl_pair.h (pair<>::pair(pair<>&&)): Use noexcept.
	* testsuite/20_util/tuple/cons/noexcept_move_construct.cc: New.
	* testsuite/20_util/pair/cons/noexcept_move_construct.cc: Likewise.
	* testsuite/20_util/pair/noexcept_swap.cc: Likewise.
	* testsuite/20_util/pair/noexcept_move_assign.cc: Likewise.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
	line numbers.

From-SVN: r173986
2011-05-21 00:05:03 +00:00
Paolo Carlini 173f26ae56 tuple (tuple<>::operator=(tuple&&)): Specify as noexcept.
2011-05-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/tuple (tuple<>::operator=(tuple&&)): Specify as
        noexcept.
	(__get_helper): Likewise.
	(_Head_base<>::_M_head, _Tuple_impl<>::_M_head, _M_tail): Likewise.
	* include/bits/move.h (swap): Likewise.
	* include/bits/algorithmfwd.h (swap): Adjust.
	* include/bits/stl_pair.h (pair<>::operator=(pair&&)): Spec noexcept.
	* testsuite/util/testsuite_allocator.h (uneq_allocator): In C++0x
	mode, prefer delete to access control to make the type not copy
	assignable.
	* testsuite/util/testsuite_tr1.h: Add test classes.
	* testsuite/20_util/tuple/noexcept_swap.cc: New.
	* testsuite/20_util/tuple/noexcept_move_assign.cc: Likewise.
	* testsuite/25_algorithms/reverse/moveable.cc: Likewise, prefer
	delete to access control.
	* testsuite/25_algorithms/swap_ranges/moveable.cc: Likewise.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
	line numbers.

From-SVN: r173917
2011-05-19 17:20:22 +00:00
Jonathan Wakely cf70f97b95 shared_ptr_base.h: Use noexcept.
2011-05-18  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/shared_ptr_base.h: Use noexcept. Define special member
	functions as defaulted/deleted.
	* include/bits/shared_ptr.h: Use noexcept.
	* 20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error line numbers.
	* 20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.

From-SVN: r173882
2011-05-18 23:59:17 +01:00
Paolo Carlini 5d861bf2cb initializer_list: Use noexcept specifier.
2011-05-18  Paolo Carlini  <paolo.carlini@oracle.com>

	* libsupc++/initializer_list: Use noexcept specifier.
	(initializer_list<>::size, begin, end): Qualify as const.
	* include/bits/move.h (__addressof, forward, move, addressof): Specify
	as noexcept.
	* include/std/bitset: Use noexcept specifier throughout.
	* include/debug/bitset: Update.
	* include/profile/bitset: Likewise.

From-SVN: r173871
2011-05-18 18:05:17 +00:00
Paolo Carlini 18eeaec47b utility (get(std::pair<>&&)): Add.
2011-05-16  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/utility (get(std::pair<>&&)): Add.
	* include/bits/stl_pair.h (pair::swap(pair&),
	swap(pair<>&, pair<>&)): Use noexcept.
	* include/bits/random.h (discard_block_engine<>::base,
	independent_bits_engine<>::base, shuffle_order_engine<>::base,
	random_device::entropy): Use noexcept.
	* include/std/array: Use noexcept where appropriate.
	(get(array<>&&)): Add.
	* testsuite/23_containers/array/requirements/get.cc: New.
	* testsuite/20_util/pair/get.cc: Likewise.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Tweak dg-error
	line number.

From-SVN: r173798
2011-05-16 18:09:17 +00:00
Paolo Carlini 4d4cf1444d c++config (_GLIBCXX_NOEXCEPT, [...]): Add.
2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/c++config (_GLIBCXX_NOEXCEPT, _GLIBCXX_USE_NOEXCEPT):
	Add.
	* include/std/limits: Use the latter everywhere.
	(numeric_limits<char16_t>, numeric_limits<char32_t>): Simplify
	macro usages, the specializations exist only in C++0x mode.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
	line number.

From-SVN: r173774
2011-05-15 18:21:03 +00:00
Paolo Carlini 1f428429c4 move.h (move_if_noexcept): Add.
2011-04-27  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/move.h (move_if_noexcept): Add.
	* testsuite/20_util/move_if_noexcept/requirements/
	explicit_instantiation.cc: New.
	* testsuite/20_util/move_if_noexcept/1.cc: Likewise.

From-SVN: r173044
2011-04-27 18:37:32 +00:00
Daniel Krugler da8111a024 PR libstdc++/48635 (again)
2011-04-17  Daniel Krugler  <daniel.kruegler@googlemail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/48635 (again)
	* include/bits/unique_ptr.h (unique_ptr<>::unique_ptr(unique_ptr<>&&),
	unique_ptr<_Tp[]>::unique_ptr(unique_ptr<>&&),
	unique_ptr<>::operator=(unique_ptr<>&&),
	unique_ptr<_Tp[]>::operator=(unique_ptr<>&&)): Use forward<_Ep>, not
	forward<_Dp>, to forward the deleter.
	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: New.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r172619
2011-04-17 21:46:11 +00:00
Daniel Krugler d4610485cc re PR libstdc++/48631 ([C++0x] default_delete<T[]> accepts pointer conversions in function call operator)
2011-04-15  Daniel Krugler  <daniel.kruegler@googlemail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/48631
	* include/bits/unique_ptr.h (default_delete<_Tp[]>): Add deleted
	function call operator.
	* testsuite/20_util/default_delete/48631_neg.cc: New.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
	line numbers.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r172534
2011-04-16 02:02:29 +00:00
Daniel Krugler 2705a8d66e re PR libstdc++/48635 ([C++0x] unique_ptr<T, D&> moves the deleter instead of copying it)
2011-04-15  Daniel Krugler  <daniel.kruegler@googlemail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/48635
	* include/bits/unique_ptr.h (unique_ptr<>::operator=(unique_ptr&&),
	unique_ptr<>::operator=(unique_ptr<>&&),
	unique_ptr<_Tp[],>::operator=(unique_ptr&&),
	unique_ptr<_Tp[],>::operator=(unique_ptr<>&&)): Forward the deleter
	instead of moving it.
	* testsuite/20_util/unique_ptr/assign/48635.cc: New.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r172532
2011-04-16 00:55:43 +00:00
Jonathan Wakely 0569d07d16 re PR libstdc++/48398 ([C++0x] std::unique_ptr<T, D> is broken when D::pointer is not T*)
2011-04-02  Jonathan Wakely  <redi@gcc.gnu.org>

	PR libstdc++/48398
	* include/bits/unique_ptr.h (__tuple_type): Store pointer type.
	* testsuite/20_util/unique_ptr/modifiers/48398.cc: New.
	* testsuite/20_util/unique_ptr/requirements/pointer_type.cc: Remove
	unused parameter name.

From-SVN: r171894
2011-04-02 20:32:15 +01:00
Paolo Carlini ff2e697a03 random.h (negative_binomial_distribution<>:: negative_binomial_distribution(_IntType, double), [...]): Tweak construction of _M_gd.
2011-03-25  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/random.h (negative_binomial_distribution<>::
	negative_binomial_distribution(_IntType, double),
	negative_binomial_distribution<>::
	negative_binomial_distribution(const param_type&)): Tweak
	construction of _M_gd.
	* include/bits/random.tcc (negative_binomial_distribution<>::
	operator()): Adjust.

From-SVN: r171443
2011-03-25 10:06:33 +00:00
Paolo Carlini 113b21bdaf random.h (negative_binomial_distribution<>:: negative_binomial_distribution(_IntType, double), [...]): Fix construction of _M_gd.
2011-03-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/random.h (negative_binomial_distribution<>::
	negative_binomial_distribution(_IntType, double),
	negative_binomial_distribution<>::
	negative_binomial_distribution(const param_type&)): Fix
	construction of _M_gd.
	* include/bits/random.tcc (negative_binomial_distribution<>::
	operator()): Fix computation, per Leger's algorithm.
	* testsuite/util/testsuite_random.h (discrete_pdf,
	negative_binomial_pdf, poisson_pdf, uniform_int_pdf): New.
	(binomial_pdf): Swap last two parameters.
	* testsuite/26_numerics/random/discrete_distribution/
	operators/values.cc: New.
	* testsuite/26_numerics/random/negative_binomial_distribution/
	operators/values.cc: Likewise.
	* testsuite/26_numerics/random/poisson_distribution/
	operators/values.cc: Likewise.
	* testsuite/26_numerics/random/uniform_int_distribution/
	operators/values.cc: Likewise.
	* testsuite/26_numerics/random/binomial_distribution/
	operators/values.cc: Adjust.

From-SVN: r171411
2011-03-24 16:49:19 +00:00
Paolo Carlini 355e71b9df shared_ptr.h (operator>, [...]): Add, per DR 1401.
2011-03-22  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/shared_ptr.h (operator>, operator<=, operator>=): Add,
	per DR 1401.
	(operator==, operator!=, operator<): Fix per the letter of DR 1401.
	* include/bits/shared_ptr_base.h: Likewise for __shared_ptr.
	* include/bits/unique_ptr.h (operator==, operator!=, operator<,
	operator<=, operator>, operator>=): Fix per the letter of DR 1401.
	* testsuite/20_util/shared_ptr/comparison/dr1401.cc: New.
	* testsuite/20_util/unique_ptr/comparison/dr1401.cc: Likewise.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust.

From-SVN: r171293
2011-03-22 15:15:03 +00:00
Benjamin Kosnik e5a44bd645 regex_compiler.h: Nest namespace versioning.
2011-03-14  Benjamin Kosnik  <bkoz@redhat.com>

	* include/bits/regex_compiler.h: Nest namespace versioning.
	* include/bits/regex_grep_matcher.tcc: Same.
	* include/bits/regex_grep_matcher.h: Same.
	* include/bits/regex_cursor.h: Same.
	* include/bits/regex_nfa.h: Same.
	* include/bits/regex_nfa.tcc: Same.

	* include/bits/regex_grep_matcher.h: Version forward declarations.
	* include/bits/c++config: Add namespace association for __regex.
	* include/bits/regex.h: Make sub_match consistent.

From-SVN: r170978
2011-03-15 02:55:19 +00:00
Benjamin Kosnik e95992339f Makefile.am: Add functional.cc, shared_ptr.cc.
2011-03-14  Benjamin Kosnik  <bkoz@redhat.com>

	* src/Makefile.am: Add functional.cc, shared_ptr.cc.
	* src/Makefile.in: Regenerate.
	* libsupc++/Makefile.am: Add nested_exception.cc.
	* libsupc++/Makefile.in: Regenerate.
	* src/system_error.cc: Add ctor and dtor definitions for error_category.
	* src/functional.cc: New. Add dtor definition for bad_function_call.
	* src/stdexcept.cc: Add dtor definitions for domain_error,
	invalid_argument, length_error, out_of_range, range_error,
	overflow_error, underflow_error.
	* src/future.cc: Add dtor definition for __future_base::_Result_base.
	* src/shared_ptr.cc: New. Add dtor definition for bad_weak_ptr.
	* src/thread.cc: Add dtor for thread::_Impl_base.
	* include/std/system_error: Adjust.
	* include/std/stdexcept: Same.
	* include/std/future: Same.
	* include/std/functional: Same.
	* include/std/thread: Same.
	* include/bits/shared_ptr_base.h: Same.
	* libsupc++/nested_exception.cc: New. Add dtor for nested_exception.
	* libsupc++/nested_exception.h: Adjust.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
	* config/abi/pre/gnu.ver: Add new exports.

	* include/bits/regex_compiler.h: Nest namespace versioning.
	* include/bits/regex_grep_matcher.tcc: Same.
	* include/bits/regex_grep_matcher.h: Same.
	* include/bits/regex_cursor.h: Same.
	* include/bits/regex_nfa.h: Same.
	* include/bits/regex_nfa.tcc: Same.

From-SVN: r170975
2011-03-15 00:24:08 +00:00
Andrey Zholos d8d4db3345 re PR libstdc++/48114 ([C++0x] binomial_distribution incorrect for p > .5 and geometric_distribution wrongly implements the TR1 definition)
2011-03-14  Andrey Zholos  <aaz@althenia.net>

	PR libstdc++/48114
	* include/bits/random.h (geometric_distribution): Correct formula
	in comment, per C++0x.
	(geometric_distribution<>::param_type::param_type(double)): Fix check.
	(geometric_distribution<>::param_type::_M_initialize):
	Store log(1 - p).
	* include/bits/random.tcc (geometric_distribution<>::operator()):
	Fix computation.
	(binomial_distribution<>::operator()): Likewise.

From-SVN: r170946
2011-03-14 17:57:48 +00:00
Paolo Carlini 60c5236ed1 [multiple changes]
2011-03-09  Paolo Carlini  <paolo.carlini@oracle.com>

	* testsuite/util/testsuite_rvalref.h: Minor tweaks.

2011-03-09  Jonathan Wakely  <redi@gcc.gnu.org>
	    Chris Jefferson  <chris@bubblescope.net>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	* testsuite/util/testsuite_rvalref.h (rvalstruct_compare_by_value):
	New.
	* testsuite/25_algorithms/sort_heap/check_compare_by_value.cc:
	Likewise.
	* testsuite/25_algorithms/partial_sort/check_compare_by_value:
	Likewise.
	* testsuite/25_algorithms/stable_sort/check_compare_by_value.cc:
	Likewise.
	* testsuite/25_algorithms/sort/check_compare_by_value: Likewise.

2011-03-09  Chris Jefferson  <chris@bubblescope.net>

	PR libstdc++/48038
	* include/bits/stl_algo.h (__merge_backward): Rename to
	__move_merge_backward and change to always move rather than copy.
	(__move_merge): New function similar to std::merge except values
	are moved instead of copied.
	(__merge_adaptive, __merge_sort_loop): Change from using std::merge
	and __merge_backward to __move_merge and __move_merge_backward.

From-SVN: r170827
2011-03-09 18:30:11 +00:00
Benjamin Kosnik ed4f96af59 Makefile.am (inst_sources): Make source instantion files conditional.
2011-03-04  Benjamin Kosnik  <bkoz@chula>

	* src/Makefile.am (inst_sources): Make source instantion files
	conditional.
	(XTEMPLATE_FLAGS): Make -fno-implicit-templates conditional.
	* src/Makefile.in: Regenerate.
	* src/valarray-inst.cc: Move to..
	* src/valarray.cc: ...this.
	* acinclude.m4 (GLIBCXX_ENABLE_EXTERN_TEMPLATE]): Define.
	* configure.ac (GLIBCXX_ENABLE_EXTERN_TEMPLATE): Use it.
	* configure: Regenerate.
	* include/Makefile.am (stamp-extern-template): Add.
	* include/Makefile.in: Regenerate.

	* doc/xml/manual/configure.xml: Document --enable-extern-template.

	* include/bits/locale_classes.tcc: Adjust comment.
	* include/bits/locale_facets.tcc: Same.
	* include/bits/basic_ios.tcc: Same.
	* include/bits/istream.tcc: Same.
	* include/bits/codecvt.h: Same.
	* include/bits/ostream.tcc: Same.
	* include/bits/sstream.tcc: Same.
	* include/bits/c++config: Same.
	* include/bits/basic_string.tcc: Same.
	* include/bits/ostream_insert.h: Same.
	* include/bits/locale_facets_nonio.tcc: Same.
	* include/bits/streambuf.tcc: Same.
	* include/bits/allocator.h: Same.
	* include/bits/fstream.tcc: Same.

	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.

From-SVN: r170686
2011-03-04 21:51:56 +00:00
Paolo Carlini 1139a7354d re PR libstdc++/47921 (pbump will overflow when input n is larger than 2G-1)
2011-02-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/47921
	* include/std/streambuf (basic_streambuf<>::__safe_gbump,
	__safe_pbump): Add.
	* include/bits/streambuf.tcc (basic_streambuf<>::xgetn,
	xputn): Use the latter.
	* include/bits/streambuf_iterator.h: Likewise.
	* src/strstream.cc: Likewise.
	* src/streambuf.cc: Likewise.
	* src/compatibility.cc: Likewise.
	* src/istream.cc: Likewise.
	* include/bits/fstream.tcc (basic_filebuf<>::xsgetn): Use setg
	instead of gbump.
	* include/std/sstream (basic_stringbuf<>::_M_pbump): Add.
	* include/bits/sstream.tcc (basic_stringbuf<>::seekoff,
	seekpos, _M_sync): Use setg, setp, and _M_pbump.
	* config/abi/pre/gnu.ver: Tweak.

From-SVN: r170579
2011-02-28 23:50:57 +00:00
Jonathan Wakely 18b08cb9eb regex.h (basic_regex::traits_type): Add typedef.
2011-02-17  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/regex.h (basic_regex::traits_type): Add typedef.
	(basic_regex::basic_regex(basic_regex&&)): Add noexcept.
	(basic_regex::operator=(basic_regex&&)): Likewise.
	(basic_regex::assign(basic_regex&&)): Likewise.
	(operator==(sub_match,...)): Implement DR 1181.
	(match_results::match_results(match_results&&)): Define.
	(match_results::operator=(const match_results&)): Fix parameter type.
	(match_results::operator=(match_results&&)): Define.

From-SVN: r170238
2011-02-17 02:39:16 +00:00
Jonathan Wakely 948ef71060 re PR libstdc++/47724 ([C++0x] Regex string anchors cause segfault)
2011-02-17  Jonathan Wakely  <jwakely.gcc@gmail.com>

	PR libstdc++/47724
	* include/bits/regex_compiler.h (_Scanner::_M_advance): Do not treat
	line anchors as metacharacters.
	* testsuite/28_regex/basic_regex/ctors/47724.cc: New.

From-SVN: r170236
2011-02-17 01:47:21 +00:00
Jonathan Wakely 8c53c3ae5a regex.h (match_results::format): Use char_traits.
2011-02-16  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/regex.h (match_results::format): Use char_traits.

From-SVN: r170225
2011-02-16 22:29:15 +00:00
Benjamin Kosnik 036e0d4f8f atomic: Remove atomic_address, uplift to N3225.
2011-02-16  Benjamin Kosnik  <bkoz@redhat.com>

	* include/std/atomic: Remove atomic_address, uplift to N3225.
	* include/bits/atomic_0.h: Same.
	* include/bits/atomic_2.h: Same.
	* include/bits/atomic_base.h: Same.
	* testsuite/29_atomics/atomic_address/*: Delete.

From-SVN: r170217
2011-02-16 19:01:51 +00:00
Jonathan Wakely bf6319b96a regex.h (sub_match::sub_match): Add.
2011-02-14  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/regex.h (sub_match::sub_match): Add.
	(match_results::ready): Add.
	(match_results::empty): Adjust.
	(match_results::length): Add missing dereference.
	(match_results::operator[],prefix,suffix): Add debug mode checks.
	(match_results::cend): Re-use end().
	(match_results::format): Adjust signatures.
	(operator==(match_results,match_results)): Implement.
	* include/bits/regex_compiler.h (_Scanner_base): Use constexpr.
	* include/bits/regex_constants.h (syntax_option_type): Likewise.
	* include/bits/regex_grep_matcher.h: Fix comment typo.
	(_Specialized_results::_Specialized_results): Simplify.
	* include/bits/regex_cursor.h: Fix comment typo.
	* include/bits/regex_nfa.h: Likewise.
	* testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc:
	Fix error code, remove xfail.
	* testsuite/28_regex/basic_regex/ctors/extended/
	string_range_01_02_03.cc: Likewise.

From-SVN: r170158
2011-02-14 23:35:22 +00:00
Jonathan Wakely 75eec5b611 regex_compiler.h: Remove unnecessary bind() calls.
2011-02-14  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/regex_compiler.h: Remove unnecessary bind() calls.
	* include/bits/regex_nfa.h: Remove unnecessary base classes.

From-SVN: r170124
2011-02-14 10:04:04 +00:00