xref: /llvm-project/clang/test/SemaOpenACC/compute-construct-default-clause.cpp (revision 2b939e182db6251f1d54a990e080df5ac8f05c29)
10c7b92a4SErich Keane // RUN: %clang_cc1 %s -fopenacc -verify
20c7b92a4SErich Keane 
30c7b92a4SErich Keane template<typename T>
SingleOnly()40c7b92a4SErich Keane void SingleOnly() {
50c7b92a4SErich Keane   #pragma acc parallel default(none)
60c7b92a4SErich Keane   while(false);
70c7b92a4SErich Keane 
8*2b939e18Serichkeane   int i;
9*2b939e18Serichkeane 
100c7b92a4SErich Keane   // expected-error@+2{{OpenACC 'default' clause cannot appear more than once on a 'parallel' directive}}
110c7b92a4SErich Keane   // expected-note@+1{{previous clause is here}}
12*2b939e18Serichkeane   #pragma acc parallel default(present) async default(none)
130c7b92a4SErich Keane   while(false);
140c7b92a4SErich Keane 
150c7b92a4SErich Keane   // expected-error@+2{{OpenACC 'default' clause cannot appear more than once on a 'serial' directive}}
160c7b92a4SErich Keane   // expected-note@+1{{previous clause is here}}
17*2b939e18Serichkeane   #pragma acc serial async default(present) copy(i) default(none) self
180c7b92a4SErich Keane   while(false);
190c7b92a4SErich Keane 
200c7b92a4SErich Keane   // expected-error@+2{{OpenACC 'default' clause cannot appear more than once on a 'kernels' directive}}
210c7b92a4SErich Keane   // expected-note@+1{{previous clause is here}}
22*2b939e18Serichkeane   #pragma acc kernels async default(present) copy(i) default(none) self
230c7b92a4SErich Keane   while(false);
240c7b92a4SErich Keane 
250c7b92a4SErich Keane   // expected-error@+1{{expected '('}}
26*2b939e18Serichkeane   #pragma acc parallel async default(none) copy(i) default self
270c7b92a4SErich Keane   while(false);
280c7b92a4SErich Keane }
290c7b92a4SErich Keane 
Instantiate()300c7b92a4SErich Keane void Instantiate() {
310c7b92a4SErich Keane   SingleOnly<int>();
320c7b92a4SErich Keane }
33