1*a914888bSAlexey Bataev // RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp -ferror-limit 100 -o - %s -Wuninitialized
2e955b3d3SArpith Chacko Jacob 
3*a914888bSAlexey Bataev // RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized
4a8a9153aSAlexey Bataev 
foo()5e955b3d3SArpith Chacko Jacob void foo() {
6e955b3d3SArpith Chacko Jacob }
7e955b3d3SArpith Chacko Jacob 
foobool(int argc)8e955b3d3SArpith Chacko Jacob bool foobool(int argc) {
9e955b3d3SArpith Chacko Jacob   return argc;
10e955b3d3SArpith Chacko Jacob }
11e955b3d3SArpith Chacko Jacob 
12e955b3d3SArpith Chacko Jacob struct S1; // expected-note {{declared here}}
13e955b3d3SArpith Chacko Jacob 
main(int argc,char ** argv)14e955b3d3SArpith Chacko Jacob int main(int argc, char **argv) {
15*a914888bSAlexey Bataev   int k;
16e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device // expected-error {{expected '(' after 'device'}}
173d58f269SArpith Chacko Jacob   foo();
18e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
193d58f269SArpith Chacko Jacob   foo();
20e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device () // expected-error {{expected expression}}
213d58f269SArpith Chacko Jacob   foo();
22e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
233d58f269SArpith Chacko Jacob   foo();
24e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (argc)) // expected-warning {{extra tokens at the end of '#pragma omp target parallel' are ignored}}
253d58f269SArpith Chacko Jacob   foo();
26e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (argc > 0 ? argv[1] : argv[2]) // expected-error {{expression must have integral or unscoped enumeration type, not 'char *'}}
273d58f269SArpith Chacko Jacob   foo();
28e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (argc + argc)
293d58f269SArpith Chacko Jacob   foo();
30*a914888bSAlexey Bataev   #pragma omp target parallel device (k), device (argc+1) // expected-error {{directive '#pragma omp target parallel' cannot contain more than one 'device' clause}}
313d58f269SArpith Chacko Jacob   foo();
32e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (S1) // expected-error {{'S1' does not refer to a value}}
333d58f269SArpith Chacko Jacob   foo();
34e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (-2) // expected-error {{argument to 'device' clause must be a non-negative integer value}}
353d58f269SArpith Chacko Jacob   foo();
36e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (-10u)
373d58f269SArpith Chacko Jacob   foo();
38e955b3d3SArpith Chacko Jacob   #pragma omp target parallel device (3.14) // expected-error {{expression must have integral or unscoped enumeration type, not 'double'}}
39e955b3d3SArpith Chacko Jacob   foo();
40e955b3d3SArpith Chacko Jacob 
41e955b3d3SArpith Chacko Jacob   return 0;
42e955b3d3SArpith Chacko Jacob }
43