xref: /llvm-project/clang/test/OpenMP/amdgpu_threadprivate.cpp (revision b4c1ded7d54858972c27250f4b6b882e74da1444)
1*b4c1ded7SYoungsuk Kim // RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -target-cpu gfx906 -fopenmp -nogpulib -fopenmp-is-target-device -emit-llvm %s -o - | FileCheck %s
2*b4c1ded7SYoungsuk Kim 
3*b4c1ded7SYoungsuk Kim // Don't crash with assertions build.
4*b4c1ded7SYoungsuk Kim 
5*b4c1ded7SYoungsuk Kim // CHECK:       @MyGlobVar = external thread_local addrspace(1) global i32, align 4
6*b4c1ded7SYoungsuk Kim // CHECK:       define weak_odr hidden noundef ptr @_ZTW9MyGlobVar() #0 comdat {
7*b4c1ded7SYoungsuk Kim // CHECK-NEXT:    %1 = call align 4 ptr addrspace(1) @llvm.threadlocal.address.p1(ptr addrspace(1) align 4 @MyGlobVar)
8*b4c1ded7SYoungsuk Kim // CHECK-NEXT:    %2 = addrspacecast ptr addrspace(1) %1 to ptr
9*b4c1ded7SYoungsuk Kim // CHECK-NEXT:    ret ptr %2
10*b4c1ded7SYoungsuk Kim // CHECK-NEXT:  }
11*b4c1ded7SYoungsuk Kim int MyGlobVar;
12*b4c1ded7SYoungsuk Kim #pragma omp threadprivate(MyGlobVar)
13*b4c1ded7SYoungsuk Kim int main() {
14*b4c1ded7SYoungsuk Kim   MyGlobVar = 1;
15*b4c1ded7SYoungsuk Kim }
16*b4c1ded7SYoungsuk Kim 
17