19772000aSAlexey Bataev // no PCH
2*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -fopenmp -fnoopenmp-use-tls -emit-llvm -include %s -include %s %s -o - | FileCheck %s
39772000aSAlexey Bataev // with PCH
4*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -fopenmp -fnoopenmp-use-tls -emit-llvm -chain-include %s -chain-include %s %s -o - | FileCheck %s
5f8b5012dSSamuel Antao // no PCH
6*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -fopenmp -emit-llvm -include %s -include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-1
7*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -fopenmp -emit-llvm -include %s -include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-2
8f8b5012dSSamuel Antao // with PCH
9*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -fopenmp -emit-llvm -chain-include %s -chain-include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-1
10*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -fopenmp -emit-llvm -chain-include %s -chain-include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-2
11bbfa514fSNAKAMURA Takumi 
129772000aSAlexey Bataev #if !defined(PASS1)
139772000aSAlexey Bataev #define PASS1
149772000aSAlexey Bataev 
159772000aSAlexey Bataev extern "C" int* malloc (int size);
169772000aSAlexey Bataev int *a = malloc(20);
179772000aSAlexey Bataev 
189772000aSAlexey Bataev #elif !defined(PASS2)
199772000aSAlexey Bataev #define PASS2
209772000aSAlexey Bataev 
219772000aSAlexey Bataev #pragma omp threadprivate(a)
229772000aSAlexey Bataev 
239772000aSAlexey Bataev #else
249772000aSAlexey Bataev 
259772000aSAlexey Bataev // CHECK: call {{.*}} @__kmpc_threadprivate_register(
26332a3e07SReid Kleckner // CHECK-TLS-1: @{{a|\"\?a@@3PE?AHE?A\"}} = {{.*}}thread_local {{.*}}global {{.*}}i32*
279772000aSAlexey Bataev 
289772000aSAlexey Bataev // CHECK-LABEL: foo
29f8b5012dSSamuel Antao // CHECK-TLS-LABEL: foo
foo()309772000aSAlexey Bataev int foo() {
319772000aSAlexey Bataev   return *a;
329772000aSAlexey Bataev   // CHECK: call {{.*}} @__kmpc_global_thread_num(
339772000aSAlexey Bataev   // CHECK: call {{.*}} @__kmpc_threadprivate_cached(
34332a3e07SReid Kleckner   // CHECK-TLS-1: call {{.*}} @{{_ZTW1a|\"\?\?__Ea@@YAXXZ\"}}()
359772000aSAlexey Bataev }
36f8b5012dSSamuel Antao 
37332a3e07SReid Kleckner // CHECK-TLS-2: define {{.*}} @{{_ZTW1a|\"\?\?__Ea@@YAXXZ\"}}()
38f8b5012dSSamuel Antao 
399772000aSAlexey Bataev #endif
40