Skip to content

Commit af08c19

Browse files
committed
Fix segmentation fault
1 parent 3b9a55a commit af08c19

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

sycl/include/sycl/handler.hpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ class pipe;
163163
}
164164

165165
namespace ext ::oneapi ::experimental {
166-
template <typename, typename> class work_group_memory;
167166
struct image_descriptor;
168167
} // namespace ext::oneapi::experimental
169168

@@ -172,6 +171,7 @@ class graph_impl;
172171
} // namespace ext::oneapi::experimental::detail
173172
namespace detail {
174173

174+
class work_group_memory_impl;
175175
class handler_impl;
176176
class kernel_impl;
177177
class queue_impl;
@@ -1875,10 +1875,11 @@ class __SYCL_EXPORT handler {
18751875
ext::oneapi::experimental::empty_properties_t>
18761876
void set_arg(
18771877
int ArgIndex,
1878-
ext::oneapi::experimental::work_group_memory<DataT, PropertyListT> &Arg) {
1878+
detail::work_group_memory_impl &Arg) {
1879+
MWorkGroupMemoryObjects.push_back(
1880+
std::make_shared<detail::work_group_memory_impl>(Arg));
18791881
addArg(detail::kernel_param_kind_t::kind_work_group_memory,
1880-
std::make_shared<std::remove_reference_t<decltype(Arg)>>(Arg).get(),
1881-
0, ArgIndex);
1882+
MWorkGroupMemoryObjects.back().get(), 0, ArgIndex);
18821883
}
18831884

18841885
// set_arg for graph dynamic_parameters
@@ -3242,9 +3243,10 @@ class __SYCL_EXPORT handler {
32423243
private:
32433244
std::shared_ptr<detail::handler_impl> impl;
32443245
std::shared_ptr<detail::queue_impl> MQueue;
3245-
3246+
32463247
std::vector<detail::LocalAccessorImplPtr> MLocalAccStorage;
32473248
std::vector<std::shared_ptr<detail::stream_impl>> MStreamStorage;
3249+
std::vector<std::shared_ptr<detail::work_group_memory_impl>> MWorkGroupMemoryObjects;
32483250
detail::string MKernelName;
32493251
/// Storage for a sycl::kernel object.
32503252
std::shared_ptr<detail::kernel_impl> MKernel;

sycl/source/handler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,8 @@ void handler::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
797797
break;
798798
}
799799
case kernel_param_kind_t::kind_work_group_memory: {
800-
addArg(kernel_param_kind_t::kind_std_layout, nullptr, Size,
800+
addArg(kernel_param_kind_t::kind_std_layout, nullptr,
801+
static_cast<detail::work_group_memory_impl *>(Ptr)->buffer_size,
801802
Index + IndexShift);
802803
break;
803804
}

0 commit comments

Comments
 (0)