https://github.com/MrSidims created 
https://github.com/llvm/llvm-project/pull/184821

SPIR-V doesn't have a concept of visibility.

>From 1c57b0b45564cad68680e53e6106f846ae6d8b18 Mon Sep 17 00:00:00 2001
From: Dmitry Sidorov <[email protected]>
Date: Thu, 5 Mar 2026 10:19:41 -0600
Subject: [PATCH] [HIP] Don't add -fvisibility=hidden for SPIR-V compilation
 flow

SPIR-V doesn't have a concept of visibility.
---
 clang/lib/Driver/ToolChains/HIPAMD.cpp     |  4 +++-
 clang/test/Driver/hip-spirv-backend-opt.c  |  5 ++++-
 clang/test/Driver/hip-toolchain-no-rdc.hip | 11 +++++++++--
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp 
b/clang/lib/Driver/ToolChains/HIPAMD.cpp
index 5b1bc6d8b6fd7..e7a5d1b7bb80e 100644
--- a/clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -261,8 +261,10 @@ void HIPAMDToolChain::addClangTargetOptions(
 
   // Default to "hidden" visibility, as object level linking will not be
   // supported for the foreseeable future.
+  // Make an exception for SPIR-V as it doesn't have hidden visibility anyway.
   if (!DriverArgs.hasArg(options::OPT_fvisibility_EQ,
-                         options::OPT_fvisibility_ms_compat)) {
+                         options::OPT_fvisibility_ms_compat) &&
+      !getEffectiveTriple().isSPIRV()) {
     CC1Args.append({"-fvisibility=hidden"});
     CC1Args.push_back("-fapply-global-visibility-to-externs");
   }
diff --git a/clang/test/Driver/hip-spirv-backend-opt.c 
b/clang/test/Driver/hip-spirv-backend-opt.c
index 10d9a0b01caf3..05daa10b96df6 100644
--- a/clang/test/Driver/hip-spirv-backend-opt.c
+++ b/clang/test/Driver/hip-spirv-backend-opt.c
@@ -52,7 +52,10 @@
 // RUN: 2>&1 | FileCheck %s 
--check-prefixes=CHECK-SPIRV-TRANSLATOR,CHECK-SPIRV-BACKEND-BC,CHECK-SPIRV-BACKEND-BINARY-EQ-TRIPLE
 
 // CHECK-SPIRV-TRANSLATOR-NOT: "{{.*llvm-spirv.*}}"
-// CHECK-SPIRV-BACKEND-TEXTUAL: "{{.*clang(\.exe)?}}" "-cc1" "-triple" 
"spirv64-amd-amdhsa" {{.*}} "-S"
+// CHECK-SPIRV-BACKEND-TEXTUAL: "{{.*clang(\.exe)?}}" "-cc1" "-triple" 
"spirv64-amd-amdhsa"
+// CHECK-SPIRV-BACKEND-TEXTUAL-NOT: -fvisibility=hidden
+// CHECK-SPIRV-BACKEND-TEXTUAL-NOT: -fapply-global-visibility-to-externs
+// CHECK-SPIRV-BACKEND-TEXTUAL: "-S"
 // CHECK-SPIRV-BACKEND-BINARY: "{{.*clang(\.exe)?}}" "-cc1" "-triple" 
"spirv64-amd-amdhsa" {{.*}} "-emit-obj"
 // CHECK-SPIRV-BACKEND-BC: "{{.*clang(\.exe)?}}" "-cc1" "-triple" 
"spirv64-amd-amdhsa" {{.*}} "-emit-llvm-bc"
 // CHECK-SPIRV-BACKEND-LL: "{{.*clang(\.exe)?}}" "-cc1" "-triple" 
"spirv64-amd-amdhsa" {{.*}} "-emit-llvm"
diff --git a/clang/test/Driver/hip-toolchain-no-rdc.hip 
b/clang/test/Driver/hip-toolchain-no-rdc.hip
index 024129e4435ff..e40da16e28a64 100644
--- a/clang/test/Driver/hip-toolchain-no-rdc.hip
+++ b/clang/test/Driver/hip-toolchain-no-rdc.hip
@@ -210,9 +210,13 @@
 
 //
 // Check mixed AMDGCNSPIRV and concrete GPU arch.
+// Check that visibility is not hidden when compiling to SPIR-V.
 //
 
-// AMDGCNSPIRV: "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}}"-emit-llvm-bc" 
{{.*}}"-fembed-bitcode=marker" "-disable-llvm-passes" {{.*}} "-o" 
"[[AMDGCNSPV_BC:.*bc]]"
+// AMDGCNSPIRV: "-cc1" "-triple" "spirv64-amd-amdhsa"
+// AMDGCNSPIRV-NOT: -fvisibility=hidden
+// AMDGCNSPIRV-NOT: -fapply-global-visibility-to-externs
+// AMDGCNSPIRV: "-emit-llvm-bc" {{.*}}"-fembed-bitcode=marker" 
"-disable-llvm-passes" {{.*}} "-o" "[[AMDGCNSPV_BC:.*bc]]"
 // AMDGCNSPIRV: {{".*llvm-link.*"}} "-o" "[[AMDGCNSPV_TMP:.*bc]]" 
"[[AMDGCNSPV_BC]]"
 // AMDGCNSPIRV: {{".*llvm-spirv.*"}} "--spirv-max-version=1.6" 
"--spirv-ext=+all,-SPV_KHR_untyped_pointers" {{.*}} "[[AMDGCNSPV_TMP]]" 
{{.*}}"-o" "[[AMDGCNSPV_CO:.*out]]"
 // AMDGCNSPIRV: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}}"-emit-obj" 
{{.*}}"-target-cpu" "gfx900"{{.*}} "-o" "[[GFX900_OBJ:.*o]]"
@@ -220,7 +224,10 @@
 // AMDGCNSPIRV: {{".*clang-offload-bundler.*"}} "-type=o"
 // AMDGCNSPIRV-SAME: 
"-targets={{.*}}hipv4-spirv64-amd-amdhsa--amdgcnspirv,hipv4-amdgcn-amd-amdhsa--gfx900"
 // AMDGCNSPIRV-SAME: "-input=[[AMDGCNSPV_CO]]" "-input=[[GFX900_CO]]"
-// AMDGCNSPIRV-NEW: "-cc1" "-triple" "spirv64-amd-amdhsa" 
{{.*}}"-emit-llvm-bc" {{.*}} "-o" "[[AMDGCNSPV_BC:.*bc]]"
+// AMDGCNSPIRV-NEW: "-cc1" "-triple" "spirv64-amd-amdhsa"
+// AMDGCNSPIRV-NEW-NOT: -fvisibility=hidden
+// AMDGCNSPIRV-NEW-NOT: -fapply-global-visibility-to-externs
+// AMDGCNSPIRV-NEW: "-emit-llvm-bc" {{.*}} "-o" "[[AMDGCNSPV_BC:.*bc]]"
 
 // Check verbose printing with the new driver.
 // RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc -nogpulib -nogpuinc 
\

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to