[flang-commits] [flang] Adding Separate OpenMP Offloading Backend to `libcxx/include/__algorithm/pstl_backends` (PR #66968)
Anton Rydahl via flang-commits
flang-commits at lists.llvm.org
Fri Oct 13 14:51:09 PDT 2023
================
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_OPENMP_BACKEND_ANY_OF_H
+#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_OPENMP_BACKEND_ANY_OF_H
+
+#include <__algorithm/any_of.h>
+#include <__algorithm/pstl_backends/cpu_backends/backend.h>
+#include <__algorithm/pstl_backends/openmp/backend.h>
+#include <__config>
+#include <__type_traits/is_execution_policy.h>
+
+#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate>
+_LIBCPP_HIDE_FROM_ABI bool
+__pstl_any_of(__omp_backend_tag, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) {
----------------
AntonRydahl wrote:
Here is the full error for one of the tests that fail if I do not make a placeholder for any_of:
```
******************** TEST 'llvm-libc++-shared.cfg.in :: std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp' FAILED ********************
Exit Code: 1
Command Output (stdout):
--
# COMPILED WITH
/dev/shm/rydahl1/LLVM/build/./bin/clang++ /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp -pthread --target=x86_64-unknown-linux-gnu -nostdinc++ -I /dev/shm/rydahl1/LLVM/build/include/c++/v1 -I /dev/shm/rydahl1/LLVM/build/include/x86_64-unknown-linux-gnu/c++/v1 -I /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support -std=c++26 -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wdeprecated-copy-dtor -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wno-unknown-pragmas -Wno-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -Werror=thread-safety -Wuser-defined-warnings -lc++experimental -nostdlib++ -L /dev/shm/rydahl1/LLVM/build/./lib/x86_64-unknown-linux-gnu -Wl,-rpath,/dev/shm/rydahl1/LLVM/build/./lib/x86_64-unknown-linux-gnu -lc++ -o /dev/shm/rydahl1/LLVM/build/runtimes/runtimes-bins/test/std/algorithms/alg.modifying.operations/alg.fill/Output/pstl.fill_n.pass.cpp.dir/t.tmp.exe
# executed command: /dev/shm/rydahl1/LLVM/build/./bin/clang++ /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp -pthread --target=x86_64-unknown-linux-gnu -nostdinc++ -I /dev/shm/rydahl1/LLVM/build/include/c++/v1 -I /dev/shm/rydahl1/LLVM/build/include/x86_64-unknown-linux-gnu/c++/v1 -I /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support -std=c++26 -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wdeprecated-copy-dtor -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wno-unknown-pragmas -Wno-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -Werror=thread-safety -Wuser-defined-warnings -lc++experimental -nostdlib++ -L /dev/shm/rydahl1/LLVM/build/./lib/x86_64-unknown-linux-gnu -Wl,-rpath,/dev/shm/rydahl1/LLVM/build/./lib/x86_64-unknown-linux-gnu -lc++ -o /dev/shm/rydahl1/LLVM/build/runtimes/runtimes-bins/test/std/algorithms/alg.modifying.operations/alg.fill/Output/pstl.fill_n.pass.cpp.dir/t.tmp.exe
# .---command stderr------------
# | In file included from /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:19:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/algorithm:1827:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_any_all_none_of.h:12:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_find.h:14:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_backend.h:12:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h:58:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h:14:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h:16:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h:17:
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:724:45: error: cannot form a reference to 'void'
# | 724 | return is_constructible_v<_Tp, _Up&&> &&
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:827:47: note: in instantiation of function template specialization 'std::optional<std::__empty>::_CheckOptionalArgsConstructor::__enable_implicit<void>' requested here
# | 827 | _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:830:15: note: while substituting prior template arguments into non-type template parameter [with _Up = decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))]
# | 830 | constexpr optional(_Up&& __v)
# | | ^~~~~~~~~~~~~~~~~~~
# | 831 | : __base(in_place, _VSTD::forward<_Up>(__v)) {}
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:44:10: note: while substituting deduced template arguments into function template 'optional' [with _Up = decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args))), $1 = (no value)]
# | 44 | return std::__pstl_frontend_dispatch(
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:64:13: note: in instantiation of function template specialization 'std::__fill<const std::execution::parallel_unsequenced_policy &, int *, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 64 | if (!std::__fill(__policy, std::move(__first), std::move(__last), __value))
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:84:16: note: in instantiation of function template specialization 'std::fill<const std::execution::parallel_unsequenced_policy &, int *, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 84 | std::fill(__policy, __g_first, __g_first + __g_n, __g_value);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:103:13: note: in instantiation of function template specialization 'std::__fill_n<const std::execution::parallel_unsequenced_policy &, int *, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 103 | if (!std::__fill_n(__policy, std::move(__first), std::move(__n), __value))
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:38:12: note: in instantiation of function template specialization 'std::fill_n<const std::execution::parallel_unsequenced_policy &, int *, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 38 | std::fill_n(policy, Iter(std::begin(a)), std::size(a), 33);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:38:3: note: in instantiation of function template specialization 'Test<int *>::operator()<const std::execution::parallel_unsequenced_policy &>' requested here
# | 38 | func(std::execution::par_unseq);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:47:5: note: in instantiation of function template specialization 'test_execution_policies<Test<int *>>' requested here
# | 47 | test_execution_policies(TestClass<Iter>{});
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestIteratorWithPolicies<Test>::operator()<int *>' requested here
# | 52 | swallow((f.template operator()<Types>(), 0)...);
# | | ^
# | In file included from /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:19:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/algorithm:1830:
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:44:10: error: no viable conversion from returned value of type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to function return type 'optional<__empty>'
# | 44 | return std::__pstl_frontend_dispatch(
# | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 45 | _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_fill, _RawPolicy),
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 46 | [&](_ForwardIterator __g_first, _ForwardIterator __g_last, const _Tp& __g_value) {
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 47 | return std::__for_each(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) {
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 48 | __element = __g_value;
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 49 | });
# | | ~~~
# | 50 | },
# | | ~~
# | 51 | std::move(__first),
# | | ~~~~~~~~~~~~~~~~~~~
# | 52 | std::move(__last),
# | | ~~~~~~~~~~~~~~~~~~
# | 53 | __value);
# | | ~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:64:13: note: in instantiation of function template specialization 'std::__fill<const std::execution::parallel_unsequenced_policy &, int *, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 64 | if (!std::__fill(__policy, std::move(__first), std::move(__last), __value))
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:84:16: note: in instantiation of function template specialization 'std::fill<const std::execution::parallel_unsequenced_policy &, int *, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 84 | std::fill(__policy, __g_first, __g_first + __g_n, __g_value);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:103:13: note: in instantiation of function template specialization 'std::__fill_n<const std::execution::parallel_unsequenced_policy &, int *, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 103 | if (!std::__fill_n(__policy, std::move(__first), std::move(__n), __value))
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:38:12: note: in instantiation of function template specialization 'std::fill_n<const std::execution::parallel_unsequenced_policy &, int *, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 38 | std::fill_n(policy, Iter(std::begin(a)), std::size(a), 33);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:38:3: note: in instantiation of function template specialization 'Test<int *>::operator()<const std::execution::parallel_unsequenced_policy &>' requested here
# | 38 | func(std::execution::par_unseq);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:47:5: note: in instantiation of function template specialization 'test_execution_policies<Test<int *>>' requested here
# | 47 | test_execution_policies(TestClass<Iter>{});
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestIteratorWithPolicies<Test>::operator()<int *>' requested here
# | 52 | swallow((f.template operator()<Types>(), 0)...);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:804:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'const optional<__empty> &' for 1st argument
# | 804 | _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
# | | ^ ~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:805:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'optional<__empty> &&' for 1st argument
# | 805 | _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
# | | ^ ~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:806:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'nullopt_t' for 1st argument
# | 806 | _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}
# | | ^ ~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:830:15: note: candidate template ignored: substitution failure [with _Up = decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))]: non-type template argument is not a constant expression
# | 827 | _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 828 | , int> = 0>
# | 829 | _LIBCPP_INLINE_VISIBILITY
# | 830 | constexpr optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:845:35: note: candidate template ignored: could not match 'optional<_Up>' against 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void')
# | 845 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:863:35: note: candidate template ignored: could not match 'optional<_Up>' against 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void')
# | 863 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(optional<_Up>&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:816:24: note: explicit constructor is not a candidate
# | 816 | constexpr explicit optional(_InPlaceT, _Args&&... __args)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:837:24: note: explicit constructor is not a candidate
# | 837 | constexpr explicit optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:853:44: note: explicit constructor is not a candidate
# | 853 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:871:44: note: explicit constructor is not a candidate
# | 871 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(optional<_Up>&& __v)
# | | ^
# | In file included from /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:19:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/algorithm:1829:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_count.h:15:
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_for_each.h:43:10: error: no viable conversion from returned value of type 'void' to function return type 'optional<__empty>'
# | 43 | return std::__pstl_for_each<_RawPolicy>(_Backend{}, std::move(__first), std::move(__last), std::move(__func));
# | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:47:21: note: in instantiation of function template specialization 'std::__for_each<const std::execution::parallel_unsequenced_policy &, int *&, (lambda at /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:47:63), std::execution::parallel_unsequenced_policy, 0>' requested here
# | 47 | return std::__for_each(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) {
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:64:13: note: in instantiation of function template specialization 'std::__fill<const std::execution::parallel_unsequenced_policy &, int *, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 64 | if (!std::__fill(__policy, std::move(__first), std::move(__last), __value))
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:84:16: note: in instantiation of function template specialization 'std::fill<const std::execution::parallel_unsequenced_policy &, int *, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 84 | std::fill(__policy, __g_first, __g_first + __g_n, __g_value);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:103:13: note: in instantiation of function template specialization 'std::__fill_n<const std::execution::parallel_unsequenced_policy &, int *, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 103 | if (!std::__fill_n(__policy, std::move(__first), std::move(__n), __value))
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:38:12: note: in instantiation of function template specialization 'std::fill_n<const std::execution::parallel_unsequenced_policy &, int *, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 38 | std::fill_n(policy, Iter(std::begin(a)), std::size(a), 33);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:38:3: note: in instantiation of function template specialization 'Test<int *>::operator()<const std::execution::parallel_unsequenced_policy &>' requested here
# | 38 | func(std::execution::par_unseq);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:47:5: note: in instantiation of function template specialization 'test_execution_policies<Test<int *>>' requested here
# | 47 | test_execution_policies(TestClass<Iter>{});
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestIteratorWithPolicies<Test>::operator()<int *>' requested here
# | 52 | swallow((f.template operator()<Types>(), 0)...);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:804:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'const optional<__empty> &' for 1st argument
# | 804 | _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
# | | ^ ~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:805:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'optional<__empty> &&' for 1st argument
# | 805 | _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
# | | ^ ~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:806:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'nullopt_t' for 1st argument
# | 806 | _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}
# | | ^ ~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:830:15: note: candidate template ignored: substitution failure [with _Up = void]: no matching function for call to '__enable_implicit'
# | 827 | _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 828 | , int> = 0>
# | 829 | _LIBCPP_INLINE_VISIBILITY
# | 830 | constexpr optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:845:35: note: candidate template ignored: could not match 'optional<_Up>' against 'void'
# | 845 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:863:35: note: candidate template ignored: could not match 'optional<_Up>' against 'void'
# | 863 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(optional<_Up>&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:816:24: note: explicit constructor is not a candidate
# | 816 | constexpr explicit optional(_InPlaceT, _Args&&... __args)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:837:24: note: explicit constructor is not a candidate
# | 837 | constexpr explicit optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:853:44: note: explicit constructor is not a candidate
# | 853 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:871:44: note: explicit constructor is not a candidate
# | 871 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(optional<_Up>&& __v)
# | | ^
# | In file included from /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:19:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/algorithm:1830:
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:44:10: error: no viable conversion from returned value of type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to function return type 'optional<__empty>'
# | 44 | return std::__pstl_frontend_dispatch(
# | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 45 | _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_fill, _RawPolicy),
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 46 | [&](_ForwardIterator __g_first, _ForwardIterator __g_last, const _Tp& __g_value) {
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 47 | return std::__for_each(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) {
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 48 | __element = __g_value;
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 49 | });
# | | ~~~
# | 50 | },
# | | ~~
# | 51 | std::move(__first),
# | | ~~~~~~~~~~~~~~~~~~~
# | 52 | std::move(__last),
# | | ~~~~~~~~~~~~~~~~~~
# | 53 | __value);
# | | ~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:64:13: note: in instantiation of function template specialization 'std::__fill<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 64 | if (!std::__fill(__policy, std::move(__first), std::move(__last), __value))
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:84:16: note: in instantiation of function template specialization 'std::fill<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 84 | std::fill(__policy, __g_first, __g_first + __g_n, __g_value);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:103:13: note: in instantiation of function template specialization 'std::__fill_n<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 103 | if (!std::__fill_n(__policy, std::move(__first), std::move(__n), __value))
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:38:12: note: in instantiation of function template specialization 'std::fill_n<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 38 | std::fill_n(policy, Iter(std::begin(a)), std::size(a), 33);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:38:3: note: in instantiation of function template specialization 'Test<contiguous_iterator<int *>>::operator()<const std::execution::parallel_unsequenced_policy &>' requested here
# | 38 | func(std::execution::par_unseq);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:47:5: note: in instantiation of function template specialization 'test_execution_policies<Test<contiguous_iterator<int *>>>' requested here
# | 47 | test_execution_policies(TestClass<Iter>{});
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestIteratorWithPolicies<Test>::operator()<contiguous_iterator<int *>>' requested here
# | 52 | swallow((f.template operator()<Types>(), 0)...);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:804:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'const optional<__empty> &' for 1st argument
# | 804 | _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
# | | ^ ~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:805:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'optional<__empty> &&' for 1st argument
# | 805 | _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
# | | ^ ~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:806:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'nullopt_t' for 1st argument
# | 806 | _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}
# | | ^ ~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:830:15: note: candidate template ignored: substitution failure [with _Up = decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))]: no matching function for call to '__enable_implicit'
# | 827 | _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 828 | , int> = 0>
# | 829 | _LIBCPP_INLINE_VISIBILITY
# | 830 | constexpr optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:845:35: note: candidate template ignored: could not match 'optional<_Up>' against 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void')
# | 845 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:863:35: note: candidate template ignored: could not match 'optional<_Up>' against 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void')
# | 863 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(optional<_Up>&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:816:24: note: explicit constructor is not a candidate
# | 816 | constexpr explicit optional(_InPlaceT, _Args&&... __args)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:837:24: note: explicit constructor is not a candidate
# | 837 | constexpr explicit optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:853:44: note: explicit constructor is not a candidate
# | 853 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:871:44: note: explicit constructor is not a candidate
# | 871 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(optional<_Up>&& __v)
# | | ^
# | In file included from /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:19:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/algorithm:1829:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_count.h:15:
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_for_each.h:43:10: error: no viable conversion from returned value of type 'void' to function return type 'optional<__empty>'
# | 43 | return std::__pstl_for_each<_RawPolicy>(_Backend{}, std::move(__first), std::move(__last), std::move(__func));
# | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:47:21: note: in instantiation of function template specialization 'std::__for_each<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *> &, (lambda at /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:47:63), std::execution::parallel_unsequenced_policy, 0>' requested here
# | 47 | return std::__for_each(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) {
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:64:13: note: in instantiation of function template specialization 'std::__fill<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 64 | if (!std::__fill(__policy, std::move(__first), std::move(__last), __value))
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:84:16: note: in instantiation of function template specialization 'std::fill<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 84 | std::fill(__policy, __g_first, __g_first + __g_n, __g_value);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:103:13: note: in instantiation of function template specialization 'std::__fill_n<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 103 | if (!std::__fill_n(__policy, std::move(__first), std::move(__n), __value))
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:38:12: note: in instantiation of function template specialization 'std::fill_n<const std::execution::parallel_unsequenced_policy &, contiguous_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 38 | std::fill_n(policy, Iter(std::begin(a)), std::size(a), 33);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:38:3: note: in instantiation of function template specialization 'Test<contiguous_iterator<int *>>::operator()<const std::execution::parallel_unsequenced_policy &>' requested here
# | 38 | func(std::execution::par_unseq);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:47:5: note: in instantiation of function template specialization 'test_execution_policies<Test<contiguous_iterator<int *>>>' requested here
# | 47 | test_execution_policies(TestClass<Iter>{});
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestIteratorWithPolicies<Test>::operator()<contiguous_iterator<int *>>' requested here
# | 52 | swallow((f.template operator()<Types>(), 0)...);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:804:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'const optional<__empty> &' for 1st argument
# | 804 | _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
# | | ^ ~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:805:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'optional<__empty> &&' for 1st argument
# | 805 | _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
# | | ^ ~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:806:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'nullopt_t' for 1st argument
# | 806 | _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}
# | | ^ ~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:830:15: note: candidate template ignored: substitution failure [with _Up = void]: no matching function for call to '__enable_implicit'
# | 827 | _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 828 | , int> = 0>
# | 829 | _LIBCPP_INLINE_VISIBILITY
# | 830 | constexpr optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:845:35: note: candidate template ignored: could not match 'optional<_Up>' against 'void'
# | 845 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:863:35: note: candidate template ignored: could not match 'optional<_Up>' against 'void'
# | 863 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(optional<_Up>&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:816:24: note: explicit constructor is not a candidate
# | 816 | constexpr explicit optional(_InPlaceT, _Args&&... __args)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:837:24: note: explicit constructor is not a candidate
# | 837 | constexpr explicit optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:853:44: note: explicit constructor is not a candidate
# | 853 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:871:44: note: explicit constructor is not a candidate
# | 871 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(optional<_Up>&& __v)
# | | ^
# | In file included from /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:19:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/algorithm:1830:
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:44:10: error: no viable conversion from returned value of type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to function return type 'optional<__empty>'
# | 44 | return std::__pstl_frontend_dispatch(
# | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 45 | _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_fill, _RawPolicy),
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 46 | [&](_ForwardIterator __g_first, _ForwardIterator __g_last, const _Tp& __g_value) {
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 47 | return std::__for_each(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) {
# | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 48 | __element = __g_value;
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 49 | });
# | | ~~~
# | 50 | },
# | | ~~
# | 51 | std::move(__first),
# | | ~~~~~~~~~~~~~~~~~~~
# | 52 | std::move(__last),
# | | ~~~~~~~~~~~~~~~~~~
# | 53 | __value);
# | | ~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:64:13: note: in instantiation of function template specialization 'std::__fill<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 64 | if (!std::__fill(__policy, std::move(__first), std::move(__last), __value))
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:84:16: note: in instantiation of function template specialization 'std::fill<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 84 | std::fill(__policy, __g_first, __g_first + __g_n, __g_value);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:103:13: note: in instantiation of function template specialization 'std::__fill_n<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 103 | if (!std::__fill_n(__policy, std::move(__first), std::move(__n), __value))
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:38:12: note: in instantiation of function template specialization 'std::fill_n<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 38 | std::fill_n(policy, Iter(std::begin(a)), std::size(a), 33);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:38:3: note: in instantiation of function template specialization 'Test<random_access_iterator<int *>>::operator()<const std::execution::parallel_unsequenced_policy &>' requested here
# | 38 | func(std::execution::par_unseq);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:47:5: note: in instantiation of function template specialization 'test_execution_policies<Test<random_access_iterator<int *>>>' requested here
# | 47 | test_execution_policies(TestClass<Iter>{});
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestIteratorWithPolicies<Test>::operator()<random_access_iterator<int *>>' requested here
# | 52 | swallow((f.template operator()<Types>(), 0)...);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:804:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'const optional<__empty> &' for 1st argument
# | 804 | _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
# | | ^ ~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:805:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'optional<__empty> &&' for 1st argument
# | 805 | _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
# | | ^ ~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:806:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void') to 'nullopt_t' for 1st argument
# | 806 | _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}
# | | ^ ~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:830:15: note: candidate template ignored: substitution failure [with _Up = decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))]: no matching function for call to '__enable_implicit'
# | 827 | _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 828 | , int> = 0>
# | 829 | _LIBCPP_INLINE_VISIBILITY
# | 830 | constexpr optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:845:35: note: candidate template ignored: could not match 'optional<_Up>' against 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void')
# | 845 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:863:35: note: candidate template ignored: could not match 'optional<_Up>' against 'decltype(std::__pstl_fill<std::execution::parallel_unsequenced_policy>(typename __select_backend<parallel_unsequenced_policy>::type{}, std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args), std::forward<decltype(__args)>(__args)))' (aka 'void')
# | 863 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(optional<_Up>&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:816:24: note: explicit constructor is not a candidate
# | 816 | constexpr explicit optional(_InPlaceT, _Args&&... __args)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:837:24: note: explicit constructor is not a candidate
# | 837 | constexpr explicit optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:853:44: note: explicit constructor is not a candidate
# | 853 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:871:44: note: explicit constructor is not a candidate
# | 871 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(optional<_Up>&& __v)
# | | ^
# | In file included from /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:19:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/algorithm:1829:
# | In file included from /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_count.h:15:
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_for_each.h:43:10: error: no viable conversion from returned value of type 'void' to function return type 'optional<__empty>'
# | 43 | return std::__pstl_for_each<_RawPolicy>(_Backend{}, std::move(__first), std::move(__last), std::move(__func));
# | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:47:21: note: in instantiation of function template specialization 'std::__for_each<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *> &, (lambda at /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:47:63), std::execution::parallel_unsequenced_policy, 0>' requested here
# | 47 | return std::__for_each(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) {
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:64:13: note: in instantiation of function template specialization 'std::__fill<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 64 | if (!std::__fill(__policy, std::move(__first), std::move(__last), __value))
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:84:16: note: in instantiation of function template specialization 'std::fill<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 84 | std::fill(__policy, __g_first, __g_first + __g_n, __g_value);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/__algorithm/pstl_fill.h:103:13: note: in instantiation of function template specialization 'std::__fill_n<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 103 | if (!std::__fill_n(__policy, std::move(__first), std::move(__n), __value))
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/pstl.fill_n.pass.cpp:38:12: note: in instantiation of function template specialization 'std::fill_n<const std::execution::parallel_unsequenced_policy &, random_access_iterator<int *>, unsigned long, int, std::execution::parallel_unsequenced_policy, 0>' requested here
# | 38 | std::fill_n(policy, Iter(std::begin(a)), std::size(a), 33);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:38:3: note: in instantiation of function template specialization 'Test<random_access_iterator<int *>>::operator()<const std::execution::parallel_unsequenced_policy &>' requested here
# | 38 | func(std::execution::par_unseq);
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/test_execution_policies.h:47:5: note: in instantiation of function template specialization 'test_execution_policies<Test<random_access_iterator<int *>>>' requested here
# | 47 | test_execution_policies(TestClass<Iter>{});
# | | ^
# | /g/g92/rydahl1/LLVM_FORK/llvm-project/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestIteratorWithPolicies<Test>::operator()<random_access_iterator<int *>>' requested here
# | 52 | swallow((f.template operator()<Types>(), 0)...);
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:804:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'const optional<__empty> &' for 1st argument
# | 804 | _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
# | | ^ ~~~~~~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:805:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'optional<__empty> &&' for 1st argument
# | 805 | _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
# | | ^ ~~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:806:41: note: candidate constructor not viable: cannot convert argument of incomplete type 'void' to 'nullopt_t' for 1st argument
# | 806 | _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}
# | | ^ ~~~~~~~~~
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:830:15: note: candidate template ignored: substitution failure [with _Up = void]: no matching function for call to '__enable_implicit'
# | 827 | _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
# | | ~~~~~~~~~~~~~~~~~~~~~~
# | 828 | , int> = 0>
# | 829 | _LIBCPP_INLINE_VISIBILITY
# | 830 | constexpr optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:845:35: note: candidate template ignored: could not match 'optional<_Up>' against 'void'
# | 845 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:863:35: note: candidate template ignored: could not match 'optional<_Up>' against 'void'
# | 863 | _LIBCPP_CONSTEXPR_SINCE_CXX20 optional(optional<_Up>&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:816:24: note: explicit constructor is not a candidate
# | 816 | constexpr explicit optional(_InPlaceT, _Args&&... __args)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:837:24: note: explicit constructor is not a candidate
# | 837 | constexpr explicit optional(_Up&& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:853:44: note: explicit constructor is not a candidate
# | 853 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(const optional<_Up>& __v)
# | | ^
# | /dev/shm/rydahl1/LLVM/build/include/c++/v1/optional:871:44: note: explicit constructor is not a candidate
# | 871 | _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit optional(optional<_Up>&& __v)
# | | ^
# | 7 errors generated.
# `-----------------------------
# error: command failed with exit status: 1
--
********************
```
https://github.com/llvm/llvm-project/pull/66968
More information about the flang-commits
mailing list