108 lines · cpp
1// RUN: %clang_cc1 -verify=expected,omp51 -fopenmp -ferror-limit 100 -o - %s -Wuninitialized2 3// RUN: %clang_cc1 -verify=expected,omp51 -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized4 5// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp -fopenmp-version=50 -ferror-limit 100 -o - %s -Wuninitialized6 7// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 -o - %s -Wuninitialized8 9void foo();10 11template <class T, typename S, int N>12T tmain(T argc, S **argv) {13 T i;14#pragma omp target15#pragma omp teams16#pragma omp distribute parallel for proc_bind // expected-error {{expected '(' after 'proc_bind'}}17 for (i = 0; i < argc; ++i)18 foo();19#pragma omp target20#pragma omp teams21#pragma omp distribute parallel for proc_bind( // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}} expected-error {{expected ')'}} expected-note {{to match this '('}}22 for (i = 0; i < argc; ++i)23 foo();24#pragma omp target25#pragma omp teams26#pragma omp distribute parallel for proc_bind() // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}27 for (i = 0; i < argc; ++i)28 foo();29#pragma omp target30#pragma omp teams31#pragma omp distribute parallel for proc_bind(master // expected-error {{expected ')'}} expected-note {{to match this '('}}32 for (i = 0; i < argc; ++i)33 foo();34#pragma omp target35#pragma omp teams36#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}}37 for (i = 0; i < argc; ++i)38 foo();39#pragma omp target40#pragma omp teams41#pragma omp distribute parallel for proc_bind(x) // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}42 for (i = 0; i < argc; ++i)43 foo();44 45#pragma omp target46#pragma omp teams47#pragma omp distribute parallel for proc_bind(master)48 for (i = 0; i < argc; ++i)49 foo();50 51#pragma omp parallel proc_bind(close)52#pragma omp target53#pragma omp teams54#pragma omp distribute parallel for proc_bind(spread)55 for (i = 0; i < argc; ++i)56 foo();57 58 return T();59}60 61int main(int argc, char **argv) {62 int i;63#pragma omp target64#pragma omp teams65#pragma omp distribute parallel for proc_bind // expected-error {{expected '(' after 'proc_bind'}}66 for (i = 0; i < argc; ++i)67 foo();68#pragma omp target69#pragma omp teams70#pragma omp distribute parallel for proc_bind( // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}} expected-error {{expected ')'}} expected-note {{to match this '('}}71 for (i = 0; i < argc; ++i)72 foo();73#pragma omp target74#pragma omp teams75#pragma omp distribute parallel for proc_bind() // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}76 for (i = 0; i < argc; ++i)77 foo();78#pragma omp target79#pragma omp teams80#pragma omp distribute parallel for proc_bind(master // expected-error {{expected ')'}} expected-note {{to match this '('}}81 for (i = 0; i < argc; ++i)82 foo();83#pragma omp target84#pragma omp teams85#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}}86 for (i = 0; i < argc; ++i)87 foo();88#pragma omp target89#pragma omp teams90#pragma omp distribute parallel for proc_bind(x) // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}91 for (i = 0; i < argc; ++i)92 foo();93 94#pragma omp target95#pragma omp teams96#pragma omp distribute parallel for proc_bind(master)97 for (i = 0; i < argc; ++i)98 foo();99 100#pragma omp parallel proc_bind(close)101#pragma omp target102#pragma omp teams103#pragma omp distribute parallel for proc_bind(spread)104 for (i = 0; i < argc; ++i)105 foo();106 return tmain<int, char, 3>(argc, argv);107}108