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
