1 | // RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=c++ -verify -fsyntax-only |
2 | // RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=c++ -verify -fsyntax-only -fexceptions -fcxx-exceptions |
3 | |
4 | // This test checks that various C++ and OpenCL C keywords are not available |
5 | // in OpenCL C++, according to OpenCL C++ 1.0 Specification Section 2.9. |
6 | |
7 | // Test that exceptions are disabled despite passing -fcxx-exceptions. |
8 | kernel void test_exceptions() { |
9 | int x; |
10 | try { |
11 | // expected-error@-1 {{cannot use 'try' with exceptions disabled}} |
12 | throw 0; |
13 | // expected-error@-1 {{cannot use 'throw' with exceptions disabled}} |
14 | } catch (int i) { |
15 | x = 41; |
16 | } |
17 | } |
18 | |
19 | // Test that only __-prefixed address space qualifiers are accepted. |
20 | struct test_address_space_qualifiers { |
21 | global int *g; |
22 | __global int *uug; |
23 | int global; // expected-warning{{declaration does not declare anything}} |
24 | |
25 | local int *l; |
26 | __local int *uul; |
27 | int local; // expected-warning{{declaration does not declare anything}} |
28 | |
29 | private int *p; |
30 | __private int *uup; |
31 | int private; // expected-warning{{declaration does not declare anything}} |
32 | |
33 | constant int *c; |
34 | __constant int *uuc; |
35 | int constant; // expected-warning{{declaration does not declare anything}} |
36 | |
37 | generic int *ge; |
38 | __generic int *uuge; |
39 | int generic; // expected-warning{{declaration does not declare anything}} |
40 | }; |
41 | |
42 | // Test that 'private' can be parsed as an access qualifier and an address space too. |
43 | class A{ |
44 | private: |
45 | private int i; //expected-error{{field may not be qualified with an address space}} |
46 | }; |
47 | |
48 | private ::A i; //expected-error{{program scope variable must reside in global or constant address space}} |
49 | |
50 | void foo(private int i); |
51 | |
52 | private int bar(); //expected-error{{return value cannot be qualified with address space}} |
53 | |