re PR libstdc++/47433 (libstdc++ parallel mode calls std::swap explicitely)
2011-01-24 Johannes Singler <singler@kit.edu> PR libstdc++/47433 * include/parallel/losertree.h (_LoserTree<>::__delete_min_insert): Do not qualify swap with std:: for value type, but include a using directive instead. (_LoserTreeUnguarded<>::__delete_min_insert): Likewise. * include/parallel/balanced_quicksort.h (__qsb_divide): Use std::iter_swap instead of std::swap. (__qsb_local_sort_with_helping): Likewise. * include/parallel/partition.h (__parallel_partition): Likewise. (__parallel_nth_element): Likewise. From-SVN: r169171
This commit is contained in:
parent
a40d79d7af
commit
fc722a0ea4
|
@ -1,3 +1,17 @@
|
||||||
|
2011-01-24 Johannes Singler <singler@kit.edu>
|
||||||
|
|
||||||
|
PR libstdc++/47433
|
||||||
|
* include/parallel/losertree.h
|
||||||
|
(_LoserTree<>::__delete_min_insert):
|
||||||
|
Do not qualify swap with std:: for value type,
|
||||||
|
but include a using directive instead.
|
||||||
|
(_LoserTreeUnguarded<>::__delete_min_insert): Likewise.
|
||||||
|
* include/parallel/balanced_quicksort.h (__qsb_divide):
|
||||||
|
Use std::iter_swap instead of std::swap.
|
||||||
|
(__qsb_local_sort_with_helping): Likewise.
|
||||||
|
* include/parallel/partition.h (__parallel_partition):
|
||||||
|
Likewise. (__parallel_nth_element): Likewise.
|
||||||
|
|
||||||
2011-01-24 Johannes Singler <singler@kit.edu>
|
2011-01-24 Johannes Singler <singler@kit.edu>
|
||||||
|
|
||||||
PR libstdc++/47437
|
PR libstdc++/47437
|
||||||
|
|
|
@ -132,7 +132,7 @@ namespace __gnu_parallel
|
||||||
|
|
||||||
// Swap pivot value to end.
|
// Swap pivot value to end.
|
||||||
if (__pivot_pos != (__end - 1))
|
if (__pivot_pos != (__end - 1))
|
||||||
std::swap(*__pivot_pos, *(__end - 1));
|
std::iter_swap(__pivot_pos, __end - 1);
|
||||||
__pivot_pos = __end - 1;
|
__pivot_pos = __end - 1;
|
||||||
|
|
||||||
__gnu_parallel::__binder2nd<_Compare, _ValueType, _ValueType, bool>
|
__gnu_parallel::__binder2nd<_Compare, _ValueType, _ValueType, bool>
|
||||||
|
@ -144,7 +144,7 @@ namespace __gnu_parallel
|
||||||
__num_threads);
|
__num_threads);
|
||||||
|
|
||||||
// Swap back pivot to middle.
|
// Swap back pivot to middle.
|
||||||
std::swap(*(__begin + __split_pos), *__pivot_pos);
|
std::iter_swap(__begin + __split_pos, __pivot_pos);
|
||||||
__pivot_pos = __begin + __split_pos;
|
__pivot_pos = __begin + __split_pos;
|
||||||
|
|
||||||
#if _GLIBCXX_ASSERTIONS
|
#if _GLIBCXX_ASSERTIONS
|
||||||
|
@ -284,7 +284,7 @@ namespace __gnu_parallel
|
||||||
|
|
||||||
// Swap __pivot_pos value to end.
|
// Swap __pivot_pos value to end.
|
||||||
if (__pivot_pos != (__end - 1))
|
if (__pivot_pos != (__end - 1))
|
||||||
std::swap(*__pivot_pos, *(__end - 1));
|
std::iter_swap(__pivot_pos, __end - 1);
|
||||||
__pivot_pos = __end - 1;
|
__pivot_pos = __end - 1;
|
||||||
|
|
||||||
__gnu_parallel::__binder2nd
|
__gnu_parallel::__binder2nd
|
||||||
|
@ -303,7 +303,7 @@ namespace __gnu_parallel
|
||||||
#endif
|
#endif
|
||||||
// Swap pivot back to middle.
|
// Swap pivot back to middle.
|
||||||
if (__split_pos1 != __pivot_pos)
|
if (__split_pos1 != __pivot_pos)
|
||||||
std::swap(*__split_pos1, *__pivot_pos);
|
std::iter_swap(__split_pos1, __pivot_pos);
|
||||||
__pivot_pos = __split_pos1;
|
__pivot_pos = __split_pos1;
|
||||||
|
|
||||||
// In case all elements are equal, __split_pos1 == 0.
|
// In case all elements are equal, __split_pos1 == 0.
|
||||||
|
|
|
@ -216,6 +216,7 @@ namespace __gnu_parallel
|
||||||
void
|
void
|
||||||
__delete_min_insert(_Tp __key, bool __sup)
|
__delete_min_insert(_Tp __key, bool __sup)
|
||||||
{
|
{
|
||||||
|
using std::swap;
|
||||||
#if _GLIBCXX_ASSERTIONS
|
#if _GLIBCXX_ASSERTIONS
|
||||||
// no dummy sequence can ever be at the top!
|
// no dummy sequence can ever be at the top!
|
||||||
_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
|
_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
|
||||||
|
@ -236,7 +237,7 @@ namespace __gnu_parallel
|
||||||
// The other one is smaller.
|
// The other one is smaller.
|
||||||
std::swap(_M_losers[__pos]._M_sup, __sup);
|
std::swap(_M_losers[__pos]._M_sup, __sup);
|
||||||
std::swap(_M_losers[__pos]._M_source, __source);
|
std::swap(_M_losers[__pos]._M_source, __source);
|
||||||
std::swap(_M_losers[__pos]._M_key, __key);
|
swap(_M_losers[__pos]._M_key, __key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,6 +317,7 @@ namespace __gnu_parallel
|
||||||
void
|
void
|
||||||
__delete_min_insert(_Tp __key, bool __sup)
|
__delete_min_insert(_Tp __key, bool __sup)
|
||||||
{
|
{
|
||||||
|
using std::swap;
|
||||||
#if _GLIBCXX_ASSERTIONS
|
#if _GLIBCXX_ASSERTIONS
|
||||||
// no dummy sequence can ever be at the top!
|
// no dummy sequence can ever be at the top!
|
||||||
_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
|
_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
|
||||||
|
@ -332,7 +334,7 @@ namespace __gnu_parallel
|
||||||
// The other one is smaller.
|
// The other one is smaller.
|
||||||
std::swap(_M_losers[__pos]._M_sup, __sup);
|
std::swap(_M_losers[__pos]._M_sup, __sup);
|
||||||
std::swap(_M_losers[__pos]._M_source, __source);
|
std::swap(_M_losers[__pos]._M_source, __source);
|
||||||
std::swap(_M_losers[__pos]._M_key, __key);
|
swap(_M_losers[__pos]._M_key, __key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -679,6 +681,7 @@ namespace __gnu_parallel
|
||||||
void
|
void
|
||||||
__delete_min_insert(_Tp __key, bool)
|
__delete_min_insert(_Tp __key, bool)
|
||||||
{
|
{
|
||||||
|
using std::swap;
|
||||||
#if _GLIBCXX_ASSERTIONS
|
#if _GLIBCXX_ASSERTIONS
|
||||||
// no dummy sequence can ever be at the top!
|
// no dummy sequence can ever be at the top!
|
||||||
_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
|
_GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1);
|
||||||
|
@ -695,7 +698,7 @@ namespace __gnu_parallel
|
||||||
{
|
{
|
||||||
// The other one is smaller.
|
// The other one is smaller.
|
||||||
std::swap(_M_losers[__pos]._M_source, __source);
|
std::swap(_M_losers[__pos]._M_source, __source);
|
||||||
std::swap(_M_losers[__pos]._M_key, __key);
|
swap(_M_losers[__pos]._M_key, __key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -786,7 +789,7 @@ namespace __gnu_parallel
|
||||||
{
|
{
|
||||||
// The other one is smaller.
|
// The other one is smaller.
|
||||||
std::swap(_M_losers[__pos]._M_source, __source);
|
std::swap(_M_losers[__pos]._M_source, __source);
|
||||||
std::swap(_M_losers[__pos]._M_key, __key);
|
swap(_M_losers[__pos]._M_key, __key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,8 +178,8 @@ namespace __gnu_parallel
|
||||||
// Fetch new chunk(__s).
|
// Fetch new chunk(__s).
|
||||||
break;
|
break;
|
||||||
|
|
||||||
std::swap(__begin[__thread_left],
|
std::iter_swap(__begin + __thread_left,
|
||||||
__begin[__thread_right]);
|
__begin + __thread_right);
|
||||||
++__thread_left;
|
++__thread_left;
|
||||||
--__thread_right;
|
--__thread_right;
|
||||||
}
|
}
|
||||||
|
@ -301,7 +301,7 @@ namespace __gnu_parallel
|
||||||
|
|
||||||
if (__final_left == __final_right)
|
if (__final_left == __final_right)
|
||||||
break;
|
break;
|
||||||
std::swap(__begin[__final_left], __begin[__final_right]);
|
std::iter_swap(__begin + __final_left, __begin + __final_right);
|
||||||
++__final_left;
|
++__final_left;
|
||||||
--__final_right;
|
--__final_right;
|
||||||
}
|
}
|
||||||
|
@ -354,7 +354,7 @@ namespace __gnu_parallel
|
||||||
|
|
||||||
// Swap __pivot_pos value to end.
|
// Swap __pivot_pos value to end.
|
||||||
if (__pivot_pos != (__end - 1))
|
if (__pivot_pos != (__end - 1))
|
||||||
std::swap(*__pivot_pos, *(__end - 1));
|
std::iter_swap(__pivot_pos, __end - 1);
|
||||||
__pivot_pos = __end - 1;
|
__pivot_pos = __end - 1;
|
||||||
|
|
||||||
// _Compare must have first_value_type, second_value_type,
|
// _Compare must have first_value_type, second_value_type,
|
||||||
|
@ -376,7 +376,7 @@ namespace __gnu_parallel
|
||||||
|
|
||||||
// Swap pivot back to middle.
|
// Swap pivot back to middle.
|
||||||
if (__split_pos1 != __pivot_pos)
|
if (__split_pos1 != __pivot_pos)
|
||||||
std::swap(*__split_pos1, *__pivot_pos);
|
std::iter_swap(__split_pos1, __pivot_pos);
|
||||||
__pivot_pos = __split_pos1;
|
__pivot_pos = __split_pos1;
|
||||||
|
|
||||||
// In case all elements are equal, __split_pos1 == 0
|
// In case all elements are equal, __split_pos1 == 0
|
||||||
|
|
Loading…
Reference in New Issue