================
@@ -12251,6 +12264,9 @@ bool Sema::CheckFunctionDeclaration(Scope *S, 
FunctionDecl *NewFD,
   if (NewFD->hasAttr<SYCLKernelEntryPointAttr>())
     SYCL().CheckSYCLEntryPointFunctionDecl(NewFD);
 
+  if (NewFD->hasAttr<SYCLExternalAttr>())
+    SYCL().CheckSYCLExternalFunctionDecl(NewFD);
----------------
tahonermann wrote:

Linkage, or rather, external visibility, which is what we actually check, can 
depend on other attributes like `VisibilityAttr`. Checking here ensures that 
all attributes have been processed and therefore avoids visitation ordering 
issues.

The attribute is allowed on function templates and is automatically inherited 
by (implicit and explicit) instantiations (and explicit specializations which 
is incorrect according to the C++ standard). I don't think there is anything to 
do to handle instantiation.

We do have a testing gap to address yet though. We have good tests for 
diagnostics, but are missing a test to validate which symbols are actually 
emitted. We'll ensure that test exercises function templates.

https://github.com/llvm/llvm-project/pull/140282
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to