On 01/10/19 21:59 +0100, Jonathan Wakely wrote:
Tested x86_64-linux (normal and parallel modes), committed to trunk.
commit b11c8f480fe1cd5696ec1a8f0db481c5f45429b8
Author: Jonathan Wakely <jwak...@redhat.com>
Date: Tue Oct 1 20:31:51 2019 +0100
Disable tests that aren't valid in parallel mode
Tests that depend on debug mode can't be tested in parallel mode.
* testsuite/17_intro/using_namespace_std_tr1_neg.cc: Skip test for
parallel mode.
* testsuite/20_util/hash/84998.cc: Likewise.
* testsuite/23_containers/deque/types/pmr_typedefs_debug.cc:
Likewise.
* testsuite/23_containers/forward_list/pmr_typedefs_debug.cc:
Likewise.
* testsuite/23_containers/list/pmr_typedefs_debug.cc: Likewise.
* testsuite/23_containers/map/pmr_typedefs_debug.cc: Likewise.
* testsuite/23_containers/multimap/pmr_typedefs_debug.cc: Likewise.
* testsuite/23_containers/multiset/pmr_typedefs_debug.cc: Likewise.
* testsuite/23_containers/set/pmr_typedefs_debug.cc: Likewise.
* testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc:
Likewise.
* testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
Likewise.
* testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
Likewise.
* testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
Likewise.
* testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
Likewise.
* testsuite/23_containers/vector/types/pmr_typedefs_debug.cc:
Likewise.
* testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
* testsuite/25_algorithms/copy/86658.cc: Likewise.
* testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
* testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
* testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
* testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
The remaining failures for 'make check-parallel' are all in tests for C++20
constexpr and move-only function objects.
We should just document that Parallel Mode only really meets the C++03
requirements. For C++17 there are new parallel algorithms, and once
those are able to use OpenMP we should consider deprecating Parallel
Mode entirely.
This documents the limitation. Committed to trunk.
commit 5fad726cad1b930930caeb4f6c070ebde813cb02
Author: Jonathan Wakely <jwak...@redhat.com>
Date: Wed Oct 2 15:43:54 2019 +0100
Document non-conformance of parallel mode to recent C++ standards
* doc/xml/manual/parallel_mode.xml: Add caveat about support for
recent standards.
* doc/html/*: Regenerate.
diff --git a/libstdc++-v3/doc/xml/manual/parallel_mode.xml b/libstdc++-v3/doc/xml/manual/parallel_mode.xml
index 60e2088b2a1..ab7d2f2b56b 100644
--- a/libstdc++-v3/doc/xml/manual/parallel_mode.xml
+++ b/libstdc++-v3/doc/xml/manual/parallel_mode.xml
@@ -13,17 +13,31 @@
<para> The libstdc++ parallel mode is an experimental parallel
-implementation of many algorithms the C++ Standard Library.
+implementation of many algorithms of the C++ Standard Library.
</para>
<para>
Several of the standard algorithms, for instance
<function>std::sort</function>, are made parallel using OpenMP
-annotations. These parallel mode constructs and can be invoked by
+annotations. These parallel mode constructs can be invoked by
explicit source declaration or by compiling existing sources with a
specific compiler flag.
</para>
+<note>
+ <para>
+ The parallel mode has not been kept up to date with recent C++ standards
+ and so it only conforms to the C++03 requirements.
+ That means that move-only predicates may not work with parallel mode
+ algorithms, and for C++20 most of the algorithms cannot be used in
+ <code>constexpr</code> functions.
+ </para>
+ <para>
+ For C++17 and above there are new overloads of the standard algorithms
+ which take an execution policy argument. You should consider using those
+ instead of the non-standard parallel mode extensions.
+ </para>
+</note>
<section xml:id="manual.ext.parallel_mode.intro" xreflabel="Intro"><info><title>Intro</title></info>