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