1 // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
2 // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++98 %s
3 // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++11 %s
4 
5 // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s
6 // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 -std=c++98 %s
7 // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 -std=c++11 %s
8 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
9 
10 #define p _Pragma("omp parallel")
11 
12 int nested(int a) {
13 #pragma omp parallel p // expected-error {{unexpected OpenMP directive}}
14   ++a;
15 #pragma omp parallel
16   ++a;
17 
18   auto F = [&]() {
19 #if __cplusplus <= 199711L
20   // expected-warning@-2 {{'auto' type specifier is a C++11 extension}}
21   // expected-error@-3 {{expected expression}}
22   // expected-error@-4 {{expected ';' at end of declaration}}
23 #endif
24 
25 #pragma omp parallel
26     {
27 #pragma omp target
28       ++a;
29     }
30   };
31   F();
32 #if __cplusplus <= 199711L
33   // expected-error@-2 {{C++ requires a type specifier for all declarations}}
34 #endif
35   return a;
36 #if __cplusplus <= 199711L
37   // expected-error@-2 {{expected unqualified-id}}
38 #endif
39 }
40 #if __cplusplus <= 199711L
41 // expected-error@-2 {{extraneous closing brace ('}')}}
42 #endif
43