11d97d2a3SAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
24f800746SCharles Li // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++98 %s
34f800746SCharles Li // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 -std=c++11 %s
44f800746SCharles Li 
5a8a9153aSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s
6a8a9153aSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 -std=c++98 %s
7a8a9153aSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 -std=c++11 %s
8a8a9153aSAlexey Bataev // SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
9a8a9153aSAlexey Bataev 
10*96dae81dSAlexey Bataev #define p _Pragma("omp parallel")
11*96dae81dSAlexey Bataev 
nested(int a)121d97d2a3SAlexey Bataev int nested(int a) {
13*96dae81dSAlexey Bataev #pragma omp parallel p // expected-error {{unexpected OpenMP directive}}
14*96dae81dSAlexey Bataev   ++a;
151d97d2a3SAlexey Bataev #pragma omp parallel
161d97d2a3SAlexey Bataev   ++a;
171d97d2a3SAlexey Bataev 
184f800746SCharles Li   auto F = [&]() {
194f800746SCharles Li #if __cplusplus <= 199711L
204f800746SCharles Li   // expected-warning@-2 {{'auto' type specifier is a C++11 extension}}
214f800746SCharles Li   // expected-error@-3 {{expected expression}}
224f800746SCharles Li #endif
234f800746SCharles Li 
241d97d2a3SAlexey Bataev #pragma omp parallel
251d97d2a3SAlexey Bataev     {
261d97d2a3SAlexey Bataev #pragma omp target
271d97d2a3SAlexey Bataev       ++a;
281d97d2a3SAlexey Bataev     }
291d97d2a3SAlexey Bataev   };
304f800746SCharles Li   F();
314f800746SCharles Li   return a;
324f800746SCharles Li }
33