xref: /llvm-project/clang/test/OpenMP/reverse_messages.cpp (revision 80865c01e1b8d3a6bea308fda7bbc53047dcc2e7)
1 // RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -std=c++20 -fopenmp -fopenmp-version=60 -fsyntax-only -Wuninitialized -verify %s
2 
3 void func() {
4 
5   // expected-error@+2 {{statement after '#pragma omp reverse' must be a for loop}}
6   #pragma omp reverse
7     ;
8 
9   // expected-error@+2 {{statement after '#pragma omp reverse' must be a for loop}}
10   #pragma omp reverse
11   int b = 0;
12 
13   // expected-error@+2 {{statement after '#pragma omp reverse' must be a for loop}}
14   #pragma omp reverse
15   #pragma omp for
16   for (int i = 0; i < 7; ++i)
17     ;
18 
19   {
20     // expected-error@+2 {{expected statement}}
21     #pragma omp reverse
22   }
23 
24   // expected-error@+2 {{condition of OpenMP for loop must be a relational comparison ('<', '<=', '>', '>=', or '!=') of loop variable 'i'}}
25   #pragma omp reverse
26   for (int i = 0; i/3<7; ++i)
27     ;
28 
29   // expected-error@+1 {{unexpected OpenMP clause 'sizes' in directive '#pragma omp reverse'}}
30   #pragma omp reverse sizes(5)
31   for (int i = 0; i < 7; ++i)
32     ;
33 
34   // expected-warning@+1 {{extra tokens at the end of '#pragma omp reverse' are ignored}}
35   #pragma omp reverse foo
36   for (int i = 0; i < 7; ++i)
37     ;
38 
39 }
40 
41