summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-26 13:05:39 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-26 13:05:39 +0000
commit8da090de25c137d37dd64115b1d2fa26f02577d7 (patch)
tree74bf293401a0a1429a8339ebe33c9c46166e95f7 /libstdc++-v3
parent2025948bd01df153e9f3c16bd1f70ab97c9327a1 (diff)
downloadgcc-8da090de25c137d37dd64115b1d2fa26f02577d7.tar.gz
2011-01-26 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 169285 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@169287 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog17
-rw-r--r--libstdc++-v3/include/parallel/algo.h14
-rw-r--r--libstdc++-v3/include/parallel/algobase.h6
-rw-r--r--libstdc++-v3/include/parallel/numeric6
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc54
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc54
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc11
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc11
8 files changed, 159 insertions, 14 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index f6a742211be..b755b4336b7 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,20 @@
+2011-01-26 Johannes Singler <singler@kit.edu>
+
+ * include/parallel/numeric (inner_product, partial_sum):
+ Qualify subsequent call with __gnu_parallel instead of
+ _GLIBCXX_STD_P to reenable parallel execution without ambiguity.
+ * include/parallel/algobase.h (equal): Likewise.
+ * include/parallel/algo.h (find_first_of, search_n, merge,
+ nth_element, partial_sort, max_element, min_element): Likewise.
+ * testsuite/25_algorithms/headers/algorithm/
+ parallel_algorithm_mixed1.cc (main): Add respective test cases.
+ * testsuite/25_algorithms/headers/algorithm/
+ parallel_algorithm_mixed2.cc (main): Likewise.
+ * testsuite/26_numerics/headers/numeric/
+ parallel_numeric_mixed1.cc (main): Likewise.
+ * testsuite/26_numerics/headers/numeric/
+ parallel_numeric_mixed2.cc (main): Likewise.
+
2011-01-24 Graham Reed <greed@pobox.com>
PR libstdc++/47387
diff --git a/libstdc++-v3/include/parallel/algo.h b/libstdc++-v3/include/parallel/algo.h
index cc2fc679bcf..a24e557ad90 100644
--- a/libstdc++-v3/include/parallel/algo.h
+++ b/libstdc++-v3/include/parallel/algo.h
@@ -292,7 +292,7 @@ namespace __parallel
typedef typename _IIterTraits::value_type _IValueType;
typedef typename iteratorf_traits::value_type _FValueType;
- return _GLIBCXX_STD_P::find_first_of(__begin1, __end1, __begin2, __end2,
+ return __gnu_parallel::find_first_of(__begin1, __end1, __begin2, __end2,
__gnu_parallel::_EqualTo<_IValueType, _FValueType>());
}
@@ -1160,7 +1160,7 @@ namespace __parallel
const _Tp& __val)
{
typedef typename iterator_traits<_FIterator>::value_type _ValueType;
- return _GLIBCXX_STD_P::search_n(__begin, __end, __count, __val,
+ return __gnu_parallel::search_n(__begin, __end, __count, __val,
__gnu_parallel::_EqualTo<_ValueType, _Tp>());
}
@@ -2086,7 +2086,7 @@ namespace __parallel
typedef typename _Iterator1Traits::value_type _ValueType1;
typedef typename _Iterator2Traits::value_type _ValueType2;
- return _GLIBCXX_STD_P::merge(__begin1, __end1, __begin2, __end2,
+ return __gnu_parallel::merge(__begin1, __end1, __begin2, __end2,
__result, __gnu_parallel::_Less<_ValueType1, _ValueType2>());
}
@@ -2128,7 +2128,7 @@ namespace __parallel
{
typedef iterator_traits<_RAIter> _TraitsType;
typedef typename _TraitsType::value_type _ValueType;
- _GLIBCXX_STD_P::nth_element(__begin, __nth, __end,
+ __gnu_parallel::nth_element(__begin, __nth, __end,
std::less<_ValueType>());
}
@@ -2171,7 +2171,7 @@ namespace __parallel
{
typedef iterator_traits<_RAIter> _TraitsType;
typedef typename _TraitsType::value_type _ValueType;
- _GLIBCXX_STD_P::partial_sort(__begin, __middle, __end,
+ __gnu_parallel::partial_sort(__begin, __middle, __end,
std::less<_ValueType>());
}
@@ -2241,7 +2241,7 @@ namespace __parallel
max_element(_FIterator __begin, _FIterator __end)
{
typedef typename iterator_traits<_FIterator>::value_type _ValueType;
- return _GLIBCXX_STD_P::max_element(__begin, __end,
+ return __gnu_parallel::max_element(__begin, __end,
std::less<_ValueType>());
}
@@ -2333,7 +2333,7 @@ namespace __parallel
min_element(_FIterator __begin, _FIterator __end)
{
typedef typename iterator_traits<_FIterator>::value_type _ValueType;
- return _GLIBCXX_STD_P::min_element(__begin, __end,
+ return __gnu_parallel::min_element(__begin, __end,
std::less<_ValueType>());
}
diff --git a/libstdc++-v3/include/parallel/algobase.h b/libstdc++-v3/include/parallel/algobase.h
index 754c2814574..a6fd6cd4331 100644
--- a/libstdc++-v3/include/parallel/algobase.h
+++ b/libstdc++-v3/include/parallel/algobase.h
@@ -142,7 +142,8 @@ namespace __parallel
inline bool
equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2)
{
- return mismatch(__begin1, __end1, __begin2).first == __end1;
+ return __gnu_parallel::mismatch(__begin1, __end1, __begin2).first
+ == __end1;
}
// Public interface
@@ -151,7 +152,8 @@ namespace __parallel
equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
_Predicate __pred)
{
- return mismatch(__begin1, __end1, __begin2, __pred).first == __end1;
+ return __gnu_parallel::mismatch(__begin1, __end1, __begin2, __pred).first
+ == __end1;
}
// Sequential fallback
diff --git a/libstdc++-v3/include/parallel/numeric b/libstdc++-v3/include/parallel/numeric
index fb1fce257c4..b779aae8d6d 100644
--- a/libstdc++-v3/include/parallel/numeric
+++ b/libstdc++-v3/include/parallel/numeric
@@ -283,7 +283,7 @@ namespace __parallel
typedef typename
__gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
_MultipliesResultType;
- return _GLIBCXX_STD_P::inner_product(__first1, __last1, __first2, __init,
+ return __gnu_parallel::inner_product(__first1, __last1, __first2, __init,
__gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),
__gnu_parallel::
_Multiplies<_ValueType1, _ValueType2>(),
@@ -303,7 +303,7 @@ namespace __parallel
typedef typename
__gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
_MultipliesResultType;
- return _GLIBCXX_STD_P::inner_product(__first1, __last1, __first2, __init,
+ return __gnu_parallel::inner_product(__first1, __last1, __first2, __init,
__gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),
__gnu_parallel::
_Multiplies<_ValueType1, _ValueType2>());
@@ -359,7 +359,7 @@ namespace __parallel
partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result)
{
typedef typename iterator_traits<_IIter>::value_type _ValueType;
- return _GLIBCXX_STD_P::partial_sum(__begin, __end,
+ return __gnu_parallel::partial_sum(__begin, __end,
__result, std::plus<_ValueType>());
}
diff --git a/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc b/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
index cc3ebbc18f9..ab0d0ac36e5 100644
--- a/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
@@ -30,7 +30,59 @@ void test()
const value_type c(0);
- vector_type v(10);
+ vector_type v(10), result(20);
+
+ std::equal(v.begin(), v.end(), v.begin());
+ std::equal(v.begin(), v.end(), v.begin(), std::equal_to<value_type>());
+ __gnu_parallel::equal(v.begin(), v.end(), v.begin());
+ __gnu_parallel::equal(v.begin(), v.end(), v.begin(),
+ std::equal_to<value_type>());
+
std::find(v.begin(), v.end(), c);
__gnu_parallel::find(v.begin(), v.end(), c);
+
+ std::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+ std::find_first_of(v.begin(), v.end(), v.begin(), v.end(),
+ std::equal_to<value_type>());
+ __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+ __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end(),
+ std::equal_to<value_type>());
+
+ std::search_n(v.begin(), v.end(), 5, value_type(1));
+ std::search_n(v.begin(), v.end(), 5, value_type(1),
+ std::equal_to<value_type>());
+ __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1));
+ __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1),
+ std::equal_to<value_type>());
+
+ std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin());
+ std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin(),
+ std::less<value_type>());
+ __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+ result.begin());
+ __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+ result.begin(), std::less<value_type>());
+
+ std::nth_element(v.begin(), v.begin() + 5, v.end());
+ std::nth_element(v.begin(), v.begin() + 5, v.end(), std::less<value_type>());
+ __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end());
+ __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end(),
+ std::less<value_type>());
+
+ std::partial_sort(v.begin(), v.begin() + 5, v.end());
+ std::partial_sort(v.begin(), v.begin() + 5, v.end(),
+ std::less<value_type>());
+ __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end());
+ __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end(),
+ std::less<value_type>());
+
+ std::min_element(v.begin(), v.end());
+ std::min_element(v.begin(), v.end(), std::less<value_type>());
+ __gnu_parallel::min_element(v.begin(), v.end());
+ __gnu_parallel::min_element(v.begin(), v.end(), std::less<value_type>());
+
+ std::max_element(v.begin(), v.end());
+ std::max_element(v.begin(), v.end(), std::less<value_type>());
+ __gnu_parallel::max_element(v.begin(), v.end());
+ __gnu_parallel::max_element(v.begin(), v.end(), std::less<value_type>());
}
diff --git a/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc b/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
index 5a30b0ea781..56f95b6fbab 100644
--- a/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
@@ -35,7 +35,59 @@ void test()
const value_type c(0);
- vector_type v(10);
+ vector_type v(10), result(20);
+
+ std::equal(v.begin(), v.end(), v.begin());
+ std::equal(v.begin(), v.end(), v.begin(), std::equal_to<value_type>());
+ __gnu_parallel::equal(v.begin(), v.end(), v.begin());
+ __gnu_parallel::equal(v.begin(), v.end(), v.begin(),
+ std::equal_to<value_type>());
+
std::find(v.begin(), v.end(), c);
__gnu_parallel::find(v.begin(), v.end(), c);
+
+ std::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+ std::find_first_of(v.begin(), v.end(), v.begin(), v.end(),
+ std::equal_to<value_type>());
+ __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+ __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end(),
+ std::equal_to<value_type>());
+
+ std::search_n(v.begin(), v.end(), 5, value_type(1));
+ std::search_n(v.begin(), v.end(), 5, value_type(1),
+ std::equal_to<value_type>());
+ __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1));
+ __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1),
+ std::equal_to<value_type>());
+
+ std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin());
+ std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin(),
+ std::less<value_type>());
+ __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+ result.begin());
+ __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+ result.begin(), std::less<value_type>());
+
+ std::nth_element(v.begin(), v.begin() + 5, v.end());
+ std::nth_element(v.begin(), v.begin() + 5, v.end(), std::less<value_type>());
+ __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end());
+ __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end(),
+ std::less<value_type>());
+
+ std::partial_sort(v.begin(), v.begin() + 5, v.end());
+ std::partial_sort(v.begin(), v.begin() + 5, v.end(),
+ std::less<value_type>());
+ __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end());
+ __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end(),
+ std::less<value_type>());
+
+ std::min_element(v.begin(), v.end());
+ std::min_element(v.begin(), v.end(), std::less<value_type>());
+ __gnu_parallel::min_element(v.begin(), v.end());
+ __gnu_parallel::min_element(v.begin(), v.end(), std::less<value_type>());
+
+ std::max_element(v.begin(), v.end());
+ std::max_element(v.begin(), v.end(), std::less<value_type>());
+ __gnu_parallel::max_element(v.begin(), v.end());
+ __gnu_parallel::max_element(v.begin(), v.end(), std::less<value_type>());
}
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc b/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
index 59e70f62609..a1ce8f052ec 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
@@ -32,6 +32,17 @@ void test()
const value_type c(0);
vector_type v(10);
+
std::accumulate(v.begin(), v.end(), value_type(1));
+ std::accumulate(v.begin(), v.end(), value_type(1), std::plus<value_type>());
__gnu_parallel::accumulate(v.begin(), v.end(), value_type(1));
+ __gnu_parallel::accumulate(v.begin(), v.end(), value_type(1),
+ std::plus<value_type>());
+
+ std::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+ std::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+ std::multiplies<value_type>(), std::plus<value_type>());
+ __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+ __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+ std::multiplies<value_type>(), std::plus<value_type>());
}
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc b/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
index 189f5b9c72e..a38d92561d7 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
@@ -37,6 +37,17 @@ void test()
const value_type c(0);
vector_type v(10);
+
std::accumulate(v.begin(), v.end(), value_type(1));
+ std::accumulate(v.begin(), v.end(), value_type(1), std::plus<value_type>());
__gnu_parallel::accumulate(v.begin(), v.end(), value_type(1));
+ __gnu_parallel::accumulate(v.begin(), v.end(), value_type(1),
+ std::plus<value_type>());
+
+ std::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+ std::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+ std::multiplies<value_type>(), std::plus<value_type>());
+ __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+ __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+ std::multiplies<value_type>(), std::plus<value_type>());
}