Commit c38b84d8 by Johannes Singler Committed by Johannes Singler

re PR libstdc++/37470 (parallel/base.h log2 conflicts with math.h)

2008-09-19  Johannes Singler  <singler@ira.uka.de>

        PR libstdc++/37470
        * include/parallel/base.h: Rename log2 to __log2.
          (__log2) Avoid infinite loop for n <= 0, return 0.
        * include/parallel/losertree.h: Rename log2 to __log2.
        * include/parallel/multiseq_selection.h: Likewise.
        * include/parallel/random_shuffle.h: Likewise.

From-SVN: r140490
parent 6a7a462c
2008-09-19 Johannes Singler <singler@ira.uka.de>
PR libstdc++/37470
* include/parallel/base.h: Rename log2 to __log2.
(__log2) Avoid infinite loop for n <= 0, return 0.
* include/parallel/losertree.h: Rename log2 to __log2.
* include/parallel/multiseq_selection.h: Likewise.
* include/parallel/random_shuffle.h: Likewise.
2008-09-18 Paolo Carlini <paolo.carlini@oracle.com> 2008-09-18 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/shared_ptr.h (__shared_count<>:: * include/bits/shared_ptr.h (__shared_count<>::
......
...@@ -105,14 +105,14 @@ namespace __gnu_parallel ...@@ -105,14 +105,14 @@ namespace __gnu_parallel
/** @brief Calculates the rounded-down logarithm of @c n for base 2. /** @brief Calculates the rounded-down logarithm of @c n for base 2.
* @param n Argument. * @param n Argument.
* @return Returns 0 for argument 0. * @return Returns 0 for any argument <1.
*/ */
template<typename Size> template<typename Size>
inline Size inline Size
log2(Size n) __log2(Size n)
{ {
Size k; Size k;
for (k = 0; n != 1; n >>= 1) for (k = 0; n > 1; n >>= 1)
++k; ++k;
return k; return k;
} }
......
...@@ -105,7 +105,7 @@ public: ...@@ -105,7 +105,7 @@ public:
ik = _k; ik = _k;
// Compute log_2{k} for the Loser Tree // Compute log_2{k} for the Loser Tree
_M_log_k = log2(ik - 1) + 1; _M_log_k = __log2(ik - 1) + 1;
// Next greater power of 2. // Next greater power of 2.
k = 1 << _M_log_k; k = 1 << _M_log_k;
...@@ -368,7 +368,7 @@ public: ...@@ -368,7 +368,7 @@ public:
ik = _k; ik = _k;
// Next greater power of 2. // Next greater power of 2.
k = 1 << (log2(ik - 1) + 1); k = 1 << (__log2(ik - 1) + 1);
offset = k; offset = k;
losers = new Loser[k * 2]; losers = new Loser[k * 2];
for (unsigned int i = ik - 1; i < k; i++) for (unsigned int i = ik - 1; i < k; i++)
...@@ -579,7 +579,7 @@ public: ...@@ -579,7 +579,7 @@ public:
ik = _k; ik = _k;
// Next greater power of 2. // Next greater power of 2.
k = 1 << (log2(ik - 1) + 1); k = 1 << (__log2(ik - 1) + 1);
offset = k; offset = k;
// Avoid default-constructing losers[].key // Avoid default-constructing losers[].key
losers = static_cast<Loser*>(::operator new(2 * k * sizeof(Loser))); losers = static_cast<Loser*>(::operator new(2 * k * sizeof(Loser)));
...@@ -815,7 +815,7 @@ public: ...@@ -815,7 +815,7 @@ public:
ik = _k; ik = _k;
// Next greater power of 2. // Next greater power of 2.
k = 1 << (log2(ik - 1) + 1); k = 1 << (__log2(ik - 1) + 1);
offset = k; offset = k;
// Avoid default-constructing losers[].key // Avoid default-constructing losers[].key
losers = new Loser[2 * k]; losers = new Loser[2 * k];
......
...@@ -183,7 +183,7 @@ namespace __gnu_parallel ...@@ -183,7 +183,7 @@ namespace __gnu_parallel
nmax = std::max(nmax, ns[i]); nmax = std::max(nmax, ns[i]);
} }
r = log2(nmax) + 1; r = __log2(nmax) + 1;
// Pad all lists to this length, at least as long as any ns[i], // Pad all lists to this length, at least as long as any ns[i],
// equality iff nmax = 2^k - 1. // equality iff nmax = 2^k - 1.
...@@ -429,7 +429,7 @@ namespace __gnu_parallel ...@@ -429,7 +429,7 @@ namespace __gnu_parallel
nmax = std::max(nmax, ns[i]); nmax = std::max(nmax, ns[i]);
} }
r = log2(nmax) + 1; r = __log2(nmax) + 1;
// Pad all lists to this length, at least as long as any ns[i], // Pad all lists to this length, at least as long as any ns[i],
// equality iff nmax = 2^k - 1 // equality iff nmax = 2^k - 1
......
...@@ -249,7 +249,7 @@ template<typename T> ...@@ -249,7 +249,7 @@ template<typename T>
if (x <= 1) if (x <= 1)
return 1; return 1;
else else
return (T)1 << (log2(x - 1) + 1); return (T)1 << (__log2(x - 1) + 1);
} }
/** @brief Main parallel random shuffle step. /** @brief Main parallel random shuffle step.
...@@ -352,7 +352,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator> ...@@ -352,7 +352,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator>
starts = sd.starts = new difference_type[num_threads + 1]; starts = sd.starts = new difference_type[num_threads + 1];
int bin_cursor = 0; int bin_cursor = 0;
sd.num_bins = num_bins; sd.num_bins = num_bins;
sd.num_bits = log2(num_bins); sd.num_bits = __log2(num_bins);
difference_type chunk_length = n / num_threads, difference_type chunk_length = n / num_threads,
split = n % num_threads, start = 0; split = n % num_threads, start = 0;
...@@ -450,7 +450,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator> ...@@ -450,7 +450,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator>
} }
#endif #endif
int num_bits = log2(num_bins); int num_bits = __log2(num_bins);
if (num_bins > 1) if (num_bins > 1)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment