+2020-05-07 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/94971 (partial)
+ * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify
+ std::sample using macro to work in parallel mode.
+ (__sort_fn): Likewise for std::sort.
+ (ranges::__nth_element_fn): Likewise for std::nth_element.
+ * include/bits/stl_algobase.h (lexicographical_compare_three_way):
+ Likewise for std::__min_cmp.
+ * include/parallel/algobase.h (lexicographical_compare_three_way):
+ Add to namespace std::__parallel.
+
+ PR c/92472
+ * include/parallel/multiway_merge.h (_GuardedIterator::operator*)
+ (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
+ (_UnguardedIterator::operator _RAIter): Add const qualifier.
+ (operator<(_GuardedIterator&, _GuardedIterator&)
+ (operator<=(_GuardedIterator&, _GuardedIterator&)
+ (operator<(_UnguardedIterator&, _UnguardedIterator&)
+ (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
+ parameters to const references.
+
2020-05-07 Eric Botcazou <ebotcazou@adacore.com>
* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
Likewise.
-2020-05-07 Jonathan Wakely <jwakely@redhat.com>
-
- PR c/92472
- * include/parallel/multiway_merge.h (_GuardedIterator::operator*)
- (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
- (_UnguardedIterator::operator _RAIter): Add const qualifier.
- (operator<(_GuardedIterator&, _GuardedIterator&)
- (operator<=(_GuardedIterator&, _GuardedIterator&)
- (operator<(_UnguardedIterator&, _UnguardedIterator&)
- (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
- parameters to const references.
-
2020-05-06 Martin Liska <mliska@suse.cz>
Revert:
// FIXME: Forwarding to std::sample here requires computing __lasti
// which may take linear time.
auto __lasti = ranges::next(__first, __last);
- return std::sample(std::move(__first), std::move(__lasti),
- std::move(__out), __n, std::forward<_Gen>(__g));
+ return _GLIBCXX_STD_A::
+ sample(std::move(__first), std::move(__lasti), std::move(__out),
+ __n, std::forward<_Gen>(__g));
}
else
{
_Comp __comp = {}, _Proj __proj = {}) const
{
auto __lasti = ranges::next(__first, __last);
- std::sort(std::move(__first), __lasti,
- __detail::__make_comp_proj(__comp, __proj));
+ _GLIBCXX_STD_A::sort(std::move(__first), __lasti,
+ __detail::__make_comp_proj(__comp, __proj));
return __lasti;
}
_Comp __comp = {}, _Proj __proj = {}) const
{
auto __lasti = ranges::next(__first, __last);
- std::nth_element(std::move(__first), std::move(__nth), __lasti,
- __detail::__make_comp_proj(__comp, __proj));
+ _GLIBCXX_STD_A::nth_element(std::move(__first), std::move(__nth),
+ __lasti,
+ __detail::__make_comp_proj(__comp, __proj));
return __lasti;
}
if constexpr (__is_byte_iter<_InputIter1>)
if constexpr (__is_byte_iter<_InputIter2>)
{
- const auto [__len, __lencmp]
- = std::__min_cmp(__last1 - __first1, __last2 - __first2);
+ const auto [__len, __lencmp] = _GLIBCXX_STD_A::
+ __min_cmp(__last1 - __first1, __last2 - __first2);
if (__len)
{
const auto __c
_InputIter2 __first2,
_InputIter2 __last2)
{
- return std::lexicographical_compare_three_way(__first1, __last1,
- __first2, __last2,
- compare_three_way{});
+ return _GLIBCXX_STD_A::
+ lexicographical_compare_three_way(__first1, __last1, __first2, __last2,
+ compare_three_way{});
}
#endif // three_way_comparison
__begin1, __end1, __begin2, __end2, __pred,
_IteratorCategory1(), _IteratorCategory2());
}
+
+#if __cpp_lib_three_way_comparison
+ using _GLIBCXX_STD_A::lexicographical_compare_three_way;
+#endif
} // end namespace
} // end namespace