xref: /llvm-project/clang/test/OpenMP/assume_nesting_tmpl.cpp (revision a42e515e3a9f3bb4e44389c097b89104d95b9b29)
1 // RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -ast-print %s | FileCheck %s
2 // expected-no-diagnostics
3 
4 extern void bar();
5 
6 template<int N>
7 void foo()
8 {
9   #pragma omp assume no_openmp_routines
10   // CHECK: omp assume no_openmp_routines
11   {
12     #pragma omp assume no_parallelism
13     // CHECK: omp assume no_parallelism
14     {}
15   }
16 
17   #pragma omp target
18   // CHECK: omp target
19   {
20     #pragma omp assume holds(1==N)
21     // CHECK: omp assume holds(1 == N)
22     {}
23   }
24 
25   #pragma omp assume no_parallelism
26   // CHECK: omp assume no_parallelism
27   {
28     #pragma omp target
29     // CHECK: omp target
30     {}
31   }
32 
33   #pragma omp assume absent(parallel)
34   // CHECK: omp assume absent(parallel)
35   {
36     #pragma omp assume contains(target, loop)
37     // CHECK: omp assume contains(target, loop)
38     {
39       #pragma omp assume holds(1==N)
40       // CHECK: omp assume holds(1 == N)
41       {
42         #pragma omp assume absent(teams)
43         // CHECK: omp assume absent(teams)
44         {
45           #pragma omp assume no_openmp_routines
46           // CHECK: omp assume no_openmp_routines
47           {
48             bar();
49           }
50         }
51       }
52     }
53   }
54 }
55 
56 int main() {
57   foo<5>();
58   return 0;
59 }
60