diff options
| author | Anastasia Stulova <anastasia.stulova@arm.com> | 2017-02-16 11:13:30 +0000 |
|---|---|---|
| committer | Anastasia Stulova <anastasia.stulova@arm.com> | 2017-02-16 11:13:30 +0000 |
| commit | 9d98a316c5c3bc182e0c1301513c276c96b0563a (patch) | |
| tree | 58bfba56ead26095ac0dd0a69910f20c1c98f3d5 /clang/test/SemaOpenCL/invalid-block.cl | |
| parent | a93803b9fe8817607ce7be9c5ba8ce3b3611e8ee (diff) | |
| download | bcm5719-llvm-9d98a316c5c3bc182e0c1301513c276c96b0563a.tar.gz bcm5719-llvm-9d98a316c5c3bc182e0c1301513c276c96b0563a.zip | |
[OpenCL] Disallow blocks capture other blocks (v2.0, s6.12.5)
llvm-svn: 295307
Diffstat (limited to 'clang/test/SemaOpenCL/invalid-block.cl')
| -rw-r--r-- | clang/test/SemaOpenCL/invalid-block.cl | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/SemaOpenCL/invalid-block.cl b/clang/test/SemaOpenCL/invalid-block.cl index 598784c95a0..89bf03264e1 100644 --- a/clang/test/SemaOpenCL/invalid-block.cl +++ b/clang/test/SemaOpenCL/invalid-block.cl @@ -66,3 +66,18 @@ void f6(bl2_t *bl_ptr) { // expected-error{{pointer to type '__generic bl2_t' (a *bl; // expected-error {{invalid argument type 'bl2_t' (aka 'int (__generic ^const)(int)') to unary expression}} &bl; // expected-error {{invalid argument type 'bl2_t' (aka 'int (__generic ^const)(int)') to unary expression}} } +// A block can't reference another block +kernel void f7() { + bl2_t bl1 = ^(int i) { + return 1; + }; + void (^bl2)(void) = ^{ + int i = bl1(1); // expected-error {{cannot refer to a block inside block}} + }; + void (^bl3)(void) = ^{ + }; + void (^bl4)(void) = ^{ + bl3(); // expected-error {{cannot refer to a block inside block}} + }; + return; +} |

