1// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++ -verify -fsyntax-only 2// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++ -verify -fsyntax-only -fexceptions -fcxx-exceptions 3 4// This test checks that various C++ and OpenCL C keywords are not available 5// in OpenCL. 6 7// Test that exceptions are disabled despite passing -fcxx-exceptions. 8kernel 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. 20struct 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. 43class A{ 44 private: 45 private int i; //expected-error{{field may not be qualified with an address space}} 46}; 47 48private ::A i; //expected-error{{program scope variable must reside in global or constant address space}} 49 50void foo(private int i); 51 52private int bar(); //expected-error{{return value cannot be qualified with address space}} 53