diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 8cfd17e65376e..a0fcc39bfbb15 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1467,12 +1467,13 @@ class __SYCL_EXPORT handler { setNDRangeDescriptor(std::move(params)...); } - setDeviceKernelInfo(std::move(Kernel)); - if (lambdaAndKernelHaveEqualName()) { - StoreLambda(std::move(KernelFunc)); - } else { - extractArgsAndReqs(); + MKernel = detail::getSyclObjImpl(Kernel); + if (!lambdaAndKernelHaveEqualName()) { + throw sycl::exception( + make_error_code(errc::invalid), + "the kernel name must match the name of the lambda"); } + StoreLambda(std::move(KernelFunc)); processProperties(Props); #endif } @@ -1926,12 +1927,15 @@ class __SYCL_EXPORT handler { // No need to check if range is out of INT_MAX limits as it's compile-time // known constant setNDRangeDescriptor(range<1>{1}); - setDeviceKernelInfo(std::move(Kernel)); - if (lambdaAndKernelHaveEqualName()) { - StoreLambda(std::move(KernelFunc)); - } else { - extractArgsAndReqs(); + + MKernel = detail::getSyclObjImpl(Kernel); + if (!lambdaAndKernelHaveEqualName()) { + throw sycl::exception( + make_error_code(errc::invalid), + "the kernel name must match the name of the lambda"); } + StoreLambda(std::move(KernelFunc)); + #else detail::CheckDeviceCopyable(); #endif