Commit c3866869 by Jonathan Wakely Committed by Jonathan Wakely

re PR libstdc++/61909 (Small function optimization not applied to small objects)

	PR libstdc++/61909
	* include/std/functional (__is_location_invariant): Treat all
	trivially copyable types as location invariant.

From-SVN: r216047
parent bc2da0fc
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
* include/std/atomic (atomic): Add assertion for trivially copyable. * include/std/atomic (atomic): Add assertion for trivially copyable.
* testsuite/29_atomics/atomic/60695.cc: Adjust line number. * testsuite/29_atomics/atomic/60695.cc: Adjust line number.
PR libstdc++/61909
* include/std/functional (__is_location_invariant): Treat all
trivially copyable types as location invariant.
2014-10-09 Ville Voutilainen <ville.voutilainen@gmail.com> 2014-10-09 Ville Voutilainen <ville.voutilainen@gmail.com>
PR libstdc++/60132 PR libstdc++/60132
......
...@@ -1743,11 +1743,12 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) ...@@ -1743,11 +1743,12 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type)
/** /**
* Trait identifying "location-invariant" types, meaning that the * Trait identifying "location-invariant" types, meaning that the
* address of the object (or any of its members) will not escape. * address of the object (or any of its members) will not escape.
* Also implies a trivial copy constructor and assignment operator. * Trivially copyable types are location-invariant and users can
* specialize this trait for other types.
*/ */
template<typename _Tp> template<typename _Tp>
struct __is_location_invariant struct __is_location_invariant
: __or_<is_pointer<_Tp>, is_member_pointer<_Tp>>::type : is_trivially_copyable<_Tp>::type
{ }; { };
class _Undefined_class; class _Undefined_class;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment