================
@@ -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:

I debugged a bit. It looks like `getSpecializationKind()` is always returning 
`TSK_ImplicitInstantiation` at the point where we are checking it. I added a 
dump of the function declaration at the time of diagnosis and compared that to 
what is generated by `-Xclang -ast-dump`. Note the same addresses below, but 
the different specialization information.

Dumped decl:
```
FunctionDecl 0xdf89eb0 <.../sycl-external-attr.cpp:25:26, col:40> col:31 func6 
'void ()' implicit_instantiation
|-TemplateArgument type '(anonymous namespace)::S6'
| `-RecordType 0xdf67730 '(anonymous namespace)::S6'
|   `-CXXRecord 0xdf67698 'S6'
`-SYCLExternalAttr 0xdf89fa8 <col:3, col:10>
```
Output from `-Xclang -ast-dump`:
```
| `-FunctionDecl 0xdf89eb0 <col:26, col:40> col:31 func6 'void ()' 
explicit_instantiation_definition
|   |-TemplateArgument type '(anonymous namespace)::S6'
|   | `-RecordType 0xdf67730 '(anonymous namespace)::S6'
|   |   `-CXXRecord 0xdf67698 'S6'
|   |-CompoundStmt 0xdf67b10 <col:39, col:40>
|   `-SYCLExternalAttr 0xdf89fa8 <col:3, col:10>
```

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