1 // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -o - %s 2 3 void foo(); 4 5 template <class T, int N> 6 T tmain(T argc) { 7 int i; 8 #pragma omp target 9 #pragma omp teams 10 #pragma omp distribute parallel for default // expected-error {{expected '(' after 'default'}} 11 for (i = 0; i < argc; ++i) 12 foo(); 13 #pragma omp target 14 #pragma omp teams 15 #pragma omp distribute parallel for default( // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} expected-error {{expected ')'}} expected-note {{to match this '('}} 16 for (i = 0; i < argc; ++i) 17 foo(); 18 #pragma omp target 19 #pragma omp teams 20 #pragma omp distribute parallel for default() // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} 21 for (i = 0; i < argc; ++i) 22 foo(); 23 #pragma omp target 24 #pragma omp teams 25 #pragma omp distribute parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} 26 for (i = 0; i < argc; ++i) // expected-error 2 {{variable 'argc' must have explicitly specified data sharing attributes}} 27 foo(); 28 #pragma omp target 29 #pragma omp teams 30 #pragma omp distribute parallel for default(shared), default(shared) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'default' clause}} 31 for (i = 0; i < argc; ++i) 32 foo(); 33 #pragma omp target 34 #pragma omp teams 35 #pragma omp distribute parallel for default(x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} 36 for (i = 0; i < argc; ++i) 37 foo(); 38 #pragma omp target 39 #pragma omp teams 40 #pragma omp distribute parallel for default(none) 41 for (i = 0; i < argc; ++i) // expected-error 2 {{variable 'argc' must have explicitly specified data sharing attributes}} 42 foo(); 43 44 #pragma omp parallel default(none) 45 #pragma omp target 46 #pragma omp teams 47 #pragma omp distribute parallel for default(shared) 48 for (i = 0; i < argc; ++i) 49 foo(); 50 51 return T(); 52 } 53 54 int main(int argc, char **argv) { 55 int i; 56 #pragma omp target 57 #pragma omp teams 58 #pragma omp distribute parallel for default // expected-error {{expected '(' after 'default'}} 59 for (i = 0; i < argc; ++i) 60 foo(); 61 #pragma omp target 62 #pragma omp teams 63 #pragma omp distribute parallel for default( // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} expected-error {{expected ')'}} expected-note {{to match this '('}} 64 for (i = 0; i < argc; ++i) 65 foo(); 66 #pragma omp target 67 #pragma omp teams 68 #pragma omp distribute parallel for default() // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} 69 for (i = 0; i < argc; ++i) 70 foo(); 71 #pragma omp target 72 #pragma omp teams 73 #pragma omp distribute parallel for default(none // expected-error {{expected ')'}} expected-note {{to match this '('}} 74 for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} 75 foo(); 76 #pragma omp target 77 #pragma omp teams 78 #pragma omp distribute parallel for default(shared), default(shared) // expected-error {{directive '#pragma omp distribute parallel for' cannot contain more than one 'default' clause}} 79 for (i = 0; i < argc; ++i) 80 foo(); 81 #pragma omp target 82 #pragma omp teams 83 #pragma omp distribute parallel for default(x) // expected-error {{expected 'none' or 'shared' in OpenMP clause 'default'}} 84 for (i = 0; i < argc; ++i) 85 foo(); 86 #pragma omp target 87 #pragma omp teams 88 #pragma omp distribute parallel for default(none) 89 for (i = 0; i < argc; ++i) // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}} 90 foo(); 91 92 #pragma omp parallel default(none) 93 #pragma omp target 94 #pragma omp teams 95 #pragma omp distribute parallel for default(shared) 96 for (i = 0; i < argc; ++i) 97 foo(); 98 99 return (tmain<int, 5>(argc) + tmain<char, 1>(argv[0][0])); // expected-note {{in instantiation of function template specialization 'tmain<int, 5>' requested here}} expected-note {{in instantiation of function template specialization 'tmain<char, 1>' requested here}} 100 } 101