53 lines · plain
1// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++ -verify -fsyntax-only2// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++ -verify -fsyntax-only -fexceptions -fcxx-exceptions3 4// This test checks that various C++ and OpenCL C keywords are not available5// 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 type cannot be qualified with address space}}53