@@ -163,7 +163,6 @@ class pipe;
163163}
164164
165165namespace ext ::oneapi ::experimental {
166- template <typename , typename > class work_group_memory ;
167166struct image_descriptor ;
168167} // namespace ext::oneapi::experimental
169168
@@ -172,6 +171,7 @@ class graph_impl;
172171} // namespace ext::oneapi::experimental::detail
173172namespace detail {
174173
174+ class work_group_memory_impl ;
175175class handler_impl ;
176176class kernel_impl ;
177177class 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 {
32423243private:
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;
0 commit comments