Author: Youngsuk Kim Date: 2024-12-17T08:38:31-05:00 New Revision: b4c1ded7d54858972c27250f4b6b882e74da1444
URL: https://github.com/llvm/llvm-project/commit/b4c1ded7d54858972c27250f4b6b882e74da1444 DIFF: https://github.com/llvm/llvm-project/commit/b4c1ded7d54858972c27250f4b6b882e74da1444.diff LOG: [clang] Recover necessary AddrSpaceCast (#119246) A necessary AddrSpaceCast was wrongfully deleted in 5c91b2886f6bf400b60ca7839069839ac3980f8f . Recover the AddrSpaceCast. This fixes #86791 . Added: clang/test/OpenMP/amdgpu_threadprivate.cpp Modified: clang/lib/CodeGen/ItaniumCXXABI.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index 8cbd09d02c7556..cf9e338236e556 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -3302,6 +3302,7 @@ void ItaniumCXXABI::EmitThreadLocalInitFuncs( CharUnits Align = CGM.getContext().getDeclAlign(VD); Val = Builder.CreateAlignedLoad(Var->getValueType(), Val, Align); } + Val = Builder.CreateAddrSpaceCast(Val, Wrapper->getReturnType()); Builder.CreateRet(Val); } diff --git a/clang/test/OpenMP/amdgpu_threadprivate.cpp b/clang/test/OpenMP/amdgpu_threadprivate.cpp new file mode 100644 index 00000000000000..f7061f42bbe7cb --- /dev/null +++ b/clang/test/OpenMP/amdgpu_threadprivate.cpp @@ -0,0 +1,16 @@ +// 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 + +// Don't crash with assertions build. + +// CHECK: @MyGlobVar = external thread_local addrspace(1) global i32, align 4 +// CHECK: define weak_odr hidden noundef ptr @_ZTW9MyGlobVar() #0 comdat { +// CHECK-NEXT: %1 = call align 4 ptr addrspace(1) @llvm.threadlocal.address.p1(ptr addrspace(1) align 4 @MyGlobVar) +// CHECK-NEXT: %2 = addrspacecast ptr addrspace(1) %1 to ptr +// CHECK-NEXT: ret ptr %2 +// CHECK-NEXT: } +int MyGlobVar; +#pragma omp threadprivate(MyGlobVar) +int main() { + MyGlobVar = 1; +} + _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits