diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e364bec617f..361d766b284 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2011-01-24 Johannes Singler + + 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 PR libstdc++/47437 diff --git a/libstdc++-v3/include/parallel/balanced_quicksort.h b/libstdc++-v3/include/parallel/balanced_quicksort.h index 0a2813654b2..441e7b44aca 100644 --- a/libstdc++-v3/include/parallel/balanced_quicksort.h +++ b/libstdc++-v3/include/parallel/balanced_quicksort.h @@ -132,7 +132,7 @@ namespace __gnu_parallel // Swap pivot value to end. if (__pivot_pos != (__end - 1)) - std::swap(*__pivot_pos, *(__end - 1)); + std::iter_swap(__pivot_pos, __end - 1); __pivot_pos = __end - 1; __gnu_parallel::__binder2nd<_Compare, _ValueType, _ValueType, bool> @@ -144,7 +144,7 @@ namespace __gnu_parallel __num_threads); // 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; #if _GLIBCXX_ASSERTIONS @@ -284,7 +284,7 @@ namespace __gnu_parallel // Swap __pivot_pos value to end. if (__pivot_pos != (__end - 1)) - std::swap(*__pivot_pos, *(__end - 1)); + std::iter_swap(__pivot_pos, __end - 1); __pivot_pos = __end - 1; __gnu_parallel::__binder2nd @@ -303,7 +303,7 @@ namespace __gnu_parallel #endif // Swap pivot back to middle. if (__split_pos1 != __pivot_pos) - std::swap(*__split_pos1, *__pivot_pos); + std::iter_swap(__split_pos1, __pivot_pos); __pivot_pos = __split_pos1; // In case all elements are equal, __split_pos1 == 0. diff --git a/libstdc++-v3/include/parallel/losertree.h b/libstdc++-v3/include/parallel/losertree.h index a1c23e53324..ccc930b29fb 100644 --- a/libstdc++-v3/include/parallel/losertree.h +++ b/libstdc++-v3/include/parallel/losertree.h @@ -216,6 +216,7 @@ namespace __gnu_parallel void __delete_min_insert(_Tp __key, bool __sup) { + using std::swap; #if _GLIBCXX_ASSERTIONS // no dummy sequence can ever be at the top! _GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1); @@ -236,7 +237,7 @@ namespace __gnu_parallel // The other one is smaller. std::swap(_M_losers[__pos]._M_sup, __sup); 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 __delete_min_insert(_Tp __key, bool __sup) { + using std::swap; #if _GLIBCXX_ASSERTIONS // no dummy sequence can ever be at the top! _GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1); @@ -332,7 +334,7 @@ namespace __gnu_parallel // The other one is smaller. std::swap(_M_losers[__pos]._M_sup, __sup); 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 __delete_min_insert(_Tp __key, bool) { + using std::swap; #if _GLIBCXX_ASSERTIONS // no dummy sequence can ever be at the top! _GLIBCXX_PARALLEL_ASSERT(_M_losers[0]._M_source != -1); @@ -695,7 +698,7 @@ namespace __gnu_parallel { // The other one is smaller. 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. std::swap(_M_losers[__pos]._M_source, __source); - std::swap(_M_losers[__pos]._M_key, __key); + swap(_M_losers[__pos]._M_key, __key); } } diff --git a/libstdc++-v3/include/parallel/partition.h b/libstdc++-v3/include/parallel/partition.h index 27b3871f41b..c651321584e 100644 --- a/libstdc++-v3/include/parallel/partition.h +++ b/libstdc++-v3/include/parallel/partition.h @@ -178,8 +178,8 @@ namespace __gnu_parallel // Fetch new chunk(__s). break; - std::swap(__begin[__thread_left], - __begin[__thread_right]); + std::iter_swap(__begin + __thread_left, + __begin + __thread_right); ++__thread_left; --__thread_right; } @@ -301,7 +301,7 @@ namespace __gnu_parallel if (__final_left == __final_right) break; - std::swap(__begin[__final_left], __begin[__final_right]); + std::iter_swap(__begin + __final_left, __begin + __final_right); ++__final_left; --__final_right; } @@ -354,7 +354,7 @@ namespace __gnu_parallel // Swap __pivot_pos value to end. if (__pivot_pos != (__end - 1)) - std::swap(*__pivot_pos, *(__end - 1)); + std::iter_swap(__pivot_pos, __end - 1); __pivot_pos = __end - 1; // _Compare must have first_value_type, second_value_type, @@ -376,7 +376,7 @@ namespace __gnu_parallel // Swap pivot back to middle. if (__split_pos1 != __pivot_pos) - std::swap(*__split_pos1, *__pivot_pos); + std::iter_swap(__split_pos1, __pivot_pos); __pivot_pos = __split_pos1; // In case all elements are equal, __split_pos1 == 0