Commit f7d601a5 by Paolo Carlini Committed by Paolo Carlini

re PR libstdc++/41267 (vector<>::resize() from an empty vector calls memmove for…

re PR libstdc++/41267 (vector<>::resize() from an empty vector calls memmove for 0 bytes (twice), wasting a lot of cpu time in a production PowerDNS)

2009-09-06  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/41267
	* include/bits/stl_algobase.h (__copy_move::__copy_m,
	__copy_move_backward::__copy_move_b): Don't call __builtin_memmove
	with a null third argument.

From-SVN: r151459
parent 0d8d6c87
2009-09-06 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/41267
* include/bits/stl_algobase.h (__copy_move::__copy_m,
__copy_move_backward::__copy_move_b): Don't call __builtin_memmove
with a null third argument.
2009-09-04 Benjamin Kosnik <bkoz@redhat.com> 2009-09-04 Benjamin Kosnik <bkoz@redhat.com>
Revert. Revert.
......
...@@ -375,9 +375,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -375,9 +375,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
static _Tp* static _Tp*
__copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
{ {
__builtin_memmove(__result, __first, const ptrdiff_t _Num = __last - __first;
sizeof(_Tp) * (__last - __first)); if (_Num)
return __result + (__last - __first); __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
return __result + _Num;
} }
}; };
...@@ -572,7 +573,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -572,7 +573,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
{ {
const ptrdiff_t _Num = __last - __first; const ptrdiff_t _Num = __last - __first;
__builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); if (_Num)
__builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
return __result - _Num; return __result - _Num;
} }
}; };
......
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