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