10c7b92a4SErich Keane // RUN: %clang_cc1 %s -fopenacc -verify 20c7b92a4SErich Keane 30c7b92a4SErich Keane template<typename T> SingleOnly()40c7b92a4SErich Keanevoid 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 Keanevoid Instantiate() { 310c7b92a4SErich Keane SingleOnly<int>(); 320c7b92a4SErich Keane } 33