ianayl wrote:

**Changes to diagnostic from this PR:**

Changes to references:
```
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:29:12: error: 'int &' 
type cannot be used in a SYCL kernel parameter because it is a reference type
   29 |           &p, q,
      |            ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:25:3: note: in 
instantiation of function template specialization 
'badref1::kernel_single_task<KN<1>, (lambda at 
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:26:7)>' requested here
   25 |   kernel_single_task<class KN<1>>(
      |   ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:26:7: note: within 
capture 'p' of lambda expression here
   26 |       [ // expected-note{{within capture 'p' of lambda expression here}}
      |       ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:18:25: note: within 
parameter 't' of type '(lambda at 
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:26:7)' declared here
   18 | void kernel_single_task(T t) {} // expected-note-re 2{{within parameter 
't' of type '(lambda at {{.*}})' declared here}}
      |                         ^
```
New atomic diagnostics:
```
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:204:15: error: 
'_Atomic(int)' type cannot be used in a SYCL kernel parameter because it is an 
atomic type
  204 |   _Atomic int b;
      |               ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:233:3: note: in 
instantiation of function template specialization 
'atomic1::kernel_single_task<KN<17>, (lambda at 
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:233:36)>' requested here
  233 |   kernel_single_task<class KN<17>>([=]{ (void)s; });
      |   ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:202:8: note: within 
field of type 'Sa' declared here
  202 | struct Sa {
      |        ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:233:36: note: within 
capture 's' of lambda expression here
  233 |   kernel_single_task<class KN<17>>([=]{ (void)s; });
      |                                    ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:198:25: note: within 
parameter 't' of type '(lambda at 
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:233:36)' declared here
  198 | void kernel_single_task(T t) {}
      |       
```
New diagnostics for classes with flexible array members:
```
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:261:7: error: 'FAM' type 
cannot be used in a SYCL kernel parameter because it contains a flexible array 
member
  261 |   FAM fam;
      |       ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:270:3: note: in 
instantiation of function template specialization 
'fam1::kernel_single_task<KN<21>, fam1::Kernel>' requested here
  270 |   kernel_single_task<class KN<21>>(Kernel{});
      |   ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:256:7: note: flexible 
array member 'b' of 'FAM' defined here
  256 |   int b[]; // expected-note {{flexible array member 'b' of 'FAM' 
defined here}}
      |       ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:253:8: note: within 
field of type 'FAM' declared here
  253 | struct FAM {
      |        ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:259:7: note: within 
field of type 'Kernel' declared here
  259 | class Kernel {
      |       ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:250:25: note: within 
parameter 't' of type 'fam1::Kernel' declared here
  250 | void kernel_single_task(T t) {}
      |    
```
New warning for pointers upon `-Wnonportable-sycl`:
```
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:306:47: warning: 
pointers used in parameters to a SYCL kernel require a device that supports 
Unified Shared Memory (USM) [-Wnonportable-sycl]
  306 |   kernel_single_task<class KN<25>>([=]{ (void)ptr; });
      |                                               ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:306:3: note: in 
instantiation of function template specialization 
'nonportable1::kernel_single_task<KN<25>, (lambda at 
clang/test/SemaSYCL/sycl-kernel-par
am-restrictions.cpp:306:36)>' requested here
  306 |   kernel_single_task<class KN<25>>([=]{ (void)ptr; });
      |   ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:306:36: note: within 
capture 'ptr' of lambda expression here
  306 |   kernel_single_task<class KN<25>>([=]{ (void)ptr; });
      |                                    ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:281:25: note: within 
parameter 't' of type '(lambda at 
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:306:36)' declared here
  281 | void kernel_single_task(T t) {}
      |  
```
New diagnostics for virtual base classes:
```
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:369:47: error: 'Derived' 
type cannot be used in a SYCL kernel parameter because it inherits a virtual 
base class
  369 |   kernel_single_task<class KN<29>>([=]{ (void)d; });
      |                                               ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:369:3: note: in 
instantiation of function template specialization 
'vbase1::kernel_single_task<KN<29>, (lambda at 
clang/test/SemaSYCL/sycl-kernel-param-res
trictions.cpp:369:36)>' requested here
  369 |   kernel_single_task<class KN<29>>([=]{ (void)d; });
      |   ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:346:25: note: 'Derived' 
inherits virtual base class 'Base' specified here
  346 | class Derived : virtual Base { // expected-note {{'Derived' inherits 
virtual base class 'Base' specified here}}
      |                         ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:369:36: note: within 
capture 'd' of lambda expression here
  369 |   kernel_single_task<class KN<29>>([=]{ (void)d; });
      |                                    ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:334:25: note: within 
parameter 't' of type '(lambda at 
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:369:36)' declared here
  334 | void kernel_single_task(T t) {}
      |                         ^
```
```
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:374:47: error: 'Diamond' 
type cannot be used in a SYCL kernel parameter because it inherits a virtual 
base class
  374 |   kernel_single_task<class KN<30>>([=]{ (void)ab; });
      |                                               ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:374:3: note: in 
instantiation of function template specialization 
'vbase1::kernel_single_task<KN<30>, (lambda at 
clang/test/SemaSYCL/sycl-kernel-param-res
trictions.cpp:374:36)>' requested here
  374 |   kernel_single_task<class KN<30>>([=]{ (void)ab; });
      |   ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:351:26: note: 'Diamond' 
inherits virtual base class 'Base' specified here
  351 | class A : public virtual Base { // expected-note {{'Diamond' inherits 
virtual base class 'Base' specified here}}
      |                          ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:374:36: note: within 
capture 'ab' of lambda expression here
  374 |   kernel_single_task<class KN<30>>([=]{ (void)ab; });
      |                                    ^
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:334:25: note: within 
parameter 't' of type '(lambda at 
clang/test/SemaSYCL/sycl-kernel-param-restrictions.cpp:374:36)' declared here
  334 | void kernel_single_task(T t) {}
      |  
```

https://github.com/llvm/llvm-project/pull/208571
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to