[SYCL][NFC] Ensure SYCL kernel for unique-stable-name is unqualified.
authorErich Keane <erich.keane@intel.com>
Mon, 21 Jun 2021 19:50:02 +0000 (12:50 -0700)
committerErich Keane <erich.keane@intel.com>
Mon, 21 Jun 2021 19:51:23 +0000 (12:51 -0700)
Discovered in our downstream, this function that is used to get the type
of the kernel parameter type needs to be unqualified, otherwise when our
downstream uses this function in a slightly different way, the kernel
types no longer match.

clang/lib/Sema/SemaSYCL.cpp

index 3b48a53..7ae78b1 100644 (file)
@@ -54,14 +54,14 @@ bool Sema::checkSYCLDeviceFunction(SourceLocation Loc, FunctionDecl *Callee) {
 // this was passed by value, and in SYCL2020, it is passed by reference.
 static QualType GetSYCLKernelObjectType(const FunctionDecl *KernelCaller) {
   assert(KernelCaller->getNumParams() > 0 && "Insufficient kernel parameters");
+  // SYCL 1.2.1
   QualType KernelParamTy = KernelCaller->getParamDecl(0)->getType();
 
   // SYCL 2020 kernels are passed by reference.
   if (KernelParamTy->isReferenceType())
-    return KernelParamTy->getPointeeType();
+    KernelParamTy = KernelParamTy->getPointeeType();
 
-  // SYCL 1.2.1
-  return KernelParamTy;
+  return KernelParamTy.getUnqualifiedType();
 }
 
 void Sema::AddSYCLKernelLambda(const FunctionDecl *FD) {