@@ -465,22 +465,35 @@ class __SYCL_EXPORT handler {
465465
466466 void setArgsHelper (int ) {}
467467
468- // setArgHelper for local accessor argument.
469- template <typename DataT, int Dims, access::mode AccessMode,
470- access::placeholder IsPlaceholder>
471- void setArgHelper (int ArgIndex,
472- accessor<DataT, Dims, AccessMode, access::target::local,
473- IsPlaceholder> &&Arg) {
474- detail::LocalAccessorBaseHost *LocalAccBase =
475- (detail::LocalAccessorBaseHost *)&Arg;
468+ void setLocalAccessorArgHelper (int ArgIndex,
469+ detail::LocalAccessorBaseHost &LocalAccBase) {
476470 detail::LocalAccessorImplPtr LocalAccImpl =
477- detail::getSyclObjImpl (* LocalAccBase);
471+ detail::getSyclObjImpl (LocalAccBase);
478472 detail::LocalAccessorImplHost *Req = LocalAccImpl.get ();
479473 MLocalAccStorage.push_back (std::move (LocalAccImpl));
480474 MArgs.emplace_back (detail::kernel_param_kind_t ::kind_accessor, Req,
481475 static_cast <int >(access::target::local), ArgIndex);
482476 }
483477
478+ // setArgHelper for local accessor argument (legacy accessor interface)
479+ template <typename DataT, int Dims, access::mode AccessMode,
480+ access::placeholder IsPlaceholder>
481+ void setArgHelper (int ArgIndex,
482+ accessor<DataT, Dims, AccessMode, access::target::local,
483+ IsPlaceholder> &&Arg) {
484+ #ifndef __SYCL_DEVICE_ONLY__
485+ setLocalAccessorArgHelper (ArgIndex, Arg);
486+ #endif
487+ }
488+
489+ // setArgHelper for local accessor argument (up to date accessor interface)
490+ template <typename DataT, int Dims>
491+ void setArgHelper (int ArgIndex, local_accessor<DataT, Dims> &&Arg) {
492+ #ifndef __SYCL_DEVICE_ONLY__
493+ setLocalAccessorArgHelper (ArgIndex, Arg);
494+ #endif
495+ }
496+
484497 // setArgHelper for non local accessor argument.
485498 template <typename DataT, int Dims, access::mode AccessMode,
486499 access::target AccessTarget, access::placeholder IsPlaceholder>
0 commit comments