From 3611e1767daf889bef7de7e867dacfa14527146e Mon Sep 17 00:00:00 2001
From: Johannes Singler <singler@ira.uka.de>
Date: Thu, 5 Jun 2008 15:47:17 +0000
Subject: [PATCH] random_shuffle.h: (parallel_random_shuffle_drs) Get the
 actual number of threads after entering...

2008-06-05  Johannes Singler  <singler@ira.uka.de>

        * include/parallel/random_shuffle.h:
        (parallel_random_shuffle_drs) Get the actual number of
        threads after entering the parallel region. Indentation.
        * include/parallel/algo.h: (random_shuffle(begin, end))
        Add namespace qualification to avoid ambiguity.

From-SVN: r136406
---
 libstdc++-v3/ChangeLog                         | 8 ++++++++
 libstdc++-v3/include/parallel/algo.h           | 2 +-
 libstdc++-v3/include/parallel/random_shuffle.h | 7 ++++---
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d06e303f343e..0f2e56c57a78 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2008-06-05  Johannes Singler  <singler@ira.uka.de>
+
+        * include/parallel/random_shuffle.h:
+        (parallel_random_shuffle_drs) Get the actual number of
+        threads after entering the parallel region. Indentation.
+        * include/parallel/algo.h: (random_shuffle(begin, end))
+        Add namespace qualification to avoid ambiguity.
+
 2008-06-04  Benjamin Kosnik  <bkoz@redhat.com>
 
 	* include/ext/pb_ds/assoc_container.hpp: Change allocator typedef
diff --git a/libstdc++-v3/include/parallel/algo.h b/libstdc++-v3/include/parallel/algo.h
index 397d7cbcb4f9..4aa4d8af47f6 100644
--- a/libstdc++-v3/include/parallel/algo.h
+++ b/libstdc++-v3/include/parallel/algo.h
@@ -1649,7 +1649,7 @@ namespace __parallel
     {
       c_rand_number<> r;
       // Parallelization still possible.
-      random_shuffle(begin, end, r);
+      __gnu_parallel::random_shuffle(begin, end, r);
     }
 
   // Parallel algorithm for random access iterators.
diff --git a/libstdc++-v3/include/parallel/random_shuffle.h b/libstdc++-v3/include/parallel/random_shuffle.h
index 75d9e18d23af..1f7cc10742d3 100644
--- a/libstdc++-v3/include/parallel/random_shuffle.h
+++ b/libstdc++-v3/include/parallel/random_shuffle.h
@@ -333,6 +333,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator>
 
 #   pragma omp parallel num_threads(num_threads)
       {
+        thread_index_t num_threads = omp_get_num_threads();
 #       pragma omp single
           {
             pus = new DRSSorterPU<RandomAccessIterator, random_number>
@@ -375,9 +376,9 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator>
               }
             starts[num_threads] = start;
           } //single
-      // Now shuffle in parallel.
-      parallel_random_shuffle_drs_pu(pus);
-    }
+        // Now shuffle in parallel.
+        parallel_random_shuffle_drs_pu(pus);
+      }  // parallel
 
     delete[] starts;
     delete[] sd.bin_proc;
-- 
GitLab