@@ -465,22 +465,35 @@ class __SYCL_EXPORT handler {
465
465
466
466
void setArgsHelper (int ) {}
467
467
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) {
476
470
detail::LocalAccessorImplPtr LocalAccImpl =
477
- detail::getSyclObjImpl (* LocalAccBase);
471
+ detail::getSyclObjImpl (LocalAccBase);
478
472
detail::LocalAccessorImplHost *Req = LocalAccImpl.get ();
479
473
MLocalAccStorage.push_back (std::move (LocalAccImpl));
480
474
MArgs.emplace_back (detail::kernel_param_kind_t ::kind_accessor, Req,
481
475
static_cast <int >(access::target::local), ArgIndex);
482
476
}
483
477
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
+
484
497
// setArgHelper for non local accessor argument.
485
498
template <typename DataT, int Dims, access::mode AccessMode,
486
499
access::target AccessTarget, access::placeholder IsPlaceholder>
0 commit comments