Skip to content

Commit 9743342

Browse files
revert unrelated changes, restore tests, add compiler versions
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
1 parent ff262f9 commit 9743342

18 files changed

Lines changed: 249 additions & 24 deletions

CMakeLists.txt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -621,19 +621,6 @@ hpx_option(
621621

622622
# ## HPX STDEXEC configuration ##
623623

624-
hpx_option(
625-
HPX_WITH_STDEXEC BOOL
626-
"Use STDEXEC executors instead of native HPX.(default: ON)" ON
627-
CATEGORY "Executor"
628-
ADVANCED
629-
)
630-
631-
if(NOT HPX_WITH_STDEXEC)
632-
hpx_error(
633-
"HPX_WITH_STDEXEC=OFF is no longer supported. HPX now requires stdexec."
634-
)
635-
endif()
636-
637624
hpx_option(
638625
HPX_WITH_FETCH_STDEXEC BOOL "Use FetchContent to fetch STDEXEC.(default: ON)"
639626
ON

examples/quickstart/CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,13 @@ set(disabled_tests error_handling fibonacci_await non_atomic_rma zerocopy_rdma)
8787
if(HPX_WITH_STATIC_LINKING)
8888
set(disabled_tests ${disabled_tests} hello_world_1)
8989
endif()
90-
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang")
90+
# sender_diamond uses stdexec continues_on which fails on Clang <= 21 /
91+
# AppleClang <= 16 due to tag_invoke dispatch differences.
92+
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION
93+
VERSION_LESS_EQUAL "21")
94+
OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"
95+
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL "16")
96+
)
9197
set(disabled_tests ${disabled_tests} sender_diamond)
9298
endif()
9399
if(HPX_WITH_DISTRIBUTED_RUNTIME)

libs/core/algorithms/include/hpx/parallel/algorithms/shift_right.hpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ namespace hpx::parallel {
140140

141141
HPX_CXX_CORE_EXPORT template <typename ExPolicy, typename FwdIter,
142142
typename Sent>
143-
hpx::future<FwdIter> shift_right_helper(ExPolicy policy, FwdIter first,
144-
Sent last, FwdIter new_first, FwdIter result_first)
143+
hpx::future<FwdIter> shift_right_helper(
144+
ExPolicy policy, FwdIter first, Sent last, FwdIter new_first)
145145
{
146146
using non_seq = std::false_type;
147147

@@ -151,15 +151,16 @@ namespace hpx::parallel {
151151

152152
detail::reverse<FwdIter> r;
153153
return dataflow(
154-
p.executor(),
155154
[=](hpx::future<FwdIter>&& f1) mutable -> hpx::future<FwdIter> {
156155
f1.get();
157156

158157
hpx::future<FwdIter> f = r.call2(p, non_seq(), first, last);
159158
return f.then(
160159
[=](hpx::future<FwdIter>&& f) mutable -> FwdIter {
161160
f.get();
162-
return result_first;
161+
std::advance(
162+
first, detail::distance(new_first, last));
163+
return first;
163164
});
164165
},
165166
r.call2(p, non_seq(), first, new_first));
@@ -279,10 +280,8 @@ namespace hpx::parallel {
279280
}
280281

281282
auto new_first = std::next(first, dist - n);
282-
auto result_first = std::next(first, n);
283283
return util::detail::algorithm_result<ExPolicy, FwdIter2>::get(
284-
shift_right_helper(
285-
policy, first, last, new_first, result_first));
284+
shift_right_helper(policy, first, last, new_first));
286285
}
287286
};
288287
/// \endcond

libs/core/algorithms/tests/performance/CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@ set(benchmarks
3030
transform_reduce_scaling
3131
)
3232

33-
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang")
33+
# foreach_report uses tag_invoke-based sender patterns that do not compile with
34+
# Clang <= 21 / AppleClang <= 16 against the current stdexec.
35+
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION
36+
VERSION_LESS_EQUAL "21")
37+
OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"
38+
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL "16")
39+
)
3440
list(REMOVE_ITEM benchmarks foreach_report)
3541
endif()
3642

libs/core/algorithms/tests/unit/algorithms/foreach_scheduler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ void for_each_test_execute_on()
206206

207207
void for_each_test_execute_on_sender()
208208
{
209-
#if !defined(HPX_CLANG_VERSION)
209+
// Clang 21 and earlier fail on this execute-on-sender path.
210+
#if !defined(HPX_CLANG_VERSION) || (HPX_CLANG_VERSION / 10000) > 21
210211
test_for_each_execute_on_sender<std::random_access_iterator_tag>();
211212
test_for_each_execute_on_sender<std::forward_iterator_tag>();
212213
#endif

libs/core/algorithms/tests/unit/algorithms/uninitialized_copyn_sender.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ void uninitialized_copy_n_sender_test()
6666
using namespace hpx::execution;
6767
test_uninitialized_copy_n_sender(
6868
hpx::launch::sync, seq(task), IteratorTag());
69+
test_uninitialized_copy_n_sender(
70+
hpx::launch::sync, unseq(task), IteratorTag());
71+
72+
test_uninitialized_copy_n_sender(
73+
hpx::launch::async, par(task), IteratorTag());
74+
test_uninitialized_copy_n_sender(
75+
hpx::launch::async, par_unseq(task), IteratorTag());
6976
}
7077

7178
////////////////////////////////////////////////////////////////////////////
@@ -126,6 +133,13 @@ void uninitialized_copy_n_exception_sender_test()
126133
using namespace hpx::execution;
127134
test_uninitialized_copy_n_exception_sender(
128135
hpx::launch::sync, seq(task), IteratorTag());
136+
test_uninitialized_copy_n_exception_sender(
137+
hpx::launch::sync, unseq(task), IteratorTag());
138+
139+
test_uninitialized_copy_n_exception_sender(
140+
hpx::launch::async, par(task), IteratorTag());
141+
test_uninitialized_copy_n_exception_sender(
142+
hpx::launch::async, par_unseq(task), IteratorTag());
129143
}
130144

131145
////////////////////////////////////////////////////////////////////////////
@@ -185,6 +199,13 @@ void uninitialized_copy_n_bad_alloc_sender_test()
185199
using namespace hpx::execution;
186200
test_uninitialized_copy_n_bad_alloc_sender(
187201
hpx::launch::sync, seq(task), IteratorTag());
202+
test_uninitialized_copy_n_bad_alloc_sender(
203+
hpx::launch::sync, unseq(task), IteratorTag());
204+
205+
test_uninitialized_copy_n_bad_alloc_sender(
206+
hpx::launch::async, par(task), IteratorTag());
207+
test_uninitialized_copy_n_bad_alloc_sender(
208+
hpx::launch::async, par_unseq(task), IteratorTag());
188209
}
189210

190211
////////////////////////////////////////////////////////////////////////////

libs/core/algorithms/tests/unit/algorithms/uninitialized_default_construct_sender.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ void uninitialized_default_construct_sender_test()
2222
using namespace hpx::execution;
2323
test_uninitialized_default_construct_sender(
2424
hpx::launch::sync, seq(task), IteratorTag());
25+
test_uninitialized_default_construct_sender(
26+
hpx::launch::sync, unseq(task), IteratorTag());
27+
28+
test_uninitialized_default_construct_sender(
29+
hpx::launch::async, par(task), IteratorTag());
30+
test_uninitialized_default_construct_sender(
31+
hpx::launch::async, par_unseq(task), IteratorTag());
2532
}
2633

2734
template <typename IteratorTag>
@@ -30,6 +37,13 @@ void uninitialized_default_construct_sender_test2()
3037
using namespace hpx::execution;
3138
test_uninitialized_default_construct_sender2(
3239
hpx::launch::sync, seq(task), IteratorTag());
40+
test_uninitialized_default_construct_sender2(
41+
hpx::launch::sync, unseq(task), IteratorTag());
42+
43+
test_uninitialized_default_construct_sender2(
44+
hpx::launch::async, par(task), IteratorTag());
45+
test_uninitialized_default_construct_sender2(
46+
hpx::launch::async, par_unseq(task), IteratorTag());
3347
}
3448

3549
template <typename IteratorTag>
@@ -38,6 +52,13 @@ void uninitialized_default_construct_exception_sender_test()
3852
using namespace hpx::execution;
3953
test_uninitialized_default_construct_exception_sender(
4054
hpx::launch::sync, seq(task), IteratorTag());
55+
test_uninitialized_default_construct_exception_sender(
56+
hpx::launch::sync, unseq(task), IteratorTag());
57+
58+
test_uninitialized_default_construct_exception_sender(
59+
hpx::launch::async, par(task), IteratorTag());
60+
test_uninitialized_default_construct_exception_sender(
61+
hpx::launch::async, par_unseq(task), IteratorTag());
4162
}
4263

4364
template <typename IteratorTag>
@@ -46,6 +67,13 @@ void uninitialized_default_construct_bad_alloc_sender_test()
4667
using namespace hpx::execution;
4768
test_uninitialized_default_construct_bad_alloc_sender(
4869
hpx::launch::sync, seq(task), IteratorTag());
70+
test_uninitialized_default_construct_bad_alloc_sender(
71+
hpx::launch::sync, unseq(task), IteratorTag());
72+
73+
test_uninitialized_default_construct_bad_alloc_sender(
74+
hpx::launch::async, par(task), IteratorTag());
75+
test_uninitialized_default_construct_bad_alloc_sender(
76+
hpx::launch::async, par_unseq(task), IteratorTag());
4977
}
5078

5179
int hpx_main(hpx::program_options::variables_map& vm)

libs/core/algorithms/tests/unit/algorithms/uninitialized_default_constructn_sender.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ void uninitialized_default_construct_n_sender_test()
5959
using namespace hpx::execution;
6060
test_uninitialized_default_construct_n_sender(
6161
hpx::launch::sync, seq(task), IteratorTag());
62+
test_uninitialized_default_construct_n_sender(
63+
hpx::launch::sync, unseq(task), IteratorTag());
64+
65+
test_uninitialized_default_construct_n_sender(
66+
hpx::launch::async, par(task), IteratorTag());
67+
test_uninitialized_default_construct_n_sender(
68+
hpx::launch::async, par_unseq(task), IteratorTag());
6269
}
6370

6471
template <typename LnPolicy, typename ExPolicy, typename IteratorTag>
@@ -98,6 +105,13 @@ void uninitialized_default_construct_n_sender_test2()
98105
using namespace hpx::execution;
99106
test_uninitialized_default_construct_n_sender2(
100107
hpx::launch::sync, seq(task), IteratorTag());
108+
test_uninitialized_default_construct_n_sender2(
109+
hpx::launch::sync, unseq(task), IteratorTag());
110+
111+
test_uninitialized_default_construct_n_sender2(
112+
hpx::launch::async, par(task), IteratorTag());
113+
test_uninitialized_default_construct_n_sender2(
114+
hpx::launch::async, par_unseq(task), IteratorTag());
101115
}
102116

103117
template <typename LnPolicy, typename ExPolicy, typename IteratorTag>
@@ -162,6 +176,13 @@ void uninitialized_default_construct_n_exception_sender_test()
162176
using namespace hpx::execution;
163177
test_uninitialized_default_construct_n_exception_sender(
164178
hpx::launch::sync, seq(task), IteratorTag());
179+
test_uninitialized_default_construct_n_exception_sender(
180+
hpx::launch::sync, unseq(task), IteratorTag());
181+
182+
test_uninitialized_default_construct_n_exception_sender(
183+
hpx::launch::async, par(task), IteratorTag());
184+
test_uninitialized_default_construct_n_exception_sender(
185+
hpx::launch::async, par_unseq(task), IteratorTag());
165186
}
166187

167188
template <typename LnPolicy, typename ExPolicy, typename IteratorTag>
@@ -225,6 +246,13 @@ void uninitialized_default_construct_n_bad_alloc_sender_test()
225246
using namespace hpx::execution;
226247
test_uninitialized_default_construct_n_bad_alloc_sender(
227248
hpx::launch::sync, seq(task), IteratorTag());
249+
test_uninitialized_default_construct_n_bad_alloc_sender(
250+
hpx::launch::sync, unseq(task), IteratorTag());
251+
252+
test_uninitialized_default_construct_n_bad_alloc_sender(
253+
hpx::launch::async, par(task), IteratorTag());
254+
test_uninitialized_default_construct_n_bad_alloc_sender(
255+
hpx::launch::async, par_unseq(task), IteratorTag());
228256
}
229257

230258
int hpx_main(hpx::program_options::variables_map& vm)

libs/core/algorithms/tests/unit/algorithms/uninitialized_fill_sender.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ void uninitialized_fill_sender_test()
5353
{
5454
using namespace hpx::execution;
5555
test_uninitialized_fill_sender(hpx::launch::sync, seq(task), IteratorTag());
56+
test_uninitialized_fill_sender(
57+
hpx::launch::sync, unseq(task), IteratorTag());
58+
59+
test_uninitialized_fill_sender(
60+
hpx::launch::async, par(task), IteratorTag());
61+
test_uninitialized_fill_sender(
62+
hpx::launch::async, par_unseq(task), IteratorTag());
5663
}
5764

5865
template <typename LnPolicy, typename ExPolicy, typename IteratorTag>
@@ -110,6 +117,13 @@ void uninitialized_fill_exception_sender_test()
110117
using namespace hpx::execution;
111118
test_uninitialized_fill_exception_sender(
112119
hpx::launch::sync, seq(task), IteratorTag());
120+
test_uninitialized_fill_exception_sender(
121+
hpx::launch::sync, unseq(task), IteratorTag());
122+
123+
test_uninitialized_fill_exception_sender(
124+
hpx::launch::async, par(task), IteratorTag());
125+
test_uninitialized_fill_exception_sender(
126+
hpx::launch::async, par_unseq(task), IteratorTag());
113127
}
114128

115129
template <typename LnPolicy, typename ExPolicy, typename IteratorTag>
@@ -165,6 +179,13 @@ void uninitialized_fill_bad_alloc_sender_test()
165179
using namespace hpx::execution;
166180
test_uninitialized_fill_bad_alloc_sender(
167181
hpx::launch::sync, seq(task), IteratorTag());
182+
test_uninitialized_fill_bad_alloc_sender(
183+
hpx::launch::sync, unseq(task), IteratorTag());
184+
185+
test_uninitialized_fill_bad_alloc_sender(
186+
hpx::launch::async, par(task), IteratorTag());
187+
test_uninitialized_fill_bad_alloc_sender(
188+
hpx::launch::async, par_unseq(task), IteratorTag());
168189
}
169190

170191
int hpx_main(hpx::program_options::variables_map& vm)

libs/core/algorithms/tests/unit/algorithms/uninitialized_filln_sender.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ void uninitialized_fill_n_sender_test()
5353
using namespace hpx::execution;
5454
test_uninitialized_fill_n_sender(
5555
hpx::launch::sync, seq(task), IteratorTag());
56+
test_uninitialized_fill_n_sender(
57+
hpx::launch::sync, unseq(task), IteratorTag());
58+
59+
test_uninitialized_fill_n_sender(
60+
hpx::launch::async, par(task), IteratorTag());
61+
test_uninitialized_fill_n_sender(
62+
hpx::launch::async, par_unseq(task), IteratorTag());
5663
}
5764

5865
template <typename LnPolicy, typename ExPolicy, typename IteratorTag>
@@ -109,6 +116,13 @@ void uninitialized_fill_n_exception_sender_test()
109116
using namespace hpx::execution;
110117
test_uninitialized_fill_n_exception_sender(
111118
hpx::launch::sync, seq(task), IteratorTag());
119+
test_uninitialized_fill_n_exception_sender(
120+
hpx::launch::sync, unseq(task), IteratorTag());
121+
122+
test_uninitialized_fill_n_exception_sender(
123+
hpx::launch::async, par(task), IteratorTag());
124+
test_uninitialized_fill_n_exception_sender(
125+
hpx::launch::async, par_unseq(task), IteratorTag());
112126
}
113127

114128
template <typename LnPolicy, typename ExPolicy, typename IteratorTag>
@@ -163,6 +177,13 @@ void uninitialized_fill_n_bad_alloc_sender_test()
163177
using namespace hpx::execution;
164178
test_uninitialized_fill_n_bad_alloc_sender(
165179
hpx::launch::sync, seq(task), IteratorTag());
180+
test_uninitialized_fill_n_bad_alloc_sender(
181+
hpx::launch::sync, unseq(task), IteratorTag());
182+
183+
test_uninitialized_fill_n_bad_alloc_sender(
184+
hpx::launch::async, par(task), IteratorTag());
185+
test_uninitialized_fill_n_bad_alloc_sender(
186+
hpx::launch::async, par_unseq(task), IteratorTag());
166187
}
167188

168189
int hpx_main(hpx::program_options::variables_map& vm)

0 commit comments

Comments
 (0)