1 // RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s
2 // expected-no-diagnostics
3 
4 struct St{
5  int a;
6 };
7 
8 struct St1{
9  int a;
10  static int b;
11 // CHECK: static int b;
12 #pragma omp threadprivate(b)
13 // CHECK-NEXT: #pragma omp threadprivate(b)
14 } d;
15 
16 int a, b;
17 // CHECK: int a;
18 // CHECK: int b;
19 #pragma omp threadprivate(a)
20 // CHECK-NEXT: #pragma omp threadprivate(a)
21 #pragma omp threadprivate(d, b)
22 // CHECK-NEXT: #pragma omp threadprivate(d,b)
23 
24 template <class T> T foo() {
25   static T v;
26   #pragma omp threadprivate(v)
27   return v;
28 }
29 //CHECK: template <class T = int> int foo() {
30 //CHECK-NEXT: static int v;
31 //CHECK-NEXT: #pragma omp threadprivate(v)
32 //CHECK: template <class T> T foo() {
33 //CHECK-NEXT: static T v;
34 //CHECK-NEXT: #pragma omp threadprivate(v)
35 
36 int main () {
37   static int a;
38 // CHECK: static int a;
39 #pragma omp threadprivate(a)
40 // CHECK-NEXT: #pragma omp threadprivate(a)
41   a=2;
42   return (foo<int>());
43 }
44