diff options
| author | Alexey Sotkin <alexey.sotkin@intel.com> | 2018-07-31 19:47:19 +0000 |
|---|---|---|
| committer | Alexey Sotkin <alexey.sotkin@intel.com> | 2018-07-31 19:47:19 +0000 |
| commit | 3b238ed6626983beb238b95eada4172184fb2d29 (patch) | |
| tree | f82d483e949d5b3221f453867bd419b2e02f3086 /clang/test/SemaOpenCL | |
| parent | e1f306210000b805c9870097a75e99b217bdd631 (diff) | |
| download | bcm5719-llvm-3b238ed6626983beb238b95eada4172184fb2d29.tar.gz bcm5719-llvm-3b238ed6626983beb238b95eada4172184fb2d29.zip | |
[OpenCL] Check for invalid kernel arguments in array types
Summary:
OpenCL specification forbids use of several types as kernel arguments.
This patch improves existing diagnostic to look through arrays.
Patch by: Andrew Savonichev
Reviewers: Anastasia, yaxunl
Subscribers: yaxunl, Anastasia, cfe-commits
Differential Revision: https://reviews.llvm.org/D49723
llvm-svn: 338427
Diffstat (limited to 'clang/test/SemaOpenCL')
| -rw-r--r-- | clang/test/SemaOpenCL/invalid-kernel-parameters.cl | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/SemaOpenCL/invalid-kernel-parameters.cl b/clang/test/SemaOpenCL/invalid-kernel-parameters.cl index 2433c17fe02..ef0b56435d1 100644 --- a/clang/test/SemaOpenCL/invalid-kernel-parameters.cl +++ b/clang/test/SemaOpenCL/invalid-kernel-parameters.cl @@ -136,3 +136,16 @@ struct AlsoUser // expected-note{{within field of type 'AlsoUser' declared here} }; kernel void pointer_in_nested_struct_arg_2(struct Valid valid, struct NestedPointer arg, struct AlsoUser also) { } // expected-error 2 {{struct kernel parameters may not contain pointers}} + +struct ArrayOfPtr // expected-note{{within field of type 'ArrayOfPtr' declared here}} +{ + float *arr[3]; // expected-note{{field of illegal type 'float *[3]' declared here}} + // expected-note@-1{{field of illegal type 'float *[3]' declared here}} +}; +kernel void array_of_ptr(struct ArrayOfPtr arr) {} // expected-error{{struct kernel parameters may not contain pointers}} + +struct ArrayOfStruct // expected-note{{within field of type 'ArrayOfStruct' declared here}} +{ + struct ArrayOfPtr arr[3]; // expected-note{{within field of type 'struct ArrayOfPtr [3]' declared here}} +}; +kernel void array_of_struct(struct ArrayOfStruct arr) {} // expected-error{{struct kernel parameters may not contain pointers}} |

