1*a914888bSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -o - %s -Wuninitialized
2e4e893bbSAlexander Musman 
3*a914888bSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp-simd -o - %s -Wuninitialized
4a8a9153aSAlexey Bataev 
5e4e893bbSAlexander Musman void foo();
6e4e893bbSAlexander Musman 
main(int argc,char ** argv)7e4e893bbSAlexander Musman int main(int argc, char **argv) {
8e4e893bbSAlexander Musman   int i;
9e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind // expected-error {{expected '(' after 'proc_bind'}}
10e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
11e4e893bbSAlexander Musman     foo();
12e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind( // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
13e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
14e4e893bbSAlexander Musman     foo();
15e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind() // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}}
16e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
17e4e893bbSAlexander Musman     foo();
18e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind(master // expected-error {{expected ')'}} expected-note {{to match this '('}}
19e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
20e4e893bbSAlexander Musman     foo();
21e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind(close), proc_bind(spread) // expected-error {{directive '#pragma omp parallel for simd' cannot contain more than one 'proc_bind' clause}}
22e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
23e4e893bbSAlexander Musman     foo();
24e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind(x) // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}}
25e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
26e4e893bbSAlexander Musman     foo();
27e4e893bbSAlexander Musman 
28e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind(master)
29e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
30e4e893bbSAlexander Musman     foo();
31e4e893bbSAlexander Musman 
32e4e893bbSAlexander Musman #pragma omp parallel proc_bind(close)
33e4e893bbSAlexander Musman #pragma omp parallel for simd proc_bind(spread)
34e4e893bbSAlexander Musman   for (i = 0; i < argc; ++i)
35e4e893bbSAlexander Musman     foo();
36e4e893bbSAlexander Musman   return 0;
37e4e893bbSAlexander Musman }
38