1 | // RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s |
2 | // RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s |
3 | // RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s |
4 | |
5 | // RUN: %clang_cc1 -verify -fopenmp-simd -ast-print %s | FileCheck %s |
6 | // RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s |
7 | // RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s |
8 | // expected-no-diagnostics |
9 | |
10 | #ifndef HEADER |
11 | #define HEADER |
12 | |
13 | void foo() {} |
14 | |
15 | // CHECK: template <typename T, int N> int tmain(T argc, char **argv) |
16 | // CHECK: static int a; |
17 | // CHECK-NEXT: #pragma omp critical{{$}} |
18 | // CHECK-NEXT: a = 2; |
19 | // CHECK-NEXT: ++a; |
20 | // CHECK-NEXT: #pragma omp critical (the_name) hint(N){{$}} |
21 | // CHECK-NEXT: foo(); |
22 | // CHECK-NEXT: return N; |
23 | // CHECK: template<> int tmain<int, 4>(int argc, char **argv) |
24 | template <typename T, int N> |
25 | int tmain (T argc, char **argv) { |
26 | T b = argc, c, d, e, f, g; |
27 | static int a; |
28 | // CHECK: static int a; |
29 | #pragma omp critical |
30 | a=2; |
31 | // CHECK-NEXT: #pragma omp critical |
32 | // CHECK-NEXT: a = 2; |
33 | // CHECK-NEXT: ++a; |
34 | ++a; |
35 | #pragma omp critical (the_name) hint(N) |
36 | foo(); |
37 | // CHECK-NEXT: #pragma omp critical (the_name) hint(4) |
38 | // CHECK-NEXT: foo(); |
39 | // CHECK-NEXT: return 4; |
40 | return N; |
41 | } |
42 | |
43 | int main (int argc, char **argv) { |
44 | int b = argc, c, d, e, f, g; |
45 | static int a; |
46 | // CHECK: static int a; |
47 | #pragma omp critical |
48 | a=2; |
49 | // CHECK-NEXT: #pragma omp critical |
50 | // CHECK-NEXT: a = 2; |
51 | // CHECK-NEXT: ++a; |
52 | ++a; |
53 | #pragma omp critical (the_name1) hint(23) |
54 | foo(); |
55 | // CHECK-NEXT: #pragma omp critical (the_name1) hint(23) |
56 | // CHECK-NEXT: foo(); |
57 | // CHECK-NEXT: return tmain<int, 4>(a, argv); |
58 | return tmain<int, 4>(a, argv); |
59 | } |
60 | |
61 | #endif |
62 | |