aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2007-11-13 11:35:56 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2007-11-13 11:35:56 +0000
commitb4d9ec93d647023b6570edd3cc3c81fa7216c060 (patch)
tree8842f0d90d5b9e5642ed49804f54315ce7586c3a /libstdc++-v3
parent983a6f8dd33096a5de1e48c70fc860cca41d57d8 (diff)
downloadgcc-b4d9ec93d647023b6570edd3cc3c81fa7216c060.zip
gcc-b4d9ec93d647023b6570edd3cc3c81fa7216c060.tar.gz
gcc-b4d9ec93d647023b6570edd3cc3c81fa7216c060.tar.bz2
deque.tcc (deque<>::_M_push_back_aux, [...]): Do not copy unnecessarily to __t_copy.
2007-11-13 Paolo Carlini <pcarlini@suse.de> * include/bits/deque.tcc (deque<>::_M_push_back_aux, _M_push_front_aux): Do not copy unnecessarily to __t_copy. From-SVN: r130136
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/deque.tcc22
2 files changed, 17 insertions, 10 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 826b602..d4fb671 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-13 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/deque.tcc (deque<>::_M_push_back_aux,
+ _M_push_front_aux): Do not copy unnecessarily to __t_copy.
+
2007-11-12 Chris Jefferson <chris@bubblescope.net>
Paolo Carlini <pcarlini@suse.de>
diff --git a/libstdc++-v3/include/bits/deque.tcc b/libstdc++-v3/include/bits/deque.tcc
index 25544e9..7267acc 100644
--- a/libstdc++-v3/include/bits/deque.tcc
+++ b/libstdc++-v3/include/bits/deque.tcc
@@ -350,21 +350,22 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
void
deque<_Tp, _Alloc>::
_M_push_back_aux(_Args&&... __args)
- {
- value_type __t_copy(std::forward<_Args>(__args)...);
#else
void
deque<_Tp, _Alloc>::
_M_push_back_aux(const value_type& __t)
- {
- value_type __t_copy = __t;
#endif
+ {
_M_reserve_map_at_back();
*(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node();
try
{
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
this->_M_impl.construct(this->_M_impl._M_finish._M_cur,
- _GLIBCXX_MOVE(__t_copy));
+ std::forward<_Args>(__args)...);
+#else
+ this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t);
+#endif
this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node
+ 1);
this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first;
@@ -383,15 +384,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
void
deque<_Tp, _Alloc>::
_M_push_front_aux(_Args&&... __args)
- {
- value_type __t_copy(std::forward<_Args>(__args)...);
#else
void
deque<_Tp, _Alloc>::
_M_push_front_aux(const value_type& __t)
- {
- value_type __t_copy = __t;
#endif
+ {
_M_reserve_map_at_front();
*(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node();
try
@@ -399,8 +397,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node
- 1);
this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
this->_M_impl.construct(this->_M_impl._M_start._M_cur,
- _GLIBCXX_MOVE(__t_copy));
+ std::forward<_Args>(__args)...);
+#else
+ this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t);
+#endif
}
catch(...)
{