]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/47433 (libstdc++ parallel mode calls std::swap explicitely)
authorJohannes Singler <singler@kit.edu>
Mon, 24 Jan 2011 17:07:35 +0000 (17:07 +0000)
committerJohannes Singler <singler@gcc.gnu.org>
Mon, 24 Jan 2011 17:07:35 +0000 (17:07 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/include/parallel/balanced_quicksort.h
libstdc++-v3/include/parallel/losertree.h
libstdc++-v3/include/parallel/partition.h

index e364bec617f83f07da680b9c264f52782d14ff50..361d766b2841b264d434f2de7baeccbc9321dda9 100644 (file)
@@ -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>
 
         PR libstdc++/47437
index 0a2813654b286317e89c3b44b1975c9653ba3325..441e7b44acaf5778d7d4a3df9c229116729f2b68 100644 (file)
@@ -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.
index a1c23e53324e088d7dbf496a6d268faa6ae4cacc..ccc930b29fb4137cd3bdcc174c0a0461178ef046 100644 (file)
@@ -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);
              }
          }
 
index 27b3871f41b0ea868e0e5c7213a9b93b94575ffb..c651321584e117ef8b4ab3a595a095d2a05bbac7 100644 (file)
@@ -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