Home | History | Annotate | Download | only in PCH
      1 // no PCH
      2 // RUN: %clang_cc1 -fopenmp -fnoopenmp-use-tls -emit-llvm -include %s -include %s %s -o - | FileCheck %s
      3 // with PCH
      4 // RUN: %clang_cc1 -fopenmp -fnoopenmp-use-tls -emit-llvm -chain-include %s -chain-include %s %s -o - | FileCheck %s
      5 // no PCH
      6 // RUN: %clang_cc1 -fopenmp -emit-llvm -include %s -include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-1
      7 // RUN: %clang_cc1 -fopenmp -emit-llvm -include %s -include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-2
      8 // with PCH
      9 // RUN: %clang_cc1 -fopenmp -emit-llvm -chain-include %s -chain-include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-1
     10 // RUN: %clang_cc1 -fopenmp -emit-llvm -chain-include %s -chain-include %s %s -o - | FileCheck %s -check-prefix=CHECK-TLS-2
     11 
     12 #if !defined(PASS1)
     13 #define PASS1
     14 
     15 extern "C" int* malloc (int size);
     16 int *a = malloc(20);
     17 
     18 #elif !defined(PASS2)
     19 #define PASS2
     20 
     21 #pragma omp threadprivate(a)
     22 
     23 #else
     24 
     25 // CHECK: call {{.*}} @__kmpc_threadprivate_register(
     26 // CHECK-TLS-1: @{{a|\"\\01\?a@@3PE?AHE?A\"}} = {{.*}}thread_local {{.*}}global {{.*}}i32*
     27 
     28 // CHECK-LABEL: foo
     29 // CHECK-TLS-LABEL: foo
     30 int foo() {
     31   return *a;
     32   // CHECK: call {{.*}} @__kmpc_global_thread_num(
     33   // CHECK: call {{.*}} @__kmpc_threadprivate_cached(
     34   // CHECK-TLS-1: call {{.*}} @{{_ZTW1a|\"\\01\?\?__Ea@@YAXXZ\"}}()
     35 }
     36 
     37 // CHECK-TLS-2: define {{.*}} @{{_ZTW1a|\"\\01\?\?__Ea@@YAXXZ\"}}()
     38 
     39 #endif
     40