https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/151239
Summary: We link these implicitly for OpenMP because it's the canonical implementation of those C language features. This was inhereted by HIP and ended up with these resolving functions. There are some useful functions in here, but this can be problematic as it could potentially override functions intended to be provided by the ROCm device libraries. Additionally the HIP runtime does not currently provide the handling for the RPC server required to run the host resources so those just segfault. >From fd7b77b8661582bc70dc09f617c4ea893e80dc68 Mon Sep 17 00:00:00 2001 From: Joseph Huber <hube...@outlook.com> Date: Tue, 29 Jul 2025 16:43:24 -0500 Subject: [PATCH] [Clang] Only C link device libraries by default for OpenMP Summary: We link these implicitly for OpenMP because it's the canonical implementation of those C language features. This was inhereted by HIP and ended up with these resolving functions. There are some useful functions in here, but this can be problematic as it could potentially override functions intended to be provided by the ROCm device libraries. Additionally the HIP runtime does not currently provide the handling for the RPC server required to run the host resources so those just segfault. --- clang/lib/Driver/ToolChains/Clang.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 9d882dbfd0c65..6e1d4aa8bc053 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -9232,8 +9232,9 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_nogpulibc)) { forAllAssociatedToolChains(C, JA, getToolChain(), [&](const ToolChain &TC) { // The device C library is only available for NVPTX and AMDGPU targets - // currently. - if (!TC.getTriple().isNVPTX() && !TC.getTriple().isAMDGPU()) + // and we only link it by default for OpenMP currently. + if (!TC.getTriple().isNVPTX() && !TC.getTriple().isAMDGPU() || + !JA.isHostOffloading(Action::OFK_OpenMP)) return; bool HasLibC = TC.getStdlibIncludePath().has_value(); if (HasLibC) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits