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
This commit is contained in:
parent
0d8d6c874e
commit
f7d601a5bd
2 changed files with 13 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
|||
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>
|
||||
|
||||
Revert.
|
||||
|
|
|
@ -375,9 +375,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
|||
static _Tp*
|
||||
__copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
|
||||
{
|
||||
__builtin_memmove(__result, __first,
|
||||
sizeof(_Tp) * (__last - __first));
|
||||
return __result + (__last - __first);
|
||||
const ptrdiff_t _Num = __last - __first;
|
||||
if (_Num)
|
||||
__builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
|
||||
return __result + _Num;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -572,7 +573,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
|||
__copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
|
||||
{
|
||||
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;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue