llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: Matt Arsenault (arsenm) <details> <summary>Changes</summary> Move the IsCuda check out from the IsCuda || isHIP block. Keep this from splitting the aux-triple handling for future convenience. --- Full diff: https://github.com/llvm/llvm-project/pull/189462.diff 1 Files Affected: - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+20-19) ``````````diff diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 31240ef81d4ff..d69898cadaaa9 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5025,34 +5025,23 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } if (IsCuda || IsHIP) { + CmdArgs.push_back("-aux-triple"); + // We have to pass the triple of the host if compiling for a CUDA/HIP device // and vice-versa. - StringRef TripleStr; - if (JA.isDeviceOffloading(Action::OFK_Cuda) || - JA.isDeviceOffloading(Action::OFK_HIP)) - TripleStr = + if (IsCudaDevice || IsHIPDevice) { + StringRef AuxTripleStr = C.getSingleOffloadToolChain<Action::OFK_Host>()->getTriple().str(); - else { + CmdArgs.push_back(Args.MakeArgStringRef(AuxTripleStr)); + } else { // Host-side compilation. - TripleStr = + StringRef AuxTripleStr = (IsCuda ? C.getOffloadToolChains(Action::OFK_Cuda).first->second : C.getOffloadToolChains(Action::OFK_HIP).first->second) ->getTriple() .str(); - if (IsCuda) { - // We need to figure out which CUDA version we're compiling for, as that - // determines how we load and launch GPU kernels. - auto *CTC = static_cast<const toolchains::CudaToolChain *>( - C.getSingleOffloadToolChain<Action::OFK_Cuda>()); - assert(CTC && "Expected valid CUDA Toolchain."); - if (CTC && CTC->CudaInstallation.version() != CudaVersion::UNKNOWN) - CmdArgs.push_back(Args.MakeArgString( - Twine("-target-sdk-version=") + - CudaVersionToString(CTC->CudaInstallation.version()))); - } + CmdArgs.push_back(Args.MakeArgStringRef(AuxTripleStr)); } - CmdArgs.push_back("-aux-triple"); - CmdArgs.push_back(Args.MakeArgString(TripleStr)); if (JA.isDeviceOffloading(Action::OFK_HIP) && (getToolChain().getTriple().isAMDGPU() || @@ -5070,6 +5059,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } } + if (IsCuda && !IsCudaDevice) { + // We need to figure out which CUDA version we're compiling for, as that + // determines how we load and launch GPU kernels. + auto *CTC = static_cast<const toolchains::CudaToolChain *>( + C.getSingleOffloadToolChain<Action::OFK_Cuda>()); + assert(CTC && "Expected valid CUDA Toolchain."); + if (CTC && CTC->CudaInstallation.version() != CudaVersion::UNKNOWN) + CmdArgs.push_back(Args.MakeArgString( + Twine("-target-sdk-version=") + + CudaVersionToString(CTC->CudaInstallation.version()))); + } + // Optimization level for CodeGen. if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) { if (A->getOption().matches(options::OPT_O4)) { `````````` </details> https://github.com/llvm/llvm-project/pull/189462 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
