xref: /llvm-project/clang/test/SemaOpenACC/data-construct-device_type-clause.c (revision bfc2dbe02e00f0023c0a2d58b53cdbd1f4139f02)
1 // RUN: %clang_cc1 %s -fopenacc -verify
2 
3 void uses() {
4   int Var;
5 #pragma acc data default(none) device_type(foo) async
6   ;
7 #pragma acc data default(none) device_type(foo) wait
8   ;
9 #pragma acc data default(none) device_type(foo) dtype(false)
10   ;
11 #pragma acc data default(none) dtype(foo) device_type(false)
12   ;
13 
14   // expected-error@+2{{OpenACC clause 'if' may not follow a 'device_type' clause in a 'data' construct}}
15   // expected-note@+1{{previous clause is here}}
16 #pragma acc data default(none) device_type(foo) if(1)
17   ;
18   // expected-error@+2{{OpenACC clause 'copy' may not follow a 'device_type' clause in a 'data' construct}}
19   // expected-note@+1{{previous clause is here}}
20 #pragma acc data default(none) device_type(foo) copy(Var)
21   ;
22   // expected-error@+2{{OpenACC clause 'copyin' may not follow a 'device_type' clause in a 'data' construct}}
23   // expected-note@+1{{previous clause is here}}
24 #pragma acc data default(none) device_type(foo) copyin(Var)
25   ;
26   // expected-error@+2{{OpenACC clause 'copyout' may not follow a 'device_type' clause in a 'data' construct}}
27   // expected-note@+1{{previous clause is here}}
28 #pragma acc data default(none) device_type(foo) copyout(Var)
29   ;
30   // expected-error@+2{{OpenACC clause 'create' may not follow a 'device_type' clause in a 'data' construct}}
31   // expected-note@+1{{previous clause is here}}
32 #pragma acc data default(none) device_type(foo) create(Var)
33   ;
34   // expected-error@+2{{OpenACC clause 'no_create' may not follow a 'device_type' clause in a 'data' construct}}
35   // expected-note@+1{{previous clause is here}}
36 #pragma acc data default(none) device_type(foo) no_create(Var)
37   ;
38   // expected-error@+2{{OpenACC clause 'present' may not follow a 'device_type' clause in a 'data' construct}}
39   // expected-note@+1{{previous clause is here}}
40 #pragma acc data default(none) device_type(foo) present(Var)
41   ;
42   // expected-error@+2{{OpenACC clause 'deviceptr' may not follow a 'device_type' clause in a 'data' construct}}
43   // expected-note@+1{{previous clause is here}}
44 #pragma acc data default(none) device_type(foo) deviceptr(Var)
45   ;
46   // expected-error@+2{{OpenACC clause 'attach' may not follow a 'device_type' clause in a 'data' construct}}
47   // expected-note@+1{{previous clause is here}}
48 #pragma acc data default(none) device_type(foo) attach(Var)
49   ;
50   // expected-error@+3{{OpenACC 'data' construct must have at least one 'copy', 'copyin', 'copyout', 'create', 'no_create', 'present', 'deviceptr', 'attach' or 'default' clause}}
51   // expected-error@+2{{OpenACC clause 'default' may not follow a 'device_type' clause in a 'data' construct}}
52   // expected-note@+1{{previous clause is here}}
53 #pragma acc data device_type(foo) default(none)
54   ;
55 }
56