Author: Joseph Huber Date: 2026-03-23T16:09:34-05:00 New Revision: fe03749f08f86e8cf94132bd9155a68637657a8c
URL: https://github.com/llvm/llvm-project/commit/fe03749f08f86e8cf94132bd9155a68637657a8c DIFF: https://github.com/llvm/llvm-project/commit/fe03749f08f86e8cf94132bd9155a68637657a8c.diff LOG: [Clang] Do not emit multi-gpu warning if they are all the same (#185490) Summary: This warning exists because if you do `-mcpu=native` in some contexts it may not be obvious which GPU you get. But if they are all the same then it really don't make a difference since we just pass the first one to `-mcpu` anyway. Relax this so it doesn't annoyingly warn on machines with more than one of the same GPU. --------- Co-authored-by: Jacob Lambert <[email protected]> Added: Modified: clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/Cuda.cpp Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index 8eaa3365bb301..03bd88f0d4f47 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -14,6 +14,7 @@ #include "clang/Driver/InputInfo.h" #include "clang/Driver/SanitizerArgs.h" #include "clang/Options/Options.h" +#include "llvm/ADT/SmallSet.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Option/ArgList.h" #include "llvm/Support/Error.h" @@ -736,11 +737,10 @@ AMDGPUToolChain::TranslateArgs(const DerivedArgList &Args, StringRef BoundArch, << llvm::toString(GPUsOrErr.takeError()) << "-mcpu"; } else { auto &GPUs = *GPUsOrErr; - if (GPUs.size() > 1) { + if (llvm::SmallSet<std::string, 1>(GPUs.begin(), GPUs.end()).size() > 1) getDriver().Diag(diag::warn_drv_multi_gpu_arch) << llvm::Triple::getArchTypeName(getArch()) << llvm::join(GPUs, ", ") << "-mcpu"; - } DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_mcpu_EQ), Args.MakeArgString(GPUs.front())); } diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index d280a5b60b6cf..dc94fca06db7d 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -15,6 +15,7 @@ #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" #include "clang/Options/Options.h" +#include "llvm/ADT/SmallSet.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Config/llvm-config.h" // for LLVM_HOST_TRIPLE #include "llvm/Option/ArgList.h" @@ -769,11 +770,12 @@ NVPTXToolChain::TranslateArgs(const llvm::opt::DerivedArgList &Args, getDriver().Diag(diag::err_drv_undetermined_gpu_arch) << getArchName() << llvm::toString(GPUsOrErr.takeError()) << "-march"; } else { - if (GPUsOrErr->size() > 1) + auto &GPUs = *GPUsOrErr; + if (llvm::SmallSet<std::string, 1>(GPUs.begin(), GPUs.end()).size() > 1) getDriver().Diag(diag::warn_drv_multi_gpu_arch) - << getArchName() << llvm::join(*GPUsOrErr, ", ") << "-march"; + << getArchName() << llvm::join(GPUs, ", ") << "-march"; DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_march_EQ), - Args.MakeArgString(GPUsOrErr->front())); + Args.MakeArgString(GPUs.front())); } } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
