From: Paolo Carlini Date: Tue, 13 Nov 2007 11:35:56 +0000 (+0000) Subject: deque.tcc (deque<>::_M_push_back_aux, [...]): Do not copy unnecessarily to __t_copy. X-Git-Tag: releases/gcc-4.3.0~1540 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b4d9ec93d647023b6570edd3cc3c81fa7216c060;p=thirdparty%2Fgcc.git deque.tcc (deque<>::_M_push_back_aux, [...]): Do not copy unnecessarily to __t_copy. 2007-11-13 Paolo Carlini * include/bits/deque.tcc (deque<>::_M_push_back_aux, _M_push_front_aux): Do not copy unnecessarily to __t_copy. From-SVN: r130136 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 826b60232114..d4fb6715c109 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2007-11-13 Paolo Carlini + + * 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 Paolo Carlini diff --git a/libstdc++-v3/include/bits/deque.tcc b/libstdc++-v3/include/bits/deque.tcc index 25544e94f2cd..7267accf41e4 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(...) {